
aaaa
Dependencies: SeeedStudioTFTv2 TFT_fonts mbed
Fork of Seeed_TFT_Touch_Shield by
Diff: Modem.cpp
- Revision:
- 7:5cf5aeae1954
- Parent:
- 5:c1af1f8fa026
- Child:
- 11:575dfd388778
--- a/Modem.cpp Sat Oct 25 20:42:30 2014 +0000 +++ b/Modem.cpp Sat Oct 25 21:55:05 2014 +0000 @@ -1,5 +1,12 @@ #include "Modem.h" +void cleanBuffer(char *buffer, int count) +{ + for(int i=0; i < count; i++) { + buffer[i] = '\0'; + } +} + Modem::Modem(PinName tx, PinName rx, int baudRate,char *default_number):serial_modem(tx,rx) { this->default_number = default_number; @@ -7,19 +14,111 @@ buffer_p = 0; read_trail = false; read_buffer[BUF_SIZE]='\0'; + mIndex = 0 ; + //available types mTypeState = 1 RING mTypeState = 2 SMS + mTypeState = 0 ; + cleanBuffer(messageBuffer, SMS_MAX_LENGTH); } /*********************************************** Utility/debug Functions ***********************************************/ -void cleanBuffer(char *buffer, int count) -{ - for(int i=0; i < count; i++) { - buffer[i] = '\0'; + +int Modem::updateBuffer(char c){ +// messageBuffer[mIndex] = c ; +// mIndex = (mIndex + 1) % SMS_MAX_LENGTH ; + int messageType = MESSAGE_NONE; +// if(mIndex == 0 ){ +// cleanBuffer(messageBuffer, SMS_MAX_LENGTH); +// } + if(mTypeState == 0){ + if(c == 'R'){ + mTypeState = 01 ; + }else if (c == '+'){ + mTypeState = 11 ; + } + } + /* Handling the SMS MESSAGE */ + else if (mTypeState == 11){ + if(c != 'C'){ + mTypeState = 0 ; + }else { + mTypeState = 12 ; + } + } + else if (mTypeState == 12){ + if(c != 'M'){ + mTypeState = 0 ; + }else { + mTypeState = 13 ; + } + } + else if (mTypeState == 13){ + if(c != 'T'){ + mTypeState = 0 ; + }else { + mTypeState = 14 ; + } + } + else if (mTypeState == 14){ + if(c != ':'){ + mTypeState = 0 ; + }else { + mTypeState = 15 ; + } } + else if (mTypeState == 15){ + messageBuffer[mIndex] = c ; + //next index + mIndex = (mIndex + 1) % SMS_MAX_LENGTH ; + if(c != '\n'){ + mTypeState = 15 ; + }else { + mTypeState = 16 ; + } + } + else if (mTypeState == 16){ + messageBuffer[mIndex] = c ; + //next index + mIndex = (mIndex + 1) % SMS_MAX_LENGTH ; + if(c != '\n'){ + mTypeState = 16 ; + }else { + mTypeState = 0 ; + messageType = MESSAGE_SMS ; + strcpy(messageCopyBuffer,messageBuffer); + cleanBuffer(messageBuffer, SMS_MAX_LENGTH); + } + } + + /*Handling the RING*/ + else if (mTypeState == 01){ + if(c != 'I'){ + mTypeState = 0 ; + }else { + mTypeState = 02 ; + } + }else if (mTypeState == 02){ + if(c != 'N'){ + mTypeState = 0 ; + }else { + mTypeState = 03 ; + } + }else if (mTypeState == 03){ + if(c != 'G'){ + mTypeState = 0 ; + }else { + mTypeState = 0 ; + messageType = MESSAGE_RING ; + } + } + + + return messageType; } + int Modem::loopHandle(void) { char gprsBuffer[100];