@@ -201,7 +201,6 @@ uint8_t Sim800L::getFunctionalityMode()
201201 return _functionalityMode;
202202}
203203
204-
205204bool Sim800L::setPIN (String pin)
206205{
207206 String command;
@@ -480,6 +479,7 @@ bool Sim800L::sendSms(char* number,char* text)
480479 _buffer=_readSerial ();
481480 this ->SoftwareSerial ::print ((char )26 );
482481 _buffer=_readSerial (60000 );
482+ // Serial.println(_buffer);
483483 // expect CMGS:xxx , where xxx is a number,for the sending sms.
484484 if ((_buffer.indexOf (" ER" )) != -1 ) {
485485 return true ;
@@ -493,11 +493,24 @@ bool Sim800L::sendSms(char* number,char* text)
493493}
494494
495495
496- void Sim800L::prepareForSmsReceive ()
496+ bool Sim800L::prepareForSmsReceive ()
497497{
498498 // Configure SMS in text mode
499- this ->SoftwareSerial ::print (F (" AT+CMGF=1\r " ));
499+ this ->SoftwareSerial ::print (F (" AT+CMGF=1\r " ));
500+ _buffer=_readSerial ();
501+ // Serial.print(_buffer);
502+ if ((_buffer.indexOf (" OK" )) == -1 )
503+ {
504+ return false ;
505+ }
500506 this ->SoftwareSerial ::print (F (" AT+CNMI=2,1,0,0,0\r " ));
507+ _buffer=_readSerial ();
508+ // Serial.print(_buffer);
509+ if ((_buffer.indexOf (" OK" )) == -1 )
510+ {
511+ return false ;
512+ }
513+ return true ;
501514}
502515
503516const uint8_t Sim800L::checkForSMS ()
@@ -507,7 +520,8 @@ const uint8_t Sim800L::checkForSMS()
507520 {
508521 return 0 ;
509522 }
510- // Serial.println(_buffer);
523+ _buffer += _readSerial (1000 );
524+ // Serial.println(_buffer);
511525 // +CMTI: "SM",1
512526 if (_buffer.indexOf (" CMTI" ) == -1 )
513527 {
@@ -539,7 +553,7 @@ String Sim800L::readSms(uint8_t index)
539553{
540554 // Can take up to 5 seconds
541555
542- if (( _readSerial (5000 ).indexOf (" ER" )) != -1 )
556+ if (( _readSerial (5000 ).indexOf (" ER" )) != -1 )
543557 {
544558 return " " ;
545559 }
@@ -554,8 +568,7 @@ String Sim800L::readSms(uint8_t index)
554568 return " " ;
555569 }
556570
557- _buffer=_readSerial ();
558- // Serial.println(_buffer);
571+ _buffer = _readSerial (10000 );
559572 byte first = _buffer.indexOf (' \n ' , 2 ) + 1 ;
560573 byte second = _buffer.indexOf (' \n ' , first);
561574 return _buffer.substring (first, second);
0 commit comments