Diseño de Firmaware Diseañado en base a los requerimientos definidos durante la etapa de analisis.

Dependencies:   BLE_API mbed

Fork of nRF51822_SimpleControls by Gustavo Belduma

Files at this revision

API Documentation at this revision

Comitter:
Gustavo_Eduardo338
Date:
Fri Sep 02 15:12:42 2016 +0000
Parent:
8:c4130ea78471
Commit message:
Simple Control Caracteristicas NRF51822

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Aug 17 22:54:54 2016 +0000
+++ b/main.cpp	Fri Sep 02 15:12:42 2016 +0000
@@ -101,13 +101,13 @@
     ble.startAdvertising();
     LED_SET_D11 = 0;
     analog_enabled = 0;         //  Deja que envie lecturas el PT 1000
-    
+
     sen_analog_in_5 = 0;
     sen_digital_in_7 = 0;
     act_analog_out_6 = 0;
     act_analog_out_4 = 0;
     act_analog_out_7 = 0;
-    
+
     enviar_config_01 = 0;
 }
 // Ingresa por este metdo unicamente la primera vez que se conecta al mote.
@@ -133,17 +133,17 @@
         memcpy(txPayload, buf, TXRX_BUF_LEN);
 
         //por dixys
-        pc.printf("Buffer recibido desde Android: \r\n");
+        //pc.printf("Buffer recibido desde Android: \r\n");
 
         for(index=0; index<bytesRead; index++)
             pc.putc(buf[index]);
 
-        pc.printf("Leemos la trama: \r\n");
-        for(index=0; index<bytesRead; index++) {
-            pc.printf("buf[%02x]: %02x\r\n", index, buf[index]);
+        //pc.printf("Leemos la trama: \r\n");
+        //for(index=0; index<bytesRead; index++) {
+        //    pc.printf("buf[%02x]: %02x\r\n", index, buf[index]);
 
-        }
-        pc.printf("Fin de la Lectura: \r\n");
+        //}
+        //pc.printf("Fin de la Lectura: \r\n");
 
         // Desde el telefono desactiva el envio de tramas de las siguientes tramas.
         if (buf[0] == 0xDC && buf[1] == 0xC1) {              //  Dato Configuracion
@@ -160,7 +160,7 @@
             sen_digital_in_7 = buf[4];      // Hace que ya no se vuelva a enviar este tipo de configuracion
             act_analog_out_6 = 1;           //  habilita al atuador PWD, para que envie su configuracion
         }
