gsm

Dependencies:   DebouncedIn mbed

Fork of CLASEDELGSM1 by Gustavo Ramirez

Revision:
5:dbb0384120e0
Parent:
4:0b889f7a8eba
Child:
6:4cece0df6a3b
--- a/main.cpp	Sun May 08 08:56:40 2016 +0000
+++ b/main.cpp	Tue May 10 10:08:40 2016 +0000
@@ -42,6 +42,7 @@
 Timer t;
 DigitalOut LedVerde(LED2);
 DigitalOut LedRojo(LED1);
+DigitalOut camara(PTE5 );
 DigitalOut LedAzul(LED3);
 DebouncedIn PIR(PTA13);  //señal que inicia el envio del mensaje
 DebouncedIn button1(PTC12);  //señal que inicia el envio del mensaje
@@ -55,10 +56,10 @@
 int longi=0;
 char tel[11];
 char DE[50];
-char buffer[100];
-char buffermsg[100];
-char buffer1[100];
-char datos[100];
+char buffer[200];
+//char buffermsg[200];
+//char buffer1[200];
+//char datos[200];
 char NUMBER[13]; 
 char resp[6];  
 char CMT[]="+CMTI";
@@ -71,7 +72,7 @@
 unsigned char CtrlZ = 0x1A;  // comodin de emision controlZ
 bool Flag = false; // bandera 
 char r[]=""; //Cadena de recepcion de la trama PDU si se usa!!
-char msg[256];
+char msg[50];
 char char1;
 //Flush serial para el buffer
 void FlushGSM(void) { 
@@ -256,6 +257,9 @@
     if (0 != sendCmdAndWaitForResp("AT+CBST=0,0,1\r\n", "OK", 3)){
         return -1;
         }
+    if (0 != sendCmdAndWaitForResp("ATE\r\n", "OK", 3)){
+        return -1;
+        }
         LedVerde=0;
         return 0;
         }
@@ -339,11 +343,11 @@
         GSM.printf("0011000A9113223717370000AA2A21970B19CE83926EBABC3E7FCF41453788190699D3EE7118442E83A4E9B7BB7C96BF5DAE10");
         wait_ms(200);
         GSM.putc((char)0x1A);
-        for(i=0;i<6;i++){
+        for(i=0;i<60;i++){      //por mas ruido se envia un mensaje cada minuto
                LedVerde=1;
-               wait(0.2);
+               wait(0.5);
                LedVerde=0;
-               wait(0.2);
+               wait(0.5);
           }      
         }
         }
@@ -356,7 +360,7 @@
 //la comparacion de estos mensajes constituye generar accionamiento abrir o cerrar circuitos o contestar mensajes
  
        if (GSM.readable()) {
-            readBuffer(buffer,100);
+            readBuffer(buffer,110);
             pc.printf("%s\r\n",buffer);
             for(i=0;i<5;i++)
             {
@@ -386,27 +390,37 @@
                    }
                    pc.printf("%s-\r\n",tam);        
                    //leer mensaje
-                    for(i=0;i<14;i++){
-                       msg[i]=buffer[i+70];  //OJO SE LEE EL MENSAJE APARTIR DE LA POSICION 70
+                    for(i=0;i<20;i++){
+                       msg[i]=buffer[i+70];  //OJO SE LEE EL MENSAJE APARTIR DE LA POSICION 70 14 caracteres
                    }
                    pc.printf("%s-\r\n",msg);        
                    //decodificar mensaje
                    //comparar mensaje
                    deleteSMS(1);//se borra el bufer por medio de una funcion
-                   if(strcmp("417658DE0EC700",msg) == 0){  //COMPARA resp con "417658DE0EC700" que es Alarma1
+                   if(strncmp("417658DE0EC700",msg,14) == 0){  //COMPARA resp con "417658DE0EC700" que es Alarma1
                    LedVerde=1;
                    LedAzul=0;
                    wait(15);
                    LedAzul=1;
                    LedVerde=0;
                    }
-                   if(strcmp("417658DE0ECB00",msg) == 0){  //COMPARA resp con "417658DE0ECB00" que es Alarma2
+                   if(strncmp("417658DE0ECB00",msg,14) == 0){  //COMPARA resp con "417658DE0ECB00" que es Alarma2
                    LedVerde=1;
                    LedRojo=0;
                    wait(15);
                    LedRojo=1;
                    LedVerde=0;
                    }
+                   if(strncmp("C3703B2C0F83DE6E",msg,16) == 0){  //COMPARA resp con "417658DE0ECB00" que es Camara on
+                   camara=1;
+                   }
+                   if(strncmp("C3703B2C0F83DE66",msg,16) == 0){  //COMPARA resp con "417658DE0ECB00" que es Camara of
+                   camara=0;
+                   }
+                   if(strncmp("D3B4BCEC0E83DE6E",msg,16) == 0){  //COMPARA resp con "D3B4BCEC0E83DE6E" que es Sirena on
+                   camara=0;
+                   }
+                   //strncmp(str1, str2, 6) compara hasta 6 caracteres
                    
                    
                    //ejecurar orden si esta es mas que prender leds
@@ -433,6 +447,41 @@
 AT+CMGS=20
    //un salto de linea y el simbolo mayor
 > 
+patrones de alarma y mensajes
+Camara on
+
+da esto
+ +CMGL: 1,0,,26
+0791751330512411040AA1132237173700006150709060250A09C3703B2C0F83DE6E
+
+Camara of da esto
++CMGL: 2,0,,26
+0791751330080089040AA1132237173700006150709001520A09C3703B2C0F83DE66
+mensaje=C3703B2C0F83DE66
+OK
+
+Sirena on
+da esto
+
++CMGL: 3,0,,26
+0791751330512411040AA1132237173700006150709031540A09D3B4BCEC0E83DE6E
+mensaje=D3B4BCEC0E83DE6E
+OK
+
+Sirena of
+
+da esto
++CMGL: 4,0,,26
+0791751330512411040AA1132237173700006150709051750A09D3B4BCEC0E83DE66
+mensaje=D3B4BCEC0E83DE66
+OK
+
+Alarma 1
+
++CMGL: 1,0,,25
+0791751330512411040AA1132237173700006150702153640A08417658DE0E8362
+mensaje=417658DE0E8362
+5