3
3
4
4
#include " at_handler.h"
5
5
extern " C" {
6
- #include " esp32-hal-tinyusb.h"
6
+ #include " esp32-hal-tinyusb.h"
7
7
}
8
8
9
+ static const uint8_t version[4 ] = {
10
+ (FIRMWARE_MAJOR & 0xff ),
11
+ (FIRMWARE_MINOR & 0xff ),
12
+ (FIRMWARE_PATCH & 0xff ),
13
+ 0
14
+ };
15
+
9
16
void CAtHandler::add_cmds_esp_generic () {
10
17
11
18
/* ....................................................................... */
@@ -52,22 +59,42 @@ void CAtHandler::add_cmds_esp_generic() {
52
59
return chAT::CommandStatus::OK;
53
60
}
54
61
default :
55
- return chAT::CommandStatus::ERROR;
62
+ return chAT::CommandStatus::ERROR;
56
63
}
57
64
};
58
65
59
- /* ....................................................................... */
66
+ /* ....................................................................... */
60
67
command_table[_FWVERSION] = [this ](auto & srv, auto & parser) {
61
68
/* ....................................................................... */
62
69
switch (parser.cmd_mode ) {
63
70
case chAT::CommandMode::Read: {
64
71
srv.write_response_prompt ();
65
- srv.write_cstr (ESP_FW_VERSION);
72
+ srv.write_cstr (ESP_FW_VERSION);
66
73
srv.write_line_end ();
67
74
return chAT::CommandStatus::OK;
68
75
}
69
76
default :
70
- return chAT::CommandStatus::ERROR;
77
+ return chAT::CommandStatus::ERROR;
78
+ }
79
+ };
80
+
81
+ /* ....................................................................... */
82
+ command_table[_FWVERSION_U32] = [this ](auto & srv, auto & parser) {
83
+ /* ....................................................................... */
84
+ switch (parser.cmd_mode ) {
85
+ case chAT::CommandMode::Read: {
86
+ srv.write_response_prompt ();
87
+
88
+
89
+
90
+ log_e (" version 0x%X, 0x%X" , *((uint32_t *)version), &version);
91
+
92
+ srv.write_data (version, sizeof (version));
93
+ srv.write_line_end ();
94
+ return chAT::CommandStatus::OK;
95
+ }
96
+ default :
97
+ return chAT::CommandStatus::ERROR;
71
98
}
72
99
};
73
100
@@ -82,19 +109,19 @@ void CAtHandler::add_cmds_esp_generic() {
82
109
83
110
auto &type_str = parser.args [0 ];
84
111
if (type_str.empty ()) {
85
- return chAT::CommandStatus::ERROR;
112
+ return chAT::CommandStatus::ERROR;
86
113
}
87
114
int _type = atoi (type_str.c_str ());
88
115
89
116
auto &operation_str = parser.args [1 ];
90
117
if (operation_str.empty ()) {
91
- return chAT::CommandStatus::ERROR;
118
+ return chAT::CommandStatus::ERROR;
92
119
}
93
120
uint8_t operation = atoi (operation_str.c_str ());
94
121
95
122
auto &filename = parser.args [2 ];
96
123
if (filename.empty ()) {
97
- return chAT::CommandStatus::ERROR;
124
+ return chAT::CommandStatus::ERROR;
98
125
}
99
126
100
127
FILE* f;
@@ -119,7 +146,7 @@ void CAtHandler::add_cmds_esp_generic() {
119
146
std::vector<uint8_t > data_received;
120
147
data_received = srv.inhibit_read (size);
121
148
size_t offset = data_received.size ();
122
-
149
+
123
150
if (offset < size) {
124
151
125
152
data_received.resize (size);
@@ -134,7 +161,7 @@ void CAtHandler::add_cmds_esp_generic() {
134
161
}
135
162
int res = file.write (data_received.data (), data_received.size ());
136
163
if (res == 0 ){
137
- return chAT::CommandStatus::ERROR;
164
+ return chAT::CommandStatus::ERROR;
138
165
}
139
166
140
167
file.close ();
@@ -186,7 +213,7 @@ void CAtHandler::add_cmds_esp_generic() {
186
213
return chAT::CommandStatus::OK;
187
214
}
188
215
case WIFI_FILE_APPEND: {
189
- uint8_t size = 0 ;
216
+ uint8_t size = 0 ;
190
217
if (parser.args .size () >= 3 ) {
191
218
auto &size_str = parser.args [3 ];
192
219
if (size_str.empty ()) {
@@ -200,7 +227,7 @@ void CAtHandler::add_cmds_esp_generic() {
200
227
std::vector<uint8_t > data_received;
201
228
data_received = srv.inhibit_read (size);
202
229
size_t offset = data_received.size ();
203
-
230
+
204
231
if (offset < size) {
205
232
206
233
data_received.resize (size);
@@ -216,12 +243,12 @@ void CAtHandler::add_cmds_esp_generic() {
216
243
217
244
int res = file.write (data_received.data (), data_received.size ());
218
245
if (res == 0 ){
219
- return chAT::CommandStatus::ERROR;
246
+ return chAT::CommandStatus::ERROR;
220
247
}
221
248
222
249
file.close ();
223
250
srv.continue_read ();
224
-
251
+
225
252
return chAT::CommandStatus::OK;
226
253
}
227
254
default :
@@ -239,14 +266,14 @@ void CAtHandler::add_cmds_esp_generic() {
239
266
command_table[_MOUNTFS] = [this ](auto & srv, auto & parser) {
240
267
/* ....................................................................... */
241
268
switch (parser.cmd_mode ) {
242
- case chAT::CommandMode::Write: {
243
- if (parser.args .size () != 1 ) {
269
+ case chAT::CommandMode::Write: {
270
+ if (parser.args .size () != 1 ) {
244
271
return chAT::CommandStatus::ERROR;
245
272
}
246
273
247
274
auto &format_on_fault = parser.args [0 ];
248
275
if (format_on_fault.empty ()) {
249
- return chAT::CommandStatus::ERROR;
276
+ return chAT::CommandStatus::ERROR;
250
277
}
251
278
int _fof = atoi (format_on_fault.c_str ());
252
279
if (!SPIFFS.begin (_fof)){
@@ -277,7 +304,7 @@ void CAtHandler::add_cmds_esp_generic() {
277
304
for (int i = 0 ; i < MAX_CLIENT_AVAILABLE; i++) {
278
305
serverClients[i].client .stop ();
279
306
}
280
-
307
+
281
308
for (int i = 0 ; i < MAX_SERVER_AVAILABLE; i++) {
282
309
if (serverWiFi[i] != nullptr ) {
283
310
serverWiFi[i]->end ();
@@ -305,7 +332,7 @@ void CAtHandler::add_cmds_esp_generic() {
305
332
clients[i] = nullptr ;
306
333
}
307
334
}
308
-
335
+
309
336
clients_num = 0 ;
310
337
311
338
for (int i = 0 ; i < MAX_CLIENT_AVAILABLE; i++) {
@@ -323,15 +350,15 @@ void CAtHandler::add_cmds_esp_generic() {
323
350
324
351
WiFi.disconnect ();
325
352
WiFi.softAPdisconnect ();
326
-
353
+
327
354
srv.write_response_prompt ();
328
355
srv.write_line_end ();
329
356
return chAT::CommandStatus::OK;
330
357
}
331
358
default :
332
359
return chAT::CommandStatus::ERROR;
333
- }
360
+ }
334
361
};
335
362
}
336
363
337
- #endif
364
+ #endif
0 commit comments