-        
+
         //  PWD
         if (buf[0] == 0xDC && buf[1] == 0xA && buf[2] == 0xAA && buf[3] == 40) {
             act_analog_out_6 = buf[4];      // Hace que ya no se vuelva a enviar este tipo de configuracion
@@ -170,13 +170,13 @@
         if (buf[0] == 0xDC && buf[1] == 0xA && buf[2] == 0x0A && buf[3] == 80) {
             act_analog_out_4 = buf[4];      // Hace que ya no se vuelva a enviar este tipo de configuracion
             act_analog_out_7 = 1;           //  habilita al atuador Foco, para que envie su configuracion
-        
+
         }
         //  Actuador Foco
         if (buf[0] == 0xDC && buf[1] == 0xA && buf[2] == 0x0A && buf[3] == 10) {
             act_analog_out_7 = buf[4];       // Hace que ya no se vuelva a enviar este tipo de configuracion
         }
-        
+
         //  Maneja las Tramas de confirmacion
         //  PWD
         if (buf[0] == 0xBB && buf[1] == 0xA0 && buf[2] == 40) {
@@ -185,7 +185,7 @@
         //  Actuador la Bomba
         if (buf[0] == 0xBB && buf[1] == 0xD0 && buf[2] == 80) {
             resp_digital_out_4 = buf[3];      // Hace que ya no se vuelva a enviar este tipo de configuracion
-        
+
         }
         //  Actuador Foco
         if (buf[0] == 0xBB && buf[1] == 0xD0 && buf[2] == 10) {
@@ -196,24 +196,26 @@
         if(buf[0] == 0xEE) {
             // Verifico si es un signal Digital Out
             if(buf[2] == 0xD0) {
-                if(buf[3] == 0x07 && buf[4] == 0x01) {
-                    LED_SET_D7 = 1;
-                    resp_digital_out_7 = buf[1];        //  Paquete id
-                } else {
-                    LED_SET_D7 = 0;
+                if(buf[3] == 0x07) {
+                    if (buf[4] == 0x01) {
+                        LED_SET_D7 = 1;
+                    } else {
+                        LED_SET_D7 = 0;
+                    }
                     resp_digital_out_7 = buf[1];        //  Paquete id
                 }
 
-                if(buf[3] == 0x04 && buf[4] == 0x01) {
-                    LED_SET_D4 = 1;
-                    analog_enabled = 1;
-                    resp_digital_out_4 = buf[1];        //  Paquete id
-                } else {
-                    LED_SET_D4 = 0;
-                    analog_enabled = 0;
+                if(buf[3] == 0x04 ) {
+                    if (buf[4] == 0x01) {
+                        LED_SET_D4 = 1;
+                        analog_enabled = 1;
+                    } else {
+                        LED_SET_D4 = 0;
+                        analog_enabled = 0;
+                    }
                     resp_digital_out_4 = buf[1];        //  Paquete id
                 }
-            // Verifico si es un signal Analog out
+                // Verifico si es un signal Analog out
             } else if(buf[2] == 0xA0) {
                 if(buf[3] == 0x06) {
                     float value = (float)buf[4]/255;
@@ -222,7 +224,7 @@
                     resp_analog_out_6 = buf[1];        //  Paquete id
                 }
             }
-        
+
         } else if(buf[0] == 0xA0) {
             if(buf[1] == 0x01) {
                 analog_enabled = 1;
@@ -234,7 +236,7 @@
                 //por dixys
                 pc.printf("ANALOG DISAABLE \r\n");
                 pc.printf("valor : %d", analog_enabled);
-            }
+            } 
         } else if(buf[0] == 0x02) {
             float value = (float)buf[1]/255;
             PWM = value;
@@ -262,23 +264,26 @@
 void m_status_check_handle(void)
 {
     uint8_t tiempo_entre_envio_conf = 200;
-    uint8_t buf[5], conf_02[5];
+    uint8_t buf[6], conf_02[5];
     conf_02[0] = (0xC02);               //  Codigo que indica que la configuracion sera por cada Pin.
 
     if (analog_enabled) { // if analog reading enabled
-        pc.printf("analog_enabled: %d\r\n", analog_enabled);
         // Read and send out
         float s = ANALOG;
-        pc.printf("value pt 1000 (s): %d\r\n", s);
         uint16_t value = s*1024;
         buf[0] = (0xDD);                    //  Codigo
         buf[1] = (0x00);                    //  paquete id
         buf[2] = (0xA1);                    //  A1| A0| D1| D0
         buf[3] = (20);                      //  Posicion
-        buf[4] = (value);                   //  Valor
-        pc.printf("value pt 1000: %d\r\n", value);  // Imprimo en terminal lo que esta enviando desde el mote.
+        buf[4] = (value >> 8);                   //  Valor
+        buf[5] = (value);                   //  Valor
+        
+        //pc.printf("buf[4]: %d\r\n", buf[4]);
+        //pc.printf("buf[5]: %d\r\n", buf[5]);
+        
+        //pc.printf("value pt 1000: %d\r\n", value);  // Imprimo en terminal lo que esta enviando desde el mote.
 
-        ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5);    // Para el RTD
+        ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 6);    // Para el RTD
     }
 
     // If digital in changes, report the state
@@ -287,15 +292,16 @@
         buf[0] = (0xDD);                    //  Codigo de Lecturas de Datos.
         buf[1] = (0x00);                    //  Paquete
         buf[2] = (0xD1);                    //  A1| A0| D1| D0
-        buf[3] = (10);                       //  Posicion
-        if (BUTTON == 1) {
-            pc.printf("BUTTON == 1\r\n");
+        buf[3] = (10);                      //  Posicion
+        
+        if (BUTTON == 1) {                  //  Estado natural (no pulsado)
+            pc.printf("BUTTON == 0\r\n");
             LED_SET_D7 = 0;
-            buf[4] = (0x00);    //  Valor
-        } else {
-            pc.printf("else BUTTON == 1 \r\n");
+            buf[4] = 0;                     //  Apagado
+        } else {                            //  Pulsado
+            pc.printf("BUTTON == 1 \r\n");
             LED_SET_D7 = 1;
-            buf[4] = (0x01);    //  Valor
+            buf[4] = 1;                     //  Encendido
         }
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5);
     }
@@ -306,7 +312,7 @@
         pc.printf("enviar_config_01 %d \r\n", enviar_config_01);
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), di_conf, 9);
     }
