Gustavo Belduma
/
nRF51822_SimpleControls_1
main.cpp@12:ff38af85a4ba, 2016-11-04 (annotated)
- Committer:
- Gustavo_Eduardo338
- Date:
- Fri Nov 04 20:19:08 2016 +0000
- Revision:
- 12:ff38af85a4ba
- Parent:
- 11:965d5afe3a63
Version Estable
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dixysleo | 0:58e350255405 | 1 | /* |
dixysleo | 0:58e350255405 | 2 | Copyright (c) 2012-2014 RedBearLab |
dixysleo | 0:58e350255405 | 3 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 5 | and associated documentation files (the "Software"), to deal in the Software without restriction, |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 6 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 7 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, |
dixysleo | 0:58e350255405 | 8 | subject to the following conditions: |
dixysleo | 0:58e350255405 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. |
dixysleo | 0:58e350255405 | 10 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 12 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 13 | PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 14 | FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
dixysleo | 0:58e350255405 | 15 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
dixysleo | 0:58e350255405 | 16 | |
dixysleo | 0:58e350255405 | 17 | */ |
dixysleo | 0:58e350255405 | 18 | |
dixysleo | 0:58e350255405 | 19 | #include "mbed.h" |
dixysleo | 0:58e350255405 | 20 | #include "ble/BLE.h" |
dixysleo | 0:58e350255405 | 21 | #include "GattCallbackParamTypes.h" |
dixysleo | 0:58e350255405 | 22 | |
dixysleo | 0:58e350255405 | 23 | #define BLE_UUID_TXRX_SERVICE 0x0000 /**< The UUID of the Nordic UART Service. */ |
dixysleo | 0:58e350255405 | 24 | #define BLE_UUID_TX_CHARACTERISTIC 0x0002 /**< The UUID of the TX Characteristic. */ |
dixysleo | 0:58e350255405 | 25 | #define BLE_UUIDS_RX_CHARACTERISTIC 0x0003 /**< The UUID of the RX Characteristic. */ |
dixysleo | 0:58e350255405 | 26 | |
dixysleo | 0:58e350255405 | 27 | #define TXRX_BUF_LEN 20 |
dixysleo | 0:58e350255405 | 28 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 29 | #define ON 1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 30 | #define OFF 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 31 | #define IN 1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 32 | #define OUT 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 33 | #define PWM 2 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 34 | #define NONE -1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 35 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 36 | //static int MODE_MOTE; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 37 | //Solo puede estar definido un solo Board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 38 | //#define nRF51-DK_board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 39 | #define redBearLab_board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 40 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 41 | #ifdef nRF51-DK_board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 42 | //Aqui se define el hardware del nRF51-DK |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 43 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 44 | //Analog in |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 45 | #define A0 P0_1 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 46 | #define A1 P0_2 //Analog 1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 47 | #define A2 P0_3 //Analog 2 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 48 | #define A3 P0_4 //Analog 3 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 49 | #define A4 P0_5 //Analog 4 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 50 | #define A5 P0_6 //Analog 5 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 51 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 52 | //Digital |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 53 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 54 | #define D0 P0_14 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 55 | #define D1 P0_12 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 56 | #define D2 P0_13 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 57 | #define D3 P0_15 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 58 | #define D4 P0_21 //Digital I/O (LED 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 59 | #define D5 P0_22 //Digital I/O (LED 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 60 | #define D6 P0_23 //Digital I/O (LED 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 61 | #define D7 P0_24 //Digital I/O (LED 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 62 | #define D8 P0_17 //Digital I/O (BUTTON 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 63 | #define D9 P0_19 //Digital I/O (BUTTON 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 64 | #define D10 P0_18 //Digital I/O (BUTTON 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 65 | #define D11 P0_20 //Digital I/O (BUTTON 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 66 | #define D12 P0_7 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 67 | #define D13 P0_30 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 68 | #define D14 P0_8 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 69 | #define D15 P0_16 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 70 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 71 | //Aplicacion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 72 | #define LED_1 P0_21 //Digital I/O (LED 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 73 | #define LED_2 P0_22 //Digital I/O (LED 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 74 | #define LED_3 P0_23 //Digital I/O (LED 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 75 | #define LED_4 P0_24 //Digital I/O (LED 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 76 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 77 | #define BTN_1 P0_17 //Digital I/O (BUTTON 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 78 | #define BTN_2 P0_18 //Digital I/O (BUTTON 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 79 | #define BTN_3 P0_19 //Digital I/O (BUTTON 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 80 | #define BTN_4 P0_20 //Digital I/O (BUTTON 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 81 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 82 | // Aqui se acaba la configuracion del board NRF51-DK |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 83 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 84 | #else |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 85 | //Aqui se define el hardware del redBearLab |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 86 | //Analog in |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 87 | #define A0 P0_1 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 88 | #define A1 P0_2 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 89 | #define A2 P0_3 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 90 | #define A3 P0_4 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 91 | #define A4 P0_5 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 92 | #define A5 P0_6 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 93 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 94 | //Digital |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 95 | #define D0 P0_11 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 96 | #define D1 P0_9 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 97 | #define D2 P0_10 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 98 | #define D3 P0_8 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 99 | #define D4 P0_21 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 100 | #define D5 P0_23 //Digital I/O (PWM RBL) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 101 | #define D6 P0_16 //Digital I/O (PWM RBL) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 102 | #define D7 P0_17 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 103 | #define D8 P0_19 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 104 | #define D9 P0_18 //Digital I/O (PWM RBL) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 105 | #define D10 P0_14 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 106 | #define D11 P0_12 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 107 | #define D12 P0_13 //Digital I/O (LED RBL) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 108 | #define D13 P0_15 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 109 | #define D14 P0_29 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 110 | #define D15 P0_28 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 111 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 112 | //Aplicacion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 113 | #define LED_1 P0_21 //Digital I/O (LED 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 114 | #define LED_2 P0_23 //Digital I/O (LED 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 115 | #define LED_3 P0_16 //Digital I/O (LED 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 116 | #define LED_4 P0_17 //Digital I/O (LED 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 117 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 118 | #define BTN_1 P0_11 //Digital I/O (BUTTON 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 119 | #define BTN_2 P0_9 //Digital I/O (BUTTON 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 120 | #define BTN_3 P0_10 //Digital I/O (BUTTON 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 121 | #define BTN_4 P0_8 //Digital I/O (BUTTON 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 122 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 123 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 124 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 125 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 126 | // Aqui se acabo la definicion del board REDBEARLAB |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 127 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 128 | /**** Aqui se definen los pines necesarios independientemente del board seleccionado ****************** |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 129 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 130 | Instrucciones: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 131 | Pines digitales --> |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 132 | ON --> Usado |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 133 | OFF --> No sera usado |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 134 | IN --> Entrada |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 135 | OUT --> Salida |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 136 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 137 | Pines Analogicos --> |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 138 | ON --> Usado |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 139 | OFF --> No sera usado |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 140 | Valor del TED en numero reales, ejemplo 39.1, sino se va a usar se queda con 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 141 | ********************************************************************************************************/ |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 142 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 143 | #define A0_USO OFF //-> Divisor de voltaje para medir bateria VDD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 144 | #define A1_USO ON //-> Temperatura PT1000 (Borneras Shield de pruebas) Borneras |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 145 | #define A2_USO OFF //-> Temperatura PT1000 (Borneras Shield de pruebas) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 146 | #define A3_USO OFF //-> Humedad (Borneras Shield de pruebas) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 147 | #define A4_USO OFF //-> Humedad (Borneras Shield de pruebas) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 148 | #define A5_USO OFF //-> Conectarlo al LM35 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 149 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 150 | #define A0_TED 39.10 //Volts, bateria |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 151 | #define A1_TED 39.10 // ºC temperatura PT 1000 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 152 | #define A2_TED 39.10 // ºC temperatura PT 1000 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 153 | #define A3_TED 39.10 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 154 | #define A4_TED 39.10 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 155 | #define A5_TED 39.10 // ºC temperatura ambiental con el LM35 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 156 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 157 | #define D0_TYPE NONE // Ejemplo: OUT |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 158 | #define D1_TYPE NONE // Ejemplo: IN |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 159 | #define D2_TYPE NONE // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 160 | #define D3_TYPE NONE // Led encienden con 1 |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 161 | #define D4_TYPE OUT // Led encienden con 0 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 162 | #define D5_TYPE NONE // Led encienden con 0 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 163 | #define D6_TYPE PWM // Led encienden con 1 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 164 | #define D7_TYPE OUT // Pushbuttons (Activos en bajo) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 165 | #define D8_TYPE IN // Pushbuttons (Activos en bajo) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 166 | #define D9_TYPE NONE // DIP Switch 1 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 167 | #define D10_TYPE NONE // DIP Switch 2 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 168 | #define D11_TYPE NONE // DIP Switch 3 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 169 | #define D12_TYPE NONE // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 170 | #define D13_TYPE NONE // DIP Switch 4 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 171 | #define D14_TYPE NONE // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 172 | #define D15_TYPE NONE // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 173 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 174 | //Macros de mbed |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 175 | /*** Aqui Se definen todas macros en funcion de si el bit esta ON u OFF ************ |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 176 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 177 | Estos son las macors ya definidas: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 178 | DigitalOut LED_SET(DIGITAL_OUT_PIN); //Modo de uso --> LED_SET = 1 o LED_SET = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 179 | DigitalIn BUTTON(DIGITAL_IN_PIN); //Modo de uso --> if (BUTTON != old_state) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 180 | PwmOut PWM(PWM_PIN); //Modo de uso --> PWM = value; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 181 | AnalogIn ANALOGTEMP(ANALOG_IN_PIN); //Modo de uso -> float s = ANALOG_A0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 182 | AnalogIn ANALOGBAT(ANALOG_IN_BAT); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 183 | Servo MYSERVO(SERVO_PIN); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 184 | *************************************************************************************/ |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 185 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 186 | //Macros analogicas |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 187 | AnalogIn ANALOG_A0(A0); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 188 | AnalogIn ANALOG_A1(A1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 189 | AnalogIn ANALOG_A2(A2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 190 | AnalogIn ANALOG_A3(A3); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 191 | AnalogIn ANALOG_A4(A4); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 192 | AnalogIn ANALOG_A5(A5); //Temperatura ambiental con LM35 |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 193 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 194 | // Indica si alguien esta conectado al dispositivo. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 195 | DigitalOut PIN_CONNECT(D13); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 196 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 197 | #if D2_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 198 | DigitalIn PIN_D2(D2); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 199 | #elif D2_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 200 | DigitalOut PIN_D2(D2); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 201 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 202 | int PIN_D2 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 203 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 204 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 205 | #if D3_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 206 | DigitalIn PIN_D3(D3); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 207 | #elif D3_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 208 | DigitalOut PIN_D3(D3); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 209 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 210 | int PIN_D3 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 211 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 212 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 213 | #if D4_TYPE == NONE |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 214 | static int PIN_D4 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 215 | #elif D4_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 216 | DigitalIn PIN_D4(D4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 217 | #elif D4_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 218 | DigitalOut PIN_D4(D4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 219 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 220 | int PIN_D4 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 221 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 222 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 223 | #if D5_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 224 | DigitalIn PIN_D5(D5); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 225 | #elif D5_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 226 | DigitalOut PIN_D5(D5); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 227 | #elif D5_TYPE == PWM |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 228 | PwmOut PIN_D5(D5); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 229 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 230 | int PIN_D5 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 231 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 232 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 233 | #if D6_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 234 | DigitalIn PIN_D6(D6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 235 | #elif D6_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 236 | DigitalOut PIN_D6(D6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 237 | #elif D6_TYPE == PWM |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 238 | PwmOut PIN_D6(D6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 239 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 240 | int PIN_D6 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 241 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 242 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 243 | #if D7_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 244 | DigitalIn PIN_D7(D7); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 245 | #elif D7_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 246 | DigitalOut PIN_D7(D7); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 247 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 248 | int PIN_D7 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 249 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 250 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 251 | #if D8_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 252 | DigitalIn PIN_D8(D8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 253 | #elif D8_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 254 | DigitalOut PIN_D8(D8); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 255 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 256 | int PIN_D8 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 257 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 258 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 259 | #if D9_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 260 | DigitalIn PIN_D9(D9); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 261 | #elif D9_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 262 | DigitalOut PIN_D9(D9); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 263 | #elif D9_TYPE == PWM |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 264 | PwmOut PIN_D9(D9); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 265 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 266 | int PIN_D9 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 267 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 268 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 269 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 270 | #if D10_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 271 | DigitalIn PIN_D10(D10); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 272 | #elif D10_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 273 | DigitalOut PIN_D10(D10); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 274 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 275 | int PIN_D10 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 276 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 277 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 278 | #if D11_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 279 | DigitalIn PIN_D11(D11); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 280 | #elif D11_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 281 | DigitalOut PIN_D11(D11); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 282 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 283 | int PIN_D11 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 284 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 285 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 286 | #if D12_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 287 | DigitalIn PIN_D12(D12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 288 | #elif D12_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 289 | DigitalOut PIN_D12(D12); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 290 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 291 | int PIN_D12 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 292 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 293 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 294 | #if D13_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 295 | DigitalIn PIN_D13(D13); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 296 | #elif D13_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 297 | DigitalOut PIN_D13(D13); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 298 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 299 | int PIN_D13 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 300 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 301 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 302 | #if D14_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 303 | DigitalIn PIN_D14(D14); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 304 | #elif D14_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 305 | DigitalOut PIN_D14(D14); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 306 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 307 | int PIN_D14 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 308 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 309 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 310 | #if D15_TYPE == IN |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 311 | DigitalIn PIN_D15(D15); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 312 | #elif D15_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 313 | DigitalOut PIN_D15(D15); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 314 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 315 | int PIN_D15 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 316 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 317 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 318 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 319 | //Hasta aqui la definicion de macos |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 320 | //Digital Inputs --> DATA VALUE |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 321 | uint16_t DigitalInput_DATA = 0x0000; // Mapa de bits con los valores de la entrada digital segun la posicion |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 322 | uint16_t DigitalOutput_DATA = 0x0000; // Mapa de bits con los valores de la entrada digital segun la posicion |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 323 | uint16_t ESTADO_ENTRADAS_DIGITALES = 0x0000; // Mapa de bits de los estados de las entradas digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 324 | uint16_t ESTADO_SALIDAS_DIGITALES = 0x0000; // Mapa de bits de las salidas digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 325 | uint16_t ESTADO_ENTRADAS_DIGITALES_OLD = 0x0000;// Almacena temporalmente el estado de las salidas digitales. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 326 | uint16_t PAQUETE_ID = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 327 | static bool CONNECTED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 328 | float AnalogInput_Ted [6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; //Si el TED es cero, es que no está en uso |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 329 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 330 | //Digital input, cantidad, posiciones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 331 | uint16_t DigitalInput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 332 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 333 | //Digital output, cantidad, pocisiones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 334 | uint16_t DigitalOutput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 335 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 336 | uint16_t DigitalPwm_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 337 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 338 | //Digital input, cantidad, posiciones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 339 | uint8_t AnalogInput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 8 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 340 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 341 | //Digital output, cantidad, pocisiones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 342 | uint8_t AnalogOutput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 8 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 343 | |
dixysleo | 0:58e350255405 | 344 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 345 | // Declarando los pines |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 346 | //static int32_t send_config = 0; |
dixysleo | 0:58e350255405 | 347 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 348 | static int8_t SEND_CONFIG_GENERAL = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 349 | static int8_t SEND_CONFIG_ANALOG_0, SEND_CONFIG_ANALOG_1, SEND_CONFIG_ANALOG_2, SEND_CONFIG_ANALOG_3, SEND_CONFIG_ANALOG_4, SEND_CONFIG_ANALOG_5; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 350 | static bool publish_D0; // Indica si es necesario informar al gateway sobre estado de las salidas digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 351 | static bool publish_D1; // Indica si es necesario informar al gateway sobre estado de las entradas digitales |
Gustavo_Eduardo338 | 8:c4130ea78471 | 352 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 353 | BLE ble; |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 354 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 355 | // Permite imprimir mensajes en la consola |
dixysleo | 0:58e350255405 | 356 | Serial pc(USBTX, USBRX); |
dixysleo | 0:58e350255405 | 357 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 358 | // Para las entradas digitales (Botones) |
dixysleo | 0:58e350255405 | 359 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 360 | // Para las entradas analogicas (Sensores) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 361 | static float value_A5, value_A4, value_A3, value_A2, value_A1, value_A0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 362 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 363 | |
dixysleo | 0:58e350255405 | 364 | // The Nordic UART Service |
dixysleo | 0:58e350255405 | 365 | static const uint8_t uart_base_uuid[] = {0x71, 0x3D, 0, 0, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E}; |
dixysleo | 0:58e350255405 | 366 | static const uint8_t uart_tx_uuid[] = {0x71, 0x3D, 0, 3, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E}; |
dixysleo | 0:58e350255405 | 367 | static const uint8_t uart_rx_uuid[] = {0x71, 0x3D, 0, 2, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E}; |
dixysleo | 0:58e350255405 | 368 | static const uint8_t uart_base_uuid_rev[] = {0x1E, 0x94, 0x8D, 0xF1, 0x48, 0x31, 0x94, 0xBA, 0x75, 0x4C, 0x3E, 0x50, 0, 0, 0x3D, 0x71}; |
dixysleo | 0:58e350255405 | 369 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 370 | // Trama de Configuracion de los Pines (a). |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 371 | static uint8_t TRAMA_CONFIG_GENERAL[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00}; // Length 12 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 372 | static uint8_t TRAMA_CONFIG_ANALOG[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // Length 6 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 373 | static uint8_t LECTURA_DIGITAL[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // Length 6 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 374 | static uint8_t LECTURA_ANALOGICA[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // Length 5 |
dixysleo | 0:58e350255405 | 375 | |
dixysleo | 0:58e350255405 | 376 | uint8_t txPayload[TXRX_BUF_LEN] = {0,}; |
dixysleo | 0:58e350255405 | 377 | uint8_t rxPayload[TXRX_BUF_LEN] = {0,}; |
dixysleo | 0:58e350255405 | 378 | |
dixysleo | 0:58e350255405 | 379 | GattCharacteristic txCharacteristic (uart_tx_uuid, txPayload, 1, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE); |
dixysleo | 0:58e350255405 | 380 | GattCharacteristic rxCharacteristic (uart_rx_uuid, rxPayload, 1, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY); |
dixysleo | 0:58e350255405 | 381 | GattCharacteristic *uartChars[] = {&txCharacteristic, &rxCharacteristic}; |
dixysleo | 0:58e350255405 | 382 | GattService uartService(uart_base_uuid, uartChars, sizeof(uartChars) / sizeof(GattCharacteristic *)); |
dixysleo | 0:58e350255405 | 383 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 384 | |
dixysleo | 0:58e350255405 | 385 | // https://developer.mbed.org/forum/repo-61676-BLE_GAP_Example-community/topic/17193/ |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 386 | void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *) |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 387 | { |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 388 | BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); |
dixysleo | 0:58e350255405 | 389 | pc.printf("Disconnected \r\n"); |
dixysleo | 0:58e350255405 | 390 | pc.printf("Restart advertising \r\n"); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 391 | ble.startAdvertising(); |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 392 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 393 | SEND_CONFIG_GENERAL = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 394 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 395 | // En caso de no completarse el envio de la configuraciones las detenemos por completo, y dehabilitamos el envio. |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 396 | SEND_CONFIG_ANALOG_0 = OFF; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 397 | SEND_CONFIG_ANALOG_1 = OFF; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 398 | SEND_CONFIG_ANALOG_2 = OFF; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 399 | SEND_CONFIG_ANALOG_3 = OFF; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 400 | SEND_CONFIG_ANALOG_4 = OFF; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 401 | SEND_CONFIG_ANALOG_5 = OFF; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 402 | CONNECTED = false; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 403 | PIN_CONNECT = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 404 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 405 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 406 | // Carga la configuración de las entradas digitales del MOTE. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 407 | void readDigitalInputs_Value () |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 408 | { |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 409 | DigitalInput_DATA = (uint16_t) (((D15_TYPE == IN ? 1:0) << 15) | ((D14_TYPE == IN?1:0)<< 14) | ((D13_TYPE == IN ?1:0) << 13) | ((D12_TYPE == IN ?1:0) << 12) | ((D11_TYPE == IN ?1:0) << 11) | ((D10_TYPE == IN? 1:0) << 10) | ((D9_TYPE == IN? 1:0) << 9) | ((D8_TYPE == IN ? 1:0) << 8) | ((D7_TYPE == IN ? 1:0) << 7) | ((D6_TYPE == IN ? 1:0) << 6) |((D5_TYPE == IN ? 1:0) << 5) | ((D4_TYPE == IN ? 1:0) << 4) | ((D3_TYPE == IN ? 1:0) << 3) | ((D2_TYPE == IN ? 1:0) << 2)); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 410 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 411 | // Crea el Mapa de bits de las posiciones ocupadas de los pines digitales de salidas. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 412 | void readActuadoresDigitales() |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 413 | { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 414 | DigitalOutput_DATA = (uint16_t) ((D15_TYPE == OUT ? 1 : 0) << 15) | ((D14_TYPE == OUT ? 1 : 0) << 14) | ((D13_TYPE == OUT ? 1 : 0) << 13) | ((D12_TYPE == OUT ? 1 : 0) << 12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 415 | DigitalOutput_DATA |= (uint16_t) ((D11_TYPE == OUT ? 1 : 0) << 11) | ((D10_TYPE == OUT ? 1 : 0) << 10) | ((D9_TYPE == OUT ? 1 : 0) << 9) | ((D8_TYPE == OUT ? 1 : 0) << 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 416 | DigitalOutput_DATA |= (uint16_t) ((D7_TYPE == OUT ? 1 : 0) << 7) | ((D6_TYPE == OUT ? 1 : 0) << 6) | ((D5_TYPE == OUT ? 1 : 0) << 5) | ((D4_TYPE == OUT ? 1 : 0) << 4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 417 | DigitalOutput_DATA |= (uint16_t) ((D3_TYPE == OUT ? 1 : 0) << 3) | ((D2_TYPE == OUT ? 1 : 0) << 2) ; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 418 | } |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 419 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 420 | // Crea el Mapa de bits de los estados de los pines digitales de entrada. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 421 | void cargarEstadoEntradasDigitales() |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 422 | { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 423 | ESTADO_ENTRADAS_DIGITALES = (uint16_t) ((D15_TYPE == IN ? PIN_D15 : 0) << 15) | ((D14_TYPE == IN ? PIN_D14 : 0) << 14) | ((D13_TYPE == IN ? PIN_D13 : 0) << 13) | ((D12_TYPE == IN ? PIN_D12 : 0) << 12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 424 | ESTADO_ENTRADAS_DIGITALES |= (uint16_t) ((D11_TYPE == IN ? PIN_D11 : 0) << 11) | ((D10_TYPE == IN ? PIN_D10 : 0) << 10) | ((D9_TYPE == IN ? PIN_D9 : 0) << 9) | ((D8_TYPE == IN ? PIN_D8 : 0) << 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 425 | ESTADO_ENTRADAS_DIGITALES |= (uint16_t) ((D7_TYPE == IN ? PIN_D7 : 0) << 7) | ((D6_TYPE == IN ? PIN_D6 : 0) << 6) | ((D5_TYPE == IN ? PIN_D5 : 0) << 5) | ((D4_TYPE == IN ? PIN_D4 : 0) << 4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 426 | ESTADO_ENTRADAS_DIGITALES |= (uint16_t) ((D3_TYPE == IN ? PIN_D3 : 0) << 3) | ((D2_TYPE == IN ? PIN_D2 : 0) << 2) ; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 427 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 428 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 429 | // Crea el Mapa de bits de los estados de los pines digitales de salida. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 430 | void cargarEstadosSalidasDigitales() |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 431 | { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 432 | ESTADO_SALIDAS_DIGITALES = (uint16_t) ((D15_TYPE == OUT ? PIN_D15 : 0) << 15) | ((D14_TYPE == OUT ? PIN_D14 : 0) << 14) | ((D13_TYPE == OUT ? PIN_D13 : 0) << 13) | ((D12_TYPE == OUT ? PIN_D12 : 0) << 12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 433 | ESTADO_SALIDAS_DIGITALES |= (uint16_t) ((D11_TYPE == OUT ? PIN_D11 : 0) << 11) | ((D10_TYPE == OUT ? PIN_D10 : 0) << 10) | ((D9_TYPE == OUT ? PIN_D9 : 0) << 9) | ((D8_TYPE == OUT ? PIN_D8 : 0) << 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 434 | ESTADO_SALIDAS_DIGITALES |= (uint16_t) ((D7_TYPE == OUT ? PIN_D7 : 0) << 7) | ((D6_TYPE == OUT ? PIN_D6 : 0) << 6) | ((D5_TYPE == OUT ? PIN_D5 : 0) << 5) | ((D4_TYPE == OUT ? PIN_D4 : 0) << 4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 435 | ESTADO_SALIDAS_DIGITALES |= (uint16_t) ((D3_TYPE == OUT ? PIN_D3 : 0) << 3) | ((D2_TYPE == OUT ? PIN_D2 : 0) << 2) ; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 436 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 437 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 438 | //Funcion para crear los extra bytes |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 439 | void makeExtraBytes_CONFIG () |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 440 | { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 441 | // Teds de los Analog inputs |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 442 | AnalogInput_Ted [0] = A0_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 443 | AnalogInput_Ted [1] = A1_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 444 | AnalogInput_Ted [2] = A2_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 445 | AnalogInput_Ted [3] = A3_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 446 | AnalogInput_Ted [4] = A4_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 447 | AnalogInput_Ted [5] = A5_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 448 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 449 | DigitalInput_Pos = (uint16_t) ((D15_TYPE == IN ? 1:0) << 15) | ((D14_TYPE == IN ? 1:0) << 14) | ((D13_TYPE == IN ? 1:0) << 13)| ((D12_TYPE == IN ? 1:0) << 12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 450 | DigitalInput_Pos |= (uint16_t) ((D11_TYPE == IN ? 1:0) << 11) | ((D10_TYPE == IN ? 1:0) << 10) | ((D9_TYPE == IN ? 1:0) << 9) | ((D8_TYPE == IN ? 1:0) << 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 451 | DigitalInput_Pos |= (uint16_t) ((D7_TYPE == IN ? 1:0) << 7) | ((D6_TYPE == IN ? 1:0) << 6) | ((D5_TYPE == IN ? 1:0) << 5) | ((D4_TYPE == IN ? 1:0) << 4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 452 | DigitalInput_Pos |= (uint16_t) ((D3_TYPE == IN ? 1:0) << 3) | ((D2_TYPE == IN ? 1:0) << 2) | ((D13_TYPE == IN ? 1:0) << 1) | ((D12_TYPE == IN ? 1:0)); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 453 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 454 | DigitalOutput_Pos = (uint16_t) ((D15_TYPE == OUT ? 1:0) << 15) | ((D14_TYPE == OUT ? 1:0) << 14) | ((D13_TYPE == OUT ? 1:0) << 13)| ((D12_TYPE == OUT ? 1:0) << 12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 455 | DigitalOutput_Pos |= (uint16_t) ((D11_TYPE == OUT ? 1:0) << 11) | ((D10_TYPE == OUT ? 1:0) << 10) | ((D9_TYPE == OUT ? 1:0) << 9) | ((D8_TYPE == OUT ? 1:0) << 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 456 | DigitalOutput_Pos |= (uint16_t) ((D7_TYPE == OUT ? 1:0) << 7) | ((D6_TYPE == OUT ? 1:0) << 6) | ((D5_TYPE == OUT ? 1:0) << 5) | ((D4_TYPE == OUT ? 1:0) << 4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 457 | DigitalOutput_Pos |= (uint16_t) ((D3_TYPE == OUT ? 1:0) << 3) | ((D2_TYPE == OUT ? 1:0) << 2) | ((D13_TYPE == OUT ? 1:0) << 1) | ((D12_TYPE == OUT ? 1:0)); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 458 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 459 | DigitalPwm_Pos = (uint16_t) ((D15_TYPE == PWM ? 1:0) << 15)| ((D14_TYPE == PWM ? 1:0) << 14) | ((D13_TYPE == PWM ? 1:0) << 13)| ((D12_TYPE == PWM ? 1:0) << 12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 460 | DigitalPwm_Pos |= (uint16_t) ((D11_TYPE == PWM ? 1:0) << 11) | ((D10_TYPE == PWM ? 1:0) << 10) | ((D9_TYPE == PWM ? 1:0) << 9) | ((D8_TYPE == PWM ? 1:0) << 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 461 | DigitalPwm_Pos |= (uint16_t) ((D7_TYPE == PWM ? 1:0) << 7) | ((D6_TYPE == PWM ? 1:0) << 6) | ((D5_TYPE == PWM ? 1:0) << 5) | ((D4_TYPE == PWM ? 1:0) << 4); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 462 | DigitalPwm_Pos |= (uint16_t) ((D3_TYPE == PWM ? 1:0) << 3) | ((D2_TYPE == PWM ? 1:0) << 2) | ((D13_TYPE == PWM ? 1:0) << 1) | ((D12_TYPE == PWM ? 1:0)); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 463 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 464 | AnalogInput_Pos = (uint16_t) ((A5_USO << 5) | (A4_USO << 4) | (A3_USO << 3) | (A2_USO << 2) | (A1_USO << 1) | (A0_USO << 0)); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 465 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 466 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 467 | //para probar |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 468 | pc.printf("DigitalInput_Pos = %x \r\n", DigitalInput_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 469 | pc.printf("DigitalOutput_Pos = %x \r\n", DigitalOutput_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 470 | pc.printf("AnalogInput_Pos = %x \r\n", AnalogInput_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 471 | pc.printf("AnalogOutput_Pos = %x \r\n", DigitalPwm_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 472 | pc.printf("---------------------------\r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 473 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 474 | // Definimos la trama de configuracion general |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 475 | TRAMA_CONFIG_GENERAL [0] = 0xC1; // Codigo de configuracion general |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 476 | TRAMA_CONFIG_GENERAL [1] = 0xA1; // Codigo de entradas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 477 | TRAMA_CONFIG_GENERAL [2] = AnalogInput_Pos; // Valor de las entradas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 478 | TRAMA_CONFIG_GENERAL [3] = 0xA0; // Codigo de las salidas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 479 | TRAMA_CONFIG_GENERAL [4] = (DigitalPwm_Pos >> 8); // Valor de las salidas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 480 | TRAMA_CONFIG_GENERAL [5] = (DigitalPwm_Pos); // Valor de las salidas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 481 | TRAMA_CONFIG_GENERAL [6] = 0xD1; // Codigo de las entradas digitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 482 | TRAMA_CONFIG_GENERAL [7] = (DigitalInput_Pos >> 8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 483 | TRAMA_CONFIG_GENERAL [8] = DigitalInput_Pos; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 484 | TRAMA_CONFIG_GENERAL [9] = 0xD0; // Codigo de las salidas difitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 485 | TRAMA_CONFIG_GENERAL [10] = (DigitalOutput_Pos>> 8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 486 | TRAMA_CONFIG_GENERAL [11] = DigitalOutput_Pos; |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 487 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 488 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 489 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 490 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 491 | // Ingresa por este metdo unicamente la primera vez que se conecta al mote. |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 492 | // Tomado desde: https://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_LEDBlinker/file/dc392bde2b3c/main.cpp |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 493 | void connectionCallback(const Gap::ConnectionCallbackParams_t *) |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 494 | { |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 495 | pc.printf("connectionCallback \r\n"); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 496 | PIN_CONNECT = 1; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 497 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 498 | makeExtraBytes_CONFIG(); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 499 | SEND_CONFIG_GENERAL = 1; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 500 | CONNECTED = true; |
dixysleo | 0:58e350255405 | 501 | } |
dixysleo | 0:58e350255405 | 502 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 503 | // Recepta las caracteristicas que se desea escribir en el mote. |
dixysleo | 0:58e350255405 | 504 | void WrittenHandler(const GattWriteCallbackParams *Handler) |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 505 | { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 506 | //pc.printf("WrittenHandler(const GattWriteCallbackParams *Handler) \r\n"); |
dixysleo | 0:58e350255405 | 507 | uint8_t buf[TXRX_BUF_LEN]; |
dixysleo | 0:58e350255405 | 508 | uint16_t bytesRead, index; |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 509 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 510 | if (Handler->handle == txCharacteristic.getValueAttribute().getHandle()) { |
dixysleo | 0:58e350255405 | 511 | ble.readCharacteristicValue(txCharacteristic.getValueAttribute().getHandle(), buf, &bytesRead); |
dixysleo | 0:58e350255405 | 512 | memset(txPayload, 0, TXRX_BUF_LEN); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 513 | memcpy(txPayload, buf, TXRX_BUF_LEN); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 514 | |
dixysleo | 0:58e350255405 | 515 | for(index=0; index<bytesRead; index++) |
dixysleo | 0:58e350255405 | 516 | pc.putc(buf[index]); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 517 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 518 | //pc.printf("Leemos la trama: \r\n"); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 519 | //for(index=0; index<bytesRead; index++) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 520 | //pc.printf("buf[%02x]: %02x\r\n", index, buf[index]); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 521 | //} |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 522 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 523 | // Desde el telefono desactiva el envio de tramas de configuracion general o de cada sensor. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 524 | if (buf[0] == 0xDC) { // Dato Configuracion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 525 | if(buf[1] == 0xC1) { // Hace referencia a la configuración general |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 526 | SEND_CONFIG_GENERAL = buf[2]; // Debe ser cero, hace que ya no se vuelva a enviar la conf general del mote |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 527 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 528 | // Comprueba si estan habilitados las salidas analogicas, y las |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 529 | // inicializa a 1 para que mas adelante envie la configuracion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 530 | // de cada sensor |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 531 | SEND_CONFIG_ANALOG_0 = (A0_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 532 | SEND_CONFIG_ANALOG_1 = (A1_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 533 | SEND_CONFIG_ANALOG_2 = (A2_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 534 | SEND_CONFIG_ANALOG_3 = (A3_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 535 | SEND_CONFIG_ANALOG_4 = (A4_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 536 | SEND_CONFIG_ANALOG_5 = (A5_USO == ON)?1:0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 537 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 538 | publish_D1 = true; // bandera a true, para que el Mote deba obligatoriamente enviar al gateway el estado de las entradas digitales. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 539 | publish_D0 = true; // bandera a true, para que el Mote deba obligatoriamente enviar al gateway el estado de las entradas digitales. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 540 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 541 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 542 | // Maneja las Tramas de confirmacion de la configuracion detallada de cada senssor analogico |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 543 | if(buf[1] == 0xC2) { // Hace referencia a la configuracion detallada por sensor. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 544 | switch (buf[2]) { // Evalua la posición |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 545 | case 0x00: // 0xA0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 546 | SEND_CONFIG_ANALOG_0 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 547 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 548 | case 0x01: // 0xA1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 549 | SEND_CONFIG_ANALOG_1 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 550 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 551 | case 0x02: // 0xA2 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 552 | SEND_CONFIG_ANALOG_2 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_2 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 553 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 554 | case 0x03: // 0xA3 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 555 | SEND_CONFIG_ANALOG_3 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_3 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 556 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 557 | case 0x04: // 0xA4 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 558 | SEND_CONFIG_ANALOG_4 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_4 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 559 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 560 | case 0x05: // 0xA5 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 561 | SEND_CONFIG_ANALOG_5 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_5 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 562 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 563 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 564 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 565 | }else if (buf[0] == 0xAD) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 566 | // Desde el gateway asignamos el nuevo valor del paquete id |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 567 | // de esta manera al ser el paquete id = 0, no volvera hacer enviado de nuevo las lecturas de digital out al gateway |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 568 | PAQUETE_ID = (((buf[1] << 8) & 0xFF00) | (buf[2] & 0xFF)); |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 569 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 570 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 571 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 572 | // Verifico si es una trama de Escitura. |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 573 | if(buf[0] == 0xEE) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 574 | PAQUETE_ID = (((buf[1] << 8) & 0xFF00) | (buf[2] & 0xFF)); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 575 | //pc.printf("PAQUETE_ID: %d\r\n", PAQUETE_ID); |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 576 | // Verifico si es un signal Digital Out |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 577 | if(buf[3] == 0xD0) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 578 | publish_D0 = true; // indica que el satado de las salidas digitales deben ser enviadas para informar al gateway el estado de las mismas. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 579 | // Evaluo sobre que pin se debe actuar. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 580 | switch (buf[4]) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 581 | case 0x02: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 582 | #if D2_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 583 | PIN_D2 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 584 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 585 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 586 | case 0x03: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 587 | #if D3_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 588 | PIN_D3 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 589 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 590 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 591 | case 0x04: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 592 | #if D4_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 593 | PIN_D4 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 594 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 595 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 596 | case 0x05: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 597 | #if D5_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 598 | PIN_D5 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 599 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 600 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 601 | case 0x06: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 602 | #if D6_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 603 | PIN_D6 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 604 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 605 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 606 | case 0x07: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 607 | #if D7_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 608 | PIN_D7 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 609 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 610 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 611 | case 0x08: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 612 | #if D8_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 613 | PIN_D8 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 614 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 615 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 616 | case 0x09: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 617 | #if D9_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 618 | PIN_D9 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 619 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 620 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 621 | case 0x10: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 622 | #if D10_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 623 | PIN_D10 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 624 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 625 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 626 | case 0x11: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 627 | #if D11_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 628 | PIN_D11 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 629 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 630 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 631 | case 0x12: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 632 | #if D12_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 633 | PIN_D12 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 634 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 635 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 636 | case 0x13: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 637 | #if D13_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 638 | PIN_D13 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 639 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 640 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 641 | case 0x14: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 642 | #if D14_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 643 | PIN_D14 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 644 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 645 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 646 | case 0x15: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 647 | #if D15_TYPE == OUT |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 648 | PIN_D15 = (buf[5] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 649 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 650 | break; |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 651 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 652 | // Verifico si es un signal Analog out |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 653 | } else if(buf[3] == 0xA0) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 654 | float value = (float)buf[5]/255; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 655 | bool enviar_trama = false; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 656 | int posicion = 0x00; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 657 | switch (buf[4]) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 658 | case 0x05: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 659 | #if D5_TYPE == PWM |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 660 | PIN_D5 = value; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 661 | posicion = 0x05; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 662 | enviar_trama = true; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 663 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 664 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 665 | case 0x06: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 666 | #if D6_TYPE == PWM |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 667 | PIN_D6 = value; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 668 | posicion = 0x06; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 669 | enviar_trama = true; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 670 | #endif |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 671 | break; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 672 | case 0x09: |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 673 | #if D9_TYPE == PWM |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 674 | PIN_D9 = value; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 675 | posicion = 0x09; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 676 | enviar_trama = true; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 677 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 678 | break; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 679 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 680 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 681 | if (enviar_trama){ |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 682 | LECTURA_DIGITAL[0] = 0xDD; // Codigo Datos |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 683 | LECTURA_DIGITAL[1] = 0xA0; // A0 --> Codigo Senial (Analog Output) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 684 | LECTURA_DIGITAL[2] = posicion; // Posicion de la interfaz |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 685 | LECTURA_DIGITAL[3] = (int8_t)(PAQUETE_ID >> 8); // primera parte del paquete |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 686 | LECTURA_DIGITAL[4] = (int8_t)PAQUETE_ID ; // segunda parte del paquete |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 687 | LECTURA_DIGITAL[5] = buf[5]; // Valor de las salidas digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 688 | PAQUETE_ID = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 689 | pc.printf("PWM LECTURA_DIGITAL %x \r\n", LECTURA_DIGITAL); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 690 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 6); // Para el RTD |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 691 | } |
dixysleo | 0:58e350255405 | 692 | } |
dixysleo | 0:58e350255405 | 693 | } |
dixysleo | 0:58e350255405 | 694 | } |
dixysleo | 0:58e350255405 | 695 | } |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 696 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 697 | |
dixysleo | 0:58e350255405 | 698 | /* |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 699 | * Desde este metodo envia las tramas al Gateway. |
dixysleo | 0:58e350255405 | 700 | */ |
dixysleo | 0:58e350255405 | 701 | void m_status_check_handle(void) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 702 | { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 703 | // Verifica si alguien esta conectado para enviar las tramas a través de Bluetooth. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 704 | if (CONNECTED){ |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 705 | if (SEND_CONFIG_GENERAL == 1) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 706 | // Envia la configuracion Genaral del Mote. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 707 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_GENERAL, 12); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 708 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 709 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 710 | // Envio de las tramas de Configuracion de los sensores. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 711 | // Evalua si se encuentra pendiente enviar la configuracion de los sensores. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 712 | if (SEND_CONFIG_ANALOG_0 == ON||SEND_CONFIG_ANALOG_1 == ON||SEND_CONFIG_ANALOG_2 == ON||SEND_CONFIG_ANALOG_3 == ON||SEND_CONFIG_ANALOG_4 == ON||SEND_CONFIG_ANALOG_5 == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 713 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 714 | TRAMA_CONFIG_ANALOG[0] = (0xC2); // Codigo que indica que la configuracion sera por cada Pin. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 715 | TRAMA_CONFIG_ANALOG[1] = (0x05); // Categoria puede ser: A (Actuador) | 5 (Sensor) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 716 | TRAMA_CONFIG_ANALOG[2] = (0xAA); // Tipo de Signal AA | DD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 717 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 718 | if (A0_USO == ON && SEND_CONFIG_ANALOG_0 == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 719 | TRAMA_CONFIG_ANALOG[3] = 0x00; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 720 | int16_t TED_PF = (int16_t) (256 * A0_TED); // Conversion Punto Fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 721 | TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 722 | TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 723 | pc.printf("SEND_CONFIG_ANALOG_0 \r\n"); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 724 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 725 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 726 | } else if (A1_USO == ON && SEND_CONFIG_ANALOG_1 == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 727 | TRAMA_CONFIG_ANALOG[3] = 0x01; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 728 | int16_t TED_PF = (int16_t) (256 * A1_TED); // Conversion Punto Fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 729 | TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 730 | TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 731 | pc.printf("SEND_CONFIG_ANALOG_1 \r\n"); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 732 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 733 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 734 | } else if (A2_USO == ON && SEND_CONFIG_ANALOG_2 == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 735 | TRAMA_CONFIG_ANALOG[3] = 0x02; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 736 | int16_t TED_PF = (int16_t) (256 * A2_TED); // Conversion Punto Fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 737 | TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 738 | TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 739 | pc.printf("SEND_CONFIG_ANALOG_2 \r\n"); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 740 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 741 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 742 | } else if (A3_USO == ON && SEND_CONFIG_ANALOG_3 == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 743 | TRAMA_CONFIG_ANALOG[3] = 0x03; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 744 | int16_t TED_PF = (int16_t) (256 * A3_TED); // Conversion Punto Fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 745 | TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 746 | TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 747 | pc.printf("SEND_CONFIG_ANALOG_3 \r\n"); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 748 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 749 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 750 | } else if (A4_USO == ON && SEND_CONFIG_ANALOG_4 == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 751 | TRAMA_CONFIG_ANALOG[3] = 0x04; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 752 | int16_t TED_PF = (int16_t) (256 * A4_TED); // Conversion Punto Fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 753 | TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 754 | TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 755 | pc.printf("SEND_CONFIG_ANALOG_4 \r\n"); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 756 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 757 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 758 | } else if (A5_USO == ON && SEND_CONFIG_ANALOG_5 == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 759 | TRAMA_CONFIG_ANALOG[3] = 0x05; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 760 | int16_t TED_PF = (int16_t) (256 * A5_TED); // Conversion Punto Fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 761 | TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 762 | TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 763 | pc.printf("SEND_CONFIG_ANALOG_5 %x , %x \r\n", TRAMA_CONFIG_ANALOG[4], TRAMA_CONFIG_ANALOG[5]); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 764 | //pc.printf("SEND_CONFIG_ANALOG_6 %x, %x, %x, %x, %x, %x, %x \r\n", TRAMA_CONFIG_ANALOG[0], TRAMA_CONFIG_ANALOG[1], TRAMA_CONFIG_ANALOG[2], TRAMA_CONFIG_ANALOG[3], TRAMA_CONFIG_ANALOG[4], TRAMA_CONFIG_ANALOG[5], TRAMA_CONFIG_ANALOG[6] ); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 765 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 766 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 767 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 768 | // Envio de las tramas de lecturas del Mote. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 769 | cargarEstadoEntradasDigitales(); // Leemos los estados digitales. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 770 | //pc.printf("ESTADO_ENTRADAS_DIGITALES_OLD %x - ESTADO_ENTRADAS_DIGITALES %x \r\n", ESTADO_ENTRADAS_DIGITALES_OLD, ESTADO_ENTRADAS_DIGITALES); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 771 | if (ESTADO_ENTRADAS_DIGITALES_OLD != ESTADO_ENTRADAS_DIGITALES || publish_D1) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 772 | if (publish_D1){ |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 773 | publish_D1 = false; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 774 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 775 | ESTADO_ENTRADAS_DIGITALES_OLD = ESTADO_ENTRADAS_DIGITALES; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 776 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 777 | LECTURA_DIGITAL[0] = 0xDD; // Codigo de lectura de datos |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 778 | LECTURA_DIGITAL[1] = 0xD1; // Digital Input |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 779 | LECTURA_DIGITAL[2] = (int8_t)(ESTADO_ENTRADAS_DIGITALES >> 8); // valores de las interfaces digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 780 | LECTURA_DIGITAL[3] = (int8_t)(ESTADO_ENTRADAS_DIGITALES); // valores de las interfaces digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 781 | pc.printf("Envio LECTURA_DIGITAL %x \r\n", ESTADO_ENTRADAS_DIGITALES); // Imprimo en terminal lo que esta enviando desde el mote. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 782 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 783 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 4); // Para el RTD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 784 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 785 | }else if (PAQUETE_ID != 0 || publish_D0) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 786 | if (publish_D0){ |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 787 | publish_D0 = false; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 788 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 789 | // Lecturas digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 790 | cargarEstadosSalidasDigitales(); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 791 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 792 | pc.printf("ESTADO_SALIDAS_DIGITALES: %x \r\n", ESTADO_SALIDAS_DIGITALES); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 793 | LECTURA_DIGITAL[0] = 0xDD; // Codigo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 794 | LECTURA_DIGITAL[1] = 0xD0; // D0 --> Digital Output |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 795 | LECTURA_DIGITAL[2] = (int8_t)(PAQUETE_ID >> 8); // primera parte del paquete |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 796 | LECTURA_DIGITAL[3] = (int8_t)PAQUETE_ID ; // segunda parte del paquete |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 797 | LECTURA_DIGITAL[4] = (int8_t)(ESTADO_SALIDAS_DIGITALES >> 8); // Valor de las salidas digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 798 | LECTURA_DIGITAL[5] = (int8_t)(ESTADO_SALIDAS_DIGITALES); // Valor de las salidas digitales |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 799 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 800 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 6); // Para el RTD |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 801 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 802 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 803 | // Envio de las tramas de las lecturas de los sensores habilitados. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 804 | if (SEND_CONFIG_GENERAL == 0) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 805 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 806 | LECTURA_ANALOGICA[0] = 0xDD; // Codigo Datos |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 807 | LECTURA_ANALOGICA[1] = 0xA1; // --> Analog Input (A1) |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 808 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 809 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 810 | // Si la configuracion ha sido enviada, envio las lecturas. Esta para cumplir con una secuencia. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 811 | if (A5_USO == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 812 | float s = ANALOG_A5; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 813 | if (value_A5 != s) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 814 | value_A5 = s; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 815 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 816 | uint16_t value = s * 1024; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 817 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 818 | float Vtemp = value * 0.0032080078125; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 819 | float Rtemp = (15111 / Vtemp) - 4630; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 820 | float Tempfinal = ((Rtemp - 1000) / 3.850); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 821 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 822 | //2- Conversion flotante a punto fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 823 | int16_t Temperature_PF = (int16_t) (256 * Tempfinal); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 824 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 825 | LECTURA_ANALOGICA[2] = 0x05; // --> Posicion del sensor |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 826 | LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 827 | LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 828 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 829 | pc.printf("ANALOG_A5 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 830 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 831 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 832 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 833 | if (A4_USO == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 834 | float s = ANALOG_A4; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 835 | if (value_A4 != s) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 836 | value_A4 = s; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 837 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 838 | uint16_t value = s * 1024; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 839 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 840 | float Vtemp = value * 0.0032080078125; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 841 | float Rtemp = (15111 / Vtemp) - 4630; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 842 | float Tempfinal = ((Rtemp - 1000) / 3.850); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 843 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 844 | //2- Conversion flotante a punto fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 845 | int16_t Temperature_PF = (int16_t) (256 * Tempfinal); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 846 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 847 | LECTURA_ANALOGICA[2] = 0x04; // --> Posicion del sensor |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 848 | LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 849 | LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 850 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 851 | pc.printf("ANALOG_A4 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 852 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 853 | } |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 854 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 855 | if (A3_USO == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 856 | float s = ANALOG_A3; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 857 | if (value_A3 != s) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 858 | value_A3 = s; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 859 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 860 | uint16_t value = s * 1024; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 861 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 862 | float Vtemp = value * 0.0032080078125; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 863 | float Rtemp = (15111 / Vtemp) - 4630; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 864 | float Tempfinal = ((Rtemp - 1000) / 3.850); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 865 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 866 | //2- Conversion flotante a punto fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 867 | int16_t Temperature_PF = (int16_t) (256 * Tempfinal); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 868 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 869 | LECTURA_ANALOGICA[2] = 0x03; // --> Posicion del sensor |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 870 | LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 871 | LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 872 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 873 | pc.printf("ANALOG_A3 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 874 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 875 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 876 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 877 | if (A2_USO == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 878 | float s = ANALOG_A2; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 879 | if (value_A2 != s) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 880 | value_A2 = s; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 881 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 882 | uint16_t value = s * 1024; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 883 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 884 | float Vtemp = value * 0.0032080078125; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 885 | float Rtemp = (15111 / Vtemp) - 4630; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 886 | float Tempfinal = ((Rtemp - 1000) / 3.850); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 887 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 888 | //2- Conversion flotante a punto fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 889 | int16_t Temperature_PF = (int16_t) (256 * Tempfinal); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 890 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 891 | LECTURA_ANALOGICA[2] = 0x02; // --> Posicion del sensor |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 892 | LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 893 | LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 894 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 895 | pc.printf("ANALOG_A2 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 896 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 897 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 898 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 899 | if (A1_USO == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 900 | float s = ANALOG_A1; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 901 | if (value_A1 != s) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 902 | value_A1 = s; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 903 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 904 | uint16_t value = s * 1024; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 905 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 906 | float Vtemp = value * 0.0032080078125; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 907 | float Rtemp = (15111 / Vtemp) - 4630; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 908 | float Tempfinal = ((Rtemp - 1000) / 3.850); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 909 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 910 | //2- Conversion flotante a punto fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 911 | int16_t Temperature_PF = (int16_t) (256 * Tempfinal); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 912 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 913 | LECTURA_ANALOGICA[2] = 0x01; // --> Posicion del sensor |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 914 | LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 915 | LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 916 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 917 | pc.printf("ANALOG_A1 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 918 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 919 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 920 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 921 | if (A0_USO == ON) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 922 | float s = ANALOG_A0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 923 | if (value_A0 != s) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 924 | value_A0 = s; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 925 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 926 | uint16_t value = s * 1024; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 927 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 928 | float Vtemp = value * 0.0032080078125; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 929 | float Rtemp = (15111 / Vtemp) - 4630; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 930 | float Tempfinal = ((Rtemp - 1000) / 3.850); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 931 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 932 | //2- Conversion flotante a punto fijo |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 933 | int16_t Temperature_PF = (int16_t) (256 * Tempfinal); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 934 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 935 | LECTURA_ANALOGICA[2] = 0x00; // --> Posicion del sensor |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 936 | LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 937 | LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 938 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 939 | pc.printf("ANALOG_A0 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 940 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 941 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 942 | } |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 943 | } |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 944 | } |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 945 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 946 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 947 | void apagarLeds() |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 948 | { |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 949 | // SOLO PARA NRF51822 |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 950 | if (D3_TYPE == OUT) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 951 | //PIN_D3 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 952 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 953 | if (D4_TYPE == OUT) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 954 | //PIN_D4 = 1; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 955 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 956 | if (D5_TYPE == OUT) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 957 | //PIN_D5 = 1; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 958 | } |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 959 | if (D6_TYPE == OUT) { |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 960 | //PIN_D6 = 0; |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 961 | } |
dixysleo | 0:58e350255405 | 962 | } |
dixysleo | 0:58e350255405 | 963 | |
dixysleo | 0:58e350255405 | 964 | int main(void) |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 965 | { |
dixysleo | 0:58e350255405 | 966 | Ticker ticker; |
dixysleo | 0:58e350255405 | 967 | ticker.attach_us(m_status_check_handle, 200000); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 968 | |
dixysleo | 0:58e350255405 | 969 | ble.init(); |
dixysleo | 0:58e350255405 | 970 | ble.onDisconnection(disconnectionCallback); |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 971 | ble.onConnection(connectionCallback); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 972 | ble.onDataWritten(WrittenHandler); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 973 | |
dixysleo | 0:58e350255405 | 974 | pc.baud(9600); |
dixysleo | 0:58e350255405 | 975 | pc.printf("SimpleChat Init \r\n"); |
dixysleo | 0:58e350255405 | 976 | //pc.attach( uartCB , pc.RxIrq); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 977 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 978 | // setup advertising |
dixysleo | 0:58e350255405 | 979 | ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); |
dixysleo | 0:58e350255405 | 980 | ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 981 | ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, (const uint8_t *)"Biscuit2", sizeof("Biscuit2") - 1); // Original: Biscuit |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 982 | ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS, (const uint8_t *)uart_base_uuid_rev, sizeof(uart_base_uuid)); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 983 | |
dixysleo | 0:58e350255405 | 984 | ble.setAdvertisingInterval(160); |
dixysleo | 0:58e350255405 | 985 | |
dixysleo | 0:58e350255405 | 986 | ble.addService(uartService); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 987 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 988 | ble.startAdvertising(); |
dixysleo | 0:58e350255405 | 989 | pc.printf("Advertising Start \r\n"); |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 990 | apagarLeds(); |
dixysleo | 0:58e350255405 | 991 | //por dixys |
dixysleo | 0:58e350255405 | 992 | // para probar, luego quitar. Esto hace que cada ticker se envie un dato analogico via BLE |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 993 | |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 994 | // valores refernenciales para los estados de los sensores. |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 995 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 996 | #if A0_USO == ON |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 997 | value_A0 = ANALOG_A0.read(); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 998 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 999 | value_A0 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1000 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1001 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1002 | #if A1_USO == ON |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1003 | value_A1 = ANALOG_A1.read(); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1004 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1005 | value_A1 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1006 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1007 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1008 | #if A2_USO == ON |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1009 | value_A2 = ANALOG_A2.read(); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1010 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1011 | value_A2 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1012 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1013 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1014 | #if A3_USO == ON |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1015 | value_A3 = ANALOG_A3.read(); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1016 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1017 | value_A3 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1018 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1019 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1020 | #if A4_USO == ON |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1021 | value_A4 = ANALOG_A4.read(); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1022 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1023 | value_A4 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1024 | #endif |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1025 | |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1026 | #if A5_USO == ON |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1027 | value_A5 = ANALOG_A5.read(); |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1028 | #else |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1029 | value_A5 = 0; |
Gustavo_Eduardo338 | 12:ff38af85a4ba | 1030 | #endif |
Gustavo_Eduardo338 | 11:965d5afe3a63 | 1031 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 1032 | while(1) { |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 1033 | ble.waitForEvent(); |
dixysleo | 0:58e350255405 | 1034 | } |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 1035 | } |