@@ -69,18 +69,19 @@ bool ModemClass::passthrough(const uint8_t *data, size_t size) {
69
69
break ;
70
70
}
71
71
}
72
- }
73
- # ifdef MODEM_DEBUG_PASSTHROUGH
74
- Serial. print ( " passthrough, rx |>> " );
75
- Serial. print (data_res. c_str () );
76
- Serial. println (" <<| " );
72
+ }
73
+
74
+ if (_serial_debug && _debug_level >= 2 ) {
75
+ _serial_debug-> print (" ANSWER (passthrough): " );
76
+ _serial_debug-> println (data_res. c_str () );
77
77
if (res) {
78
- Serial. println (" Result: OK" );
78
+ _serial_debug-> println (" Result: OK" );
79
79
}
80
80
else {
81
- Serial.println (" Result: FAILED" );
82
- }
83
- #endif
81
+ _serial_debug->println (" Result: FAILED" );
82
+ }
83
+ }
84
+
84
85
return res;
85
86
}
86
87
@@ -92,11 +93,13 @@ void ModemClass::write_nowait(const string &cmd, string &str, char * fmt, ...) {
92
93
va_start (va, fmt);
93
94
vsprintf ((char *)tx_buff, fmt, va);
94
95
va_end (va);
95
- #ifdef MODEM_DEBUG
96
- Serial.print (" Write Call no wait, command sent: " );
97
- Serial.write (tx_buff,strlen ((char *)tx_buff));
98
- Serial.println ();
99
- #endif
96
+
97
+ if (_serial_debug && _debug_level >= 2 ) {
98
+ _serial_debug->print (" REQUEST (passthrough): " );
99
+ _serial_debug->write (tx_buff,strlen ((char *)tx_buff));
100
+ _serial_debug->println ();
101
+ }
102
+
100
103
_serial->write (tx_buff,strlen ((char *)tx_buff));
101
104
return ;
102
105
}
@@ -105,25 +108,22 @@ void ModemClass::write_nowait(const string &cmd, string &str, char * fmt, ...) {
105
108
/* -------------------------------------------------------------------------- */
106
109
bool ModemClass::write (const string &prompt, string &data_res, char * fmt, ...){
107
110
/* -------------------------------------------------------------------------- */
108
- data_res.clear ();
109
- memset (tx_buff,0x00 ,MAX_BUFF_SIZE);
110
- va_list va;
111
- va_start (va, fmt);
112
- vsprintf ((char *)tx_buff, fmt, va);
113
- va_end (va);
114
- #ifdef MODEM_DEBUG
115
- Serial.println ();
116
- Serial.println (" ###>" );
117
- Serial.print (" READ BY SIZE: " );
118
- Serial.println ((int )read_by_size);
119
- Serial.print (" Write Call, command sent: " );
120
- Serial.write (tx_buff,strlen ((char *)tx_buff));
121
- Serial.println ();
111
+ data_res.clear ();
112
+ memset (tx_buff,0x00 ,MAX_BUFF_SIZE);
113
+ va_list va;
114
+ va_start (va, fmt);
115
+ vsprintf ((char *)tx_buff, fmt, va);
116
+ va_end (va);
117
+
118
+ if (_serial_debug) {
119
+ _serial_debug->println ();
120
+ _serial_debug->print (" REQUEST: " );
121
+ _serial_debug->write (tx_buff,strlen ((char *)tx_buff));
122
+ _serial_debug->println ();
123
+ }
122
124
123
- Serial.println (" <###" );
124
- #endif
125
- _serial->write (tx_buff,strlen ((char *)tx_buff));
126
- return buf_read (prompt,data_res);;
125
+ _serial->write (tx_buff,strlen ((char *)tx_buff));
126
+ return buf_read (prompt,data_res);;
127
127
}
128
128
129
129
@@ -156,12 +156,22 @@ bool ModemClass::read_by_size_finished(string &rx) {
156
156
int pos_space = rx.find (" " );
157
157
if (pos != string::npos && pos_space != string::npos) {
158
158
string n = rx.substr (pos_space,pos);
159
- /* add 4 because OK\r\n is always added at the end of data */
160
- data_to_be_received = atoi (n.c_str ()) + 4 ;
161
- rx.clear ();
162
- data_received = 0 ;
163
- st = WAIT_FOR_DATA;
164
-
159
+ int to_be_rx = atoi (n.c_str ());
160
+ if (to_be_rx <= 0 ) {
161
+ while ( _serial->available () ){
162
+ _serial->read ();
163
+ }
164
+ rv = true ;
165
+ first_call = true ;
166
+ st = IDLE;
167
+ }
168
+ else {
169
+ /* add 4 because OK\r\n is always added at the end of data */
170
+ data_to_be_received = to_be_rx + 4 ;
171
+ data_received = 0 ;
172
+ st = WAIT_FOR_DATA;
173
+ }
174
+ rx.clear ();
165
175
}
166
176
}
167
177
break ;
@@ -190,23 +200,32 @@ bool ModemClass::buf_read(const string &prompt, string &data_res) {
190
200
bool res = false ;
191
201
bool found = false ;
192
202
203
+ if (_serial_debug && _debug_level >= 1 ) {
204
+ _serial_debug->print (" RAW: " );
205
+ }
206
+
193
207
unsigned long start_time = millis ();
194
208
while ((millis () - start_time < _timeout) && !found){
195
209
while ( _serial->available () ){
196
210
char c = _serial->read ();
197
211
data_res += c;
198
- # ifdef SELECTABLE_MODEM_DEBUG
199
- if (enable_dbg ) {
200
- Serial. print (c);
212
+
213
+ if (_serial_debug && _debug_level >= 1 ) {
214
+ _serial_debug-> print (c);
201
215
}
202
- # endif
216
+
203
217
204
218
if (read_by_size) {
205
219
if (read_by_size_finished (data_res)) {
206
220
found = true ;
207
221
read_by_size = false ;
208
222
res = true ;
209
- data_res = data_res.substr (0 , data_res.length () - (sizeof (RESULT_OK) - 1 ));
223
+ if (data_res.size () > 0 ) {
224
+ data_res = data_res.substr (0 , data_res.length () - (sizeof (RESULT_OK) - 1 ));
225
+ }
226
+ else {
227
+ break ;
228
+ }
210
229
}
211
230
}
212
231
else {
@@ -249,18 +268,24 @@ bool ModemClass::buf_read(const string &prompt, string &data_res) {
249
268
}
250
269
trim_results = true ;
251
270
read_by_size = false ;
252
- #ifdef MODEM_DEBUG
253
- Serial.print (" Write Call, response rx |>>" );
254
- Serial.print (data_res.c_str ());
255
- Serial.println (" <<|" );
271
+
272
+ if (_serial_debug && _debug_level >= 1 ) {
273
+ _serial_debug->print (" <-RAW END" );
274
+ _serial_debug->println ();
275
+ }
276
+
277
+ if (_serial_debug) {
278
+ _serial_debug->print (" ANSWER: " );
279
+ _serial_debug->println (data_res.c_str ());
256
280
if (res) {
257
- Serial. println (" Result: OK" );
281
+ _serial_debug-> println (" Result: OK" );
258
282
}
259
283
else {
260
- Serial.println (" Result: FAILED" );
261
- }
262
- #endif
263
-
284
+ _serial_debug->println (" Result: FAILED" );
285
+ }
286
+ }
287
+
288
+
264
289
return res;
265
290
}
266
291
0 commit comments