aaaa

Dependencies:   SeeedStudioTFTv2 TFT_fonts mbed

Fork of Seeed_TFT_Touch_Shield by Bhavik Bhuta

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];