@@ -45,9 +45,10 @@ GSMClient::GSMClient(int socket, bool synch) :
45
45
_port(0 ),
46
46
_ssl(false ),
47
47
_writeSync(true ),
48
- _peek(-1 )
48
+ _peek(-1 ),
49
+ _available(0 )
49
50
{
50
- MODEM.addUrcHandler (this );
51
+ MODEM.addUrcHandler (this );
51
52
}
52
53
53
54
GSMClient::~GSMClient ()
@@ -363,6 +364,9 @@ int GSMClient::read(uint8_t *buf, size_t size)
363
364
buf[i] = (n1 << 4 ) | n2;
364
365
}
365
366
367
+ _available = 0 ;
368
+ MODEM.poll ();
369
+
366
370
return size;
367
371
}
368
372
@@ -395,24 +399,9 @@ int GSMClient::available()
395
399
return 0 ;
396
400
}
397
401
398
- String response;
399
-
400
- MODEM.sendf (" AT+USORD=%d,0" , _socket, 0 );
401
- if (MODEM.waitForResponse (10000 , &response) == 1 ) {
402
- if (response.startsWith (" +USORD: " )) {
403
- int commaIndex = response.indexOf (' ,' );
404
-
405
- if (commaIndex != -1 ) {
406
- response.remove (0 , commaIndex + 1 );
407
-
408
- return response.toInt ();
409
- }
410
- }
411
- } else {
412
- _socket = -1 ;
413
- }
402
+ MODEM.poll ();
414
403
415
- return 0 ;
404
+ return _available ;
416
405
}
417
406
418
407
int GSMClient::peek ()
@@ -448,14 +437,23 @@ void GSMClient::handleUrc(const String& urc)
448
437
if (socket == _socket) {
449
438
// this socket closed
450
439
_socket = -1 ;
440
+ _available = 0 ;
451
441
}
452
- } else if (urc.startsWith (" +UUSORD: " ) && urc.endsWith (" ,4294967295" )) {
453
- // SSL disconnect
442
+ } else if (urc.startsWith (" +UUSORD: " )) {
454
443
int socket = urc.charAt (9 ) - ' 0' ;
455
444
456
445
if (socket == _socket) {
457
- // this socket closed
458
- _socket = -1 ;
446
+ if (urc.endsWith (" ,4294967295" )) {
447
+ // SSL disconnect
448
+ // this socket closed
449
+ _socket = -1 ;
450
+ _available = 0 ;
451
+ } else {
452
+ int commaIndex = urc.indexOf (' ,' );
453
+ if (commaIndex != -1 ) {
454
+ _available = urc.substring (commaIndex + 1 ).toInt ();
455
+ }
456
+ }
459
457
}
460
458
}
461
459
}
0 commit comments