Gustavo Belduma
/
nRF51822_SimpleControls_1
Diff: main.cpp
- Revision:
- 8:c4130ea78471
- Parent:
- 7:fb4c6c1dd3a9
- Child:
- 9:501a9e6710d2
--- a/main.cpp Wed Aug 10 06:47:28 2016 +0000 +++ b/main.cpp Wed Aug 17 22:54:54 2016 +0000 @@ -40,12 +40,18 @@ //static int32_t send_config = 0; static int32_t enviar_config_01 = 0; +// variables semaforos que me permiten identificar si se debe o no enviar las tramas de configuracion de cada sensor. static int32_t sen_analog_in_5 = 0; static int32_t sen_digital_in_7 = 0; static int32_t act_analog_out_6 = 0; static int32_t act_analog_out_4 = 0; static int32_t act_analog_out_7 = 0; +// Variables semaforo que me permiten identificar si se debe enviar la respuesta de confirmacion +static int32_t resp_analog_out_6 = 0; +static int32_t resp_digital_out_4 = 0; +static int32_t resp_digital_out_7 = 0; + BLE ble; // Digital IN @@ -76,7 +82,7 @@ static const uint8_t uart_base_uuid_rev[] = {0x1E, 0x94, 0x8D, 0xF1, 0x48, 0x31, 0x94, 0xBA, 0x75, 0x4C, 0x3E, 0x50, 0, 0, 0x3D, 0x71}; // Trama de Configuracion de los Pines (a). -static const uint8_t di_conf [] = {0xC01,0xA1, 20, 0xA0, 40, 0xD1, 8, 0xD0, 90}; // length: 9 +static const uint8_t di_conf [] = {0xC01,0xA1, 20, 0xA0, 40, 0xD1, 10, 0xD0, 90}; // length: 9 uint8_t txPayload[TXRX_BUF_LEN] = {0,}; uint8_t rxPayload[TXRX_BUF_LEN] = {0,}; @@ -139,9 +145,9 @@ } pc.printf("Fin de la Lectura: \r\n"); - // Desde el telefono desactiva el envio de tramas de la Configuracion general del mote. + // Desde el telefono desactiva el envio de tramas de las siguientes tramas. if (buf[0] == 0xDC && buf[1] == 0xC1) { // Dato Configuracion - enviar_config_01 = buf[2]; // Debe ser cero, hace que ya no se vuelva a enviar la conf general del mote + enviar_config_01 = buf[2]; // Debe ser cero, hace que ya no se vuelva a enviar la conf general del mote sen_analog_in_5 = 1; // habilita al Sensor PT1000, para que envie su configuracion } // PT 1000 @@ -151,18 +157,18 @@ } // sensor de luz if (buf[0] == 0xDC && buf[1] == 0x05 && buf[2] == 0xDD && buf[3] == 10) { - sen_digital_in_7 = buf[4]; // Hace que ya no se vuelva a enviar este tipo de configuracion + 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 + act_analog_out_6 = buf[4]; // Hace que ya no se vuelva a enviar este tipo de configuracion act_analog_out_4 = 1; // habilita al atuador Bomba, para que envie su configuracion } // Actuador la Bomba 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_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 } @@ -170,7 +176,21 @@ 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) { + resp_analog_out_6 = buf[3]; // Hace que ya no se vuelva a enviar este tipo de configuracion + } + // 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) { + resp_digital_out_7 = buf[3]; + } // Verifico si es una trama de Escitura. if(buf[0] == 0xEE) { @@ -178,26 +198,31 @@ 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; + 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; + 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; PWM = value; pc.printf("PWM = %f \r\n", value); + resp_analog_out_6 = buf[1]; // Paquete id } } - + } else if(buf[0] == 0xA0) { if(buf[1] == 0x01) { analog_enabled = 1; @@ -262,7 +287,7 @@ buf[0] = (0xDD); // Codigo de Lecturas de Datos. buf[1] = (0x00); // Paquete buf[2] = (0xD1); // A1| A0| D1| D0 - buf[3] = (8); // Posicion + buf[3] = (10); // Posicion if (BUTTON == 1) { pc.printf("BUTTON == 1\r\n"); LED_SET_D7 = 0; @@ -278,7 +303,6 @@ //pc.printf("enviar_config %d \r\n", enviar_config_01); if (enviar_config_01 == 1) { // Envia la configuracion Genaral del Mote. - //wait_ms(tiempo_entre_envio_conf); pc.printf("enviar_config_01 %d \r\n", enviar_config_01); ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), di_conf, 9); } @@ -287,11 +311,10 @@ if (sen_analog_in_5 == 1) { conf_02[1] = (0x05); // Categoria puede ser: A (Actuador) | 5 (Sensor) conf_02[2] = (0xAA); // Tipo de Signal AA | DD - conf_02[3] = (0); // Codigo del Ted + conf_02[3] = (37); // Codigo del Ted conf_02[4] = (20); // Posicion que ocupa en el mote pc.printf("Configuracion Detallada por Pin PT1000\r\n"); - //wait_ms(tiempo_entre_envio_conf); ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5); } @@ -299,15 +322,14 @@ if (sen_digital_in_7 == 1) { conf_02[1] = (0x05); // Categoria puede ser: A (Actuador) | 5 (Sensor) conf_02[2] = (0xDD); // Tipo de Signal AA | DD - conf_02[3] = (0); // Codigo del Ted + conf_02[3] = (30); // Codigo del Ted conf_02[4] = (10); // Posicion que ocupa en el mote pc.printf("Configuracion Detallada por sensor de luz\r\n"); - //wait_ms(tiempo_entre_envio_conf); ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5); } - // Envia la configuracion del PWD una sola vez. + // Envia la configuracion del PWD. if (act_analog_out_6 == 1) { conf_02[1] = (0xA); // Categoria puede ser: A (Actuador) | 5 (Sensor) conf_02[2] = (0xAA); // Tipo de Signal AA | DD @@ -315,23 +337,21 @@ conf_02[4] = (40); // Posicion que ocupa en el mote pc.printf("Configuracion Detallada por PWD\r\n"); - //wait_ms(tiempo_entre_envio_conf); ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5); } - // Envia la configuracion del Actuador la Bomba una sola vez. + // Envia la configuracion del Actuador la Bomba. if (act_analog_out_4 == 1) { conf_02[1] = (0xA); // Categoria puede ser: A (Actuador) | 5 (Sensor) - conf_02[2] = (0x0A); // Tipo de Signal AA | DD - conf_02[3] = (0); // Codigo del Ted - conf_02[4] = (80); // Posicion que ocupa en el mote + conf_02[2] = (0x0A); // Tipo de Signal AA | DD + conf_02[3] = (0); // Codigo del Ted + conf_02[4] = (80); // Posicion que ocupa en el mote pc.printf("Configuracion Detallada por Actuador la Bomba \r\n"); - //wait_ms(tiempo_entre_envio_conf); ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5); } - // Envia la configuracion del Actuador Foco una sola vez. + // Envia la configuracion del Actuador Foco. if (act_analog_out_7 == 1) { conf_02[1] = (0xA); // Categoria puede ser: A (Actuador) | 5 (Sensor) conf_02[2] = (0x0A); // Tipo de Signal AA | DD @@ -339,9 +359,45 @@ conf_02[4] = (10); // Posicion que ocupa en el mote pc.printf("Configuracion Detallada por Actuador Foco \r\n"); - //wait_ms(tiempo_entre_envio_conf); ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), conf_02, 5); } + + // Envia las tramas de confirmacion hacia el gateway. + if (resp_analog_out_6 != 0){ + // Envia trama de lectura + buf[0] = (0xDD); // Codigo + buf[1] = resp_analog_out_6; // paquete id + buf[2] = (0xA0); // A1| A0| D1| D0 + buf[3] = (40); // Posicion + buf[4] = PWM; // Valor + pc.printf("resp_analog_out_6 %d\r\n", resp_analog_out_6); // Imprimo en terminal lo que esta enviando desde el mote. + + ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5); // Para el RTD + } + + if (resp_digital_out_4 != 0){ + // Envia trama de lectura + buf[0] = (0xDD); // Codigo + buf[1] = resp_digital_out_4; // paquete id + buf[2] = (0xD0); // A1| A0| D1| D0 + buf[3] = (80); // Posicion + buf[4] = LED_SET_D4; // Valor + pc.printf("resp_digital_out_4 %d\r\n", resp_digital_out_4); // Imprimo en terminal lo que esta enviando desde el mote. + + ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5); // Para el RTD + } + + if (resp_digital_out_7 != 0){ + // Envia trama de lectura + buf[0] = (0xDD); // Codigo + buf[1] = resp_digital_out_7; // paquete id + buf[2] = (0xD0); // A1| A0| D1| D0 + buf[3] = (10); // Posicion + buf[4] = LED_SET_D7; // Valor + pc.printf("resp_digital_out_7 %d\r\n", resp_digital_out_7); // Imprimo en terminal lo que esta enviando desde el mote. + + ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5); // Para el RTD + } wait_ms(100); }