-    
+
     //  Envia la configuracion del PT 1000.
     if (sen_analog_in_5 == 1) {
         conf_02[1] = (0x05);                 //  Categoria puede ser: A (Actuador) | 5 (Sensor)
@@ -317,7 +323,7 @@
         pc.printf("Configuracion Detallada por Pin PT1000\r\n");
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5);
     }
-    
+
     //  Envia la configuracion del sensor de luz.
     if (sen_digital_in_7 == 1) {
         conf_02[1] = (0x05);                 //  Categoria puede ser: A (Actuador) | 5 (Sensor)
@@ -328,7 +334,7 @@
         pc.printf("Configuracion Detallada por sensor de luz\r\n");
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5);
     }
-    
+
     //  Envia la configuracion del PWD.
     if (act_analog_out_6 == 1) {
         conf_02[1] = (0xA);                 //  Categoria puede ser: A (Actuador) | 5 (Sensor)
@@ -339,7 +345,7 @@
         pc.printf("Configuracion Detallada por PWD\r\n");
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5);
     }
-    
+
     //  Envia la configuracion del Actuador la Bomba.
     if (act_analog_out_4 == 1) {
         conf_02[1] = (0xA);                 //  Categoria puede ser: A (Actuador) | 5 (Sensor)
@@ -350,7 +356,7 @@
         pc.printf("Configuracion Detallada por Actuador la Bomba \r\n");
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5);
     }
-    
+
     //  Envia la configuracion del Actuador Foco.
     if (act_analog_out_7 == 1) {
         conf_02[1] = (0xA);                 //  Categoria puede ser: A (Actuador) | 5 (Sensor)
@@ -361,9 +367,9 @@
         pc.printf("Configuracion Detallada por Actuador Foco \r\n");
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5);
     }
-    
+
     // Envia las tramas de confirmacion hacia el gateway.
-    if (resp_analog_out_6 != 0){
+    if (resp_analog_out_6 != 0) {
         // Envia trama de lectura
         buf[0] = (0xDD);                    //  Codigo
         buf[1] = resp_analog_out_6;         //  paquete id
@@ -374,8 +380,8 @@
 
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5);    // Para el RTD
     }
-    
-    if (resp_digital_out_4 != 0){
+
+    if (resp_digital_out_4 != 0) {
         // Envia trama de lectura
         buf[0] = (0xDD);                    //  Codigo
         buf[1] = resp_digital_out_4;         //  paquete id
@@ -386,8 +392,8 @@
 
         ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5);    // Para el RTD
     }
-    
-    if (resp_digital_out_7 != 0){
+
+    if (resp_digital_out_7 != 0) {
         // Envia trama de lectura
         buf[0] = (0xDD);                    //  Codigo
         buf[1] = resp_digital_out_7;         //  paquete id