
Macros Corregidas
main.cpp@10:5580ae8cbe7e, 2016-09-19 (annotated)
- Committer:
- Gustavo_Eduardo338
- Date:
- Mon Sep 19 20:25:47 2016 +0000
- Revision:
- 10:5580ae8cbe7e
- Parent:
- 9:501a9e6710d2
- Child:
- 11:965d5afe3a63
BLE Characteristic Service TED
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 | 10:5580ae8cbe7e | 36 | //Solo puede estar definido un solo Board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 37 | //#define nRF51-DK_board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 38 | #define redBearLab_board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 39 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 40 | #ifdef nRF51-DK_board |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 41 | //Aqui se define el hardware del nRF51-DK |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 42 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 43 | //Analog in |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 44 | #define A0 P0_1 //Analog 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 45 | #define A1 P0_2 //Analog 1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 46 | #define A2 P0_3 //Analog 2 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 47 | #define A3 P0_4 //Analog 3 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 48 | #define A4 P0_5 //Analog 4 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 49 | #define A5 P0_6 //Analog 5 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 50 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 51 | //Digital |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 52 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 53 | #define D0 P0_14 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 54 | #define D1 P0_12 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 55 | #define D2 P0_13 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 56 | #define D3 P0_15 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 57 | #define D4 P0_21 //Digital I/O (LED 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 58 | #define D5 P0_22 //Digital I/O (LED 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 59 | #define D6 P0_23 //Digital I/O (LED 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 60 | #define D7 P0_24 //Digital I/O (LED 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 61 | #define D8 P0_17 //Digital I/O (BUTTON 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 62 | #define D9 P0_19 //Digital I/O (BUTTON 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 63 | #define D10 P0_18 //Digital I/O (BUTTON 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 64 | #define D11 P0_20 //Digital I/O (BUTTON 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 65 | #define D12 P0_7 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 66 | #define D13 P0_30 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 67 | #define D14 P0_8 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 68 | #define D15 P0_16 //Digital I/O |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 69 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 70 | //Aplicacion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 71 | #define LED_1 P0_21 //Digital I/O (LED 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 72 | #define LED_2 P0_22 //Digital I/O (LED 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 73 | #define LED_3 P0_23 //Digital I/O (LED 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 74 | #define LED_4 P0_24 //Digital I/O (LED 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 75 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 76 | #define BTN_1 P0_17 //Digital I/O (BUTTON 1) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 77 | #define BTN_2 P0_18 //Digital I/O (BUTTON 2) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 78 | #define BTN_3 P0_19 //Digital I/O (BUTTON 3) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 79 | #define BTN_4 P0_20 //Digital I/O (BUTTON 4) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 80 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 81 | // Aqui se acaba la configuracion del board NRF51-DK |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 82 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 83 | #else |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 84 | //Aqui se define el hardware del redBearLab |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 85 | |
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 | 10:5580ae8cbe7e | 143 | #define A0_USO ON //-> Divisor de voltaje para medir bateria VDD |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 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 | 10:5580ae8cbe7e | 148 | #define A5_USO OFF //-> Conectarlo al LM35 |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 149 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 150 | #define A0_TED 39.1 //Volts, bateria |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 151 | #define A1_TED 39.2 // ºC temperatura PT 1000 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 152 | #define A2_TED 0 // ºC temperatura PT 1000 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 153 | #define A3_TED 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 154 | #define A4_TED 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 155 | #define A5_TED 0 // ºC temperatura ambiental con el LM35 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 156 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 157 | #define D0_USO OFF //Ejemplo: ON |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 158 | #define D1_USO OFF //Ejemplo: OFF |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 159 | #define D2_USO ON |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 160 | #define D3_USO ON |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 161 | #define D4_USO ON |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 162 | #define D5_USO ON |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 163 | #define D6_USO OFF |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 164 | #define D7_USO ON |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 165 | #define D8_USO ON |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 166 | #define D9_USO ON //BUTTON 1 (NRF51-DK) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 167 | #define D10_USO OFF //BUTTON 2 (NRF51-DK) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 168 | #define D11_USO OFF //BUTTON 3 (NRF51-DK) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 169 | #define D12_USO OFF //BUTTON 4 (NRF51-DK) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 170 | #define D13_USO OFF |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 171 | #define D14_USO OFF |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 172 | #define D15_USO OFF |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 173 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 174 | #define D0_TYPE NONE // Ejemplo: OUT |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 175 | #define D1_TYPE NONE // Ejemplo: IN |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 176 | #define D2_TYPE IN // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 177 | #define D3_TYPE IN // Led encienden con 1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 178 | #define D4_TYPE IN // Led encienden con 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 179 | #define D5_TYPE IN // Led encienden con 0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 180 | #define D6_TYPE NONE // Led encienden con 1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 181 | #define D7_TYPE OUT // Pushbuttons (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 182 | #define D8_TYPE OUT // Pushbuttons (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 183 | #define D9_TYPE PWM // DIP Switch 1 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 184 | #define D10_TYPE NONE // DIP Switch 2 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 185 | #define D11_TYPE NONE // DIP Switch 3 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 186 | #define D12_TYPE NONE // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 187 | #define D13_TYPE NONE // DIP Switch 4 (Activos en bajo) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 188 | #define D14_TYPE NONE // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 189 | #define D15_TYPE NONE // Para medir Humedad con Resistencia AC |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 190 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 191 | //Macros de mbed |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 192 | /*** Aqui Se definen todas macros en funcion de si el bit esta ON u OFF ************ |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 193 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 194 | Estos son las macors ya definidas: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 195 | DigitalOut LED_SET(DIGITAL_OUT_PIN); //Modo de uso --> LED_SET = 1 o LED_SET = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 196 | DigitalIn BUTTON(DIGITAL_IN_PIN); //Modo de uso --> if (BUTTON != old_state) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 197 | PwmOut PWM(PWM_PIN); //Modo de uso --> PWM = value; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 198 | AnalogIn ANALOGTEMP(ANALOG_IN_PIN); //Modo de uso -> float s = ANALOG_A0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 199 | AnalogIn ANALOGBAT(ANALOG_IN_BAT); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 200 | Servo MYSERVO(SERVO_PIN); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 201 | *************************************************************************************/ |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 202 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 203 | //Macros analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 204 | AnalogIn ANALOG_A0(A0); //Bateria |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 205 | AnalogIn ANALOG_A1(A1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 206 | AnalogIn ANALOG_A2(A2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 207 | AnalogIn ANALOG_A3(A3); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 208 | AnalogIn ANALOG_A4(A4); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 209 | AnalogIn ANALOG_A5(A5); //Temperatura ambiental con LM35 |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 210 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 211 | //Macros Digitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 212 | DigitalIn BUTTON_0(D0); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 213 | DigitalIn BUTTON_1(D1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 214 | DigitalIn BUTTON_2(D2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 215 | DigitalIn BUTTON_3(D3); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 216 | DigitalIn BUTTON_4(D4); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 217 | DigitalIn BUTTON_5(D5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 218 | DigitalIn BUTTON_6(D6); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 219 | DigitalIn BUTTON_7(D7); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 220 | DigitalIn BUTTON_8(D8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 221 | DigitalIn BUTTON_9(D9); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 222 | DigitalIn BUTTON_10(D10); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 223 | DigitalIn BUTTON_11(D11); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 224 | DigitalIn BUTTON_12(D12); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 225 | DigitalIn BUTTON_13(D13); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 226 | DigitalIn BUTTON_14(D14); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 227 | DigitalIn BUTTON_15(D15); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 228 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 229 | DigitalOut LED_SET_0(D0); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 230 | DigitalOut LED_SET_1(D1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 231 | DigitalOut LED_SET_2(D2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 232 | DigitalOut LED_SET_3(D3); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 233 | DigitalOut LED_SET_4(D4); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 234 | DigitalOut LED_SET_5(D5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 235 | DigitalOut LED_SET_6(D6); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 236 | DigitalOut LED_SET_7(D7); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 237 | DigitalOut LED_SET_8(D8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 238 | DigitalOut LED_SET_9(D9); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 239 | DigitalOut LED_SET_10(D10); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 240 | DigitalOut LED_SET_11(D11); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 241 | DigitalOut LED_SET_12(D12); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 242 | DigitalOut LED_SET_13(D13); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 243 | DigitalOut LED_SET_14(D14); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 244 | DigitalOut LED_SET_15(D15); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 245 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 246 | PwmOut PWM_5(D5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 247 | PwmOut PWM_6(D6); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 248 | PwmOut PWM_9(D9); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 249 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 250 | //Hasta aqui la definicion de macos |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 251 | //Digital Inputs --> DATA VALUE |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 252 | uint16_t DigitalInput_DATA = 0x0000; //Mapa de bits con los valores de la entrada digital segun la posicion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 253 | uint16_t PAQUETE_ID = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 254 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 255 | 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 | 256 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 257 | //Digital input, cantidad, posiciones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 258 | uint16_t DigitalInput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 259 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 260 | //Digital output, cantidad, pocisiones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 261 | uint16_t DigitalOutput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 262 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 263 | uint16_t DigitalPwm_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 264 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 265 | //Digital input, cantidad, posiciones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 266 | uint8_t AnalogInput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 267 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 268 | //Digital output, cantidad, pocisiones --> de todos, ted = 0, tipico hasta 16 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 269 | uint8_t AnalogOutput_Pos = 0x0000; //Mapa de bits, seran usados los bytes del TED 16 bits |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 270 | |
dixysleo | 0:58e350255405 | 271 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 272 | // Declarando los pines |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 273 | //static int32_t send_config = 0; |
dixysleo | 0:58e350255405 | 274 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 275 | static int8_t SEND_CONFIG_GENERAL = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 276 | static int8_t SEND_CONFIG_ANALOG_0 = 0, SEND_CONFIG_ANALOG_1 = 0, SEND_CONFIG_ANALOG_2 = 0, SEND_CONFIG_ANALOG_3 = 0, SEND_CONFIG_ANALOG_4 = 0, SEND_CONFIG_ANALOG_5 = 0; |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 277 | |
Gustavo_Eduardo338 | 8:c4130ea78471 | 278 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 279 | BLE ble; |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 280 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 281 | // Permite imprimir mensajes en la consola |
dixysleo | 0:58e350255405 | 282 | Serial pc(USBTX, USBRX); |
dixysleo | 0:58e350255405 | 283 | |
dixysleo | 0:58e350255405 | 284 | static uint8_t analog_enabled = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 285 | static uint8_t state_button_2 = 0, state_button_3 = 0,state_button_4 = 0,state_button_5 = 0 ; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 286 | static uint8_t state_button_6 = 0, state_button_7 = 0, state_button_8 = 0, state_button_9 = 0,state_button_10 = 0,state_button_11 = 0 ; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 287 | static uint8_t state_button_12 = 0, state_button_13 = 0, state_button_14 = 0, state_button_15 = 0; |
dixysleo | 0:58e350255405 | 288 | |
dixysleo | 0:58e350255405 | 289 | // The Nordic UART Service |
dixysleo | 0:58e350255405 | 290 | 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 | 291 | 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 | 292 | 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 | 293 | 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 | 294 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 295 | // Trama de Configuracion de los Pines (a). |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 296 | static uint8_t TRAMA_CONFIG_GENERAL[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00}; // Length 12 |
dixysleo | 0:58e350255405 | 297 | |
dixysleo | 0:58e350255405 | 298 | uint8_t txPayload[TXRX_BUF_LEN] = {0,}; |
dixysleo | 0:58e350255405 | 299 | uint8_t rxPayload[TXRX_BUF_LEN] = {0,}; |
dixysleo | 0:58e350255405 | 300 | |
dixysleo | 0:58e350255405 | 301 | 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 | 302 | GattCharacteristic rxCharacteristic (uart_rx_uuid, rxPayload, 1, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY); |
dixysleo | 0:58e350255405 | 303 | GattCharacteristic *uartChars[] = {&txCharacteristic, &rxCharacteristic}; |
dixysleo | 0:58e350255405 | 304 | GattService uartService(uart_base_uuid, uartChars, sizeof(uartChars) / sizeof(GattCharacteristic *)); |
dixysleo | 0:58e350255405 | 305 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 306 | float in[] = { 100.00, 100.39, 100.78, 101.17, 101.56, 101.95, 102.34, 102.73, 103.12, 103.51, |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 307 | 103.90, 104.29, 104.68, 105.07, 105.46, 105.85, 106.24, 106.63, 107.02, 107.40, |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 308 | 107.79, 108.18, 108.57, 108.96, 109.35, 109.73, 110.12, 110.51, 110.90, 111.29, |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 309 | 111.67, 112.06, 112.45, 112.83, 113.22, 113.61, 114.00, 114.38, 114.77, 115.15, |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 310 | 115.54, 115.93, 116.31, 116.70, 117.08, 117.47, 117.86, 118.24, 118.63, 119.01, |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 311 | 119.40, 119.78, 120.17, 120.55, 120.94, 121.32, 121.71, 122.09, 122.47, 122.86, |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 312 | 123.24, 123.63, 124.01, 124.39, 124.78, 125.16, 125.54, 125.93, 126.31, 126.69, |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 313 | 127.08, 127.46, 127.84, 128.22, 128.61, 128.99, 129.37, 129.75, 130.13, 130.52 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 314 | }; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 315 | // known resistance in voltage divider |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 316 | int R1 = 217; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 317 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 318 | float MultiMap(float val, float* _in, uint8_t size) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 319 | { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 320 | // calculate if value is out of range |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 321 | if (val < _in[0] ) return -99.99; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 322 | if (val > _in[size-1] ) return 99.99; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 323 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 324 | // search for 'value' in _in array to get the position No. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 325 | uint8_t pos = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 326 | while(val > _in[pos]) pos++; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 327 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 328 | // handles the 'rare' equality case |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 329 | if (val == _in[pos]) return pos; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 330 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 331 | float r1 = _in[pos-1]; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 332 | float r2 = _in[pos]; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 333 | int c1 = pos-1; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 334 | int c2 = pos; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 335 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 336 | return c1 + (val - r1) / (r2-r1) * (c2-c1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 337 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 338 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 339 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 340 | |
dixysleo | 0:58e350255405 | 341 | // https://developer.mbed.org/forum/repo-61676-BLE_GAP_Example-community/topic/17193/ |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 342 | void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *) |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 343 | { |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 344 | BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); |
dixysleo | 0:58e350255405 | 345 | pc.printf("Disconnected \r\n"); |
dixysleo | 0:58e350255405 | 346 | pc.printf("Restart advertising \r\n"); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 347 | ble.startAdvertising(); |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 348 | analog_enabled = 0; // Deja que envie lecturas el PT 1000 |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 349 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 350 | SEND_CONFIG_GENERAL = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 351 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 352 | // En caso de no completarse el envio de la configuraciones las detenemos por completo, y dehabilitamos el envio. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 353 | SEND_CONFIG_ANALOG_0 == OFF; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 354 | SEND_CONFIG_ANALOG_1 == OFF; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 355 | SEND_CONFIG_ANALOG_2 == OFF; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 356 | SEND_CONFIG_ANALOG_3 == OFF; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 357 | SEND_CONFIG_ANALOG_4 == OFF; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 358 | SEND_CONFIG_ANALOG_5 == OFF; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 359 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 360 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 361 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 362 | //Leemos todos las entradas digitales que esten activas y lo ponemos en la posicion correspondiente |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 363 | void readDigitalInputs_Value () |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 364 | { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 365 | // DigitalInput_DATA = (uint16_t) ((BUTTON_15 << 15) | (BUTTON_14 << 14) | (BUTTON_13 << 13) | (BUTTON_12 << 12) | (BUTTON_11 << 11) | (BUTTON_10 << 10) | (BUTTON_9 << 9) | (BUTTON_8 << 8) | (BUTTON_7 << 7) | (BUTTON_6 << 6) |(BUTTON_5 << 5) | (BUTTON_4 << 4) | (BUTTON_3 << 3) | (BUTTON_2 << 2) | (BUTTON_1 << 1) | (BUTTON_1 << 0)); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 366 | DigitalInput_DATA = (uint16_t) ((BUTTON_15 << 15) | (BUTTON_14 << 14) | (BUTTON_13 << 13) | (BUTTON_12 << 12) | (BUTTON_11 << 11) | (BUTTON_10 << 10) | (BUTTON_9 << 9) | (BUTTON_8 << 8) | (BUTTON_7 << 7) | (BUTTON_6 << 6) |(BUTTON_5 << 5) | (BUTTON_4 << 4) | (BUTTON_3 << 3) | (BUTTON_2 << 2)); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 367 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 368 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 369 | //Funcion para crear los extra bytes |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 370 | void makeExtraBytes_CONFIG () |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 371 | { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 372 | // Teds de los Analog inputs |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 373 | AnalogInput_Ted [0] = A0_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 374 | AnalogInput_Ted [1] = A1_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 375 | AnalogInput_Ted [2] = A2_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 376 | AnalogInput_Ted [3] = A3_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 377 | AnalogInput_Ted [4] = A4_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 378 | AnalogInput_Ted [5] = A5_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 379 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 380 | if (D15_USO == ON && D15_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 381 | DigitalInput_Pos |= (uint16_t) (D15_USO << 15); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 382 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 383 | if (D14_USO == ON && D14_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 384 | DigitalInput_Pos |= (uint16_t) (D14_USO << 14); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 385 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 386 | if (D13_USO == ON && D13_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 387 | DigitalInput_Pos |= (uint16_t) (D13_USO << 13); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 388 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 389 | if (D12_USO == ON && D12_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 390 | DigitalInput_Pos |= (uint16_t) (D12_USO << 12); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 391 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 392 | if (D11_USO == ON && D11_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 393 | DigitalInput_Pos |= (uint16_t) (D11_USO << 11); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 394 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 395 | if (D10_USO == ON && D10_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 396 | DigitalInput_Pos |= (uint16_t) (D10_USO << 10); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 397 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 398 | if (D9_USO == ON && D9_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 399 | DigitalInput_Pos |= (uint16_t) (D9_USO << 9); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 400 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 401 | if (D8_USO == ON && D8_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 402 | DigitalInput_Pos |= (uint16_t) (D8_USO << 8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 403 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 404 | if (D7_USO == ON && D7_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 405 | DigitalInput_Pos |= (uint16_t) (D7_USO << 7); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 406 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 407 | if (D6_USO == ON && D6_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 408 | DigitalInput_Pos |= (uint16_t) (D6_USO << 6); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 409 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 410 | if (D5_USO == ON && D5_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 411 | DigitalInput_Pos |= (uint16_t) (D5_USO << 5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 412 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 413 | if (D4_USO == ON && D4_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 414 | DigitalInput_Pos |= (uint16_t) (D4_USO << 4); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 415 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 416 | if (D3_USO == ON && D3_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 417 | DigitalInput_Pos |= (uint16_t) (D3_USO << 3); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 418 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 419 | if (D2_USO == ON && D2_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 420 | DigitalInput_Pos |= (uint16_t) (D2_USO << 2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 421 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 422 | if (D1_USO == ON && D1_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 423 | DigitalInput_Pos |= (uint16_t) (D1_USO << 1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 424 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 425 | if (D0_USO == ON && D0_TYPE == IN) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 426 | DigitalInput_Pos |= (uint16_t) (D0_USO << 0); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 427 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 428 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 429 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 430 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 431 | if (D15_USO == 1 && D15_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 432 | DigitalOutput_Pos |= (uint16_t) (D15_USO << 15); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 433 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 434 | if (D14_USO == 1 && D14_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 435 | DigitalOutput_Pos |= (uint16_t) (D14_USO << 14); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 436 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 437 | if (D13_USO == 1 && D13_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 438 | DigitalOutput_Pos |= (uint16_t) (D13_USO << 13); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 439 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 440 | if (D12_USO == 1 && D12_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 441 | DigitalOutput_Pos |= (uint16_t) (D12_USO << 12); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 442 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 443 | if (D11_USO == 1 && D11_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 444 | DigitalOutput_Pos |= (uint16_t) (D11_USO << 11); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 445 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 446 | if (D10_USO == 1 && D10_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 447 | DigitalOutput_Pos |= (uint16_t) (D10_USO << 10); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 448 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 449 | if (D9_USO == 1 && D9_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 450 | DigitalOutput_Pos |= (uint16_t) (D9_USO << 9); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 451 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 452 | if (D8_USO == 1 && D8_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 453 | DigitalOutput_Pos |= (uint16_t) (D8_USO << 8); |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 454 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 455 | if (D7_USO == 1 && D7_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 456 | DigitalOutput_Pos |= (uint16_t) (D7_USO << 7); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 457 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 458 | if (D6_USO == 1 && D6_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 459 | DigitalOutput_Pos |= (uint16_t) (D6_USO << 6); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 460 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 461 | if (D5_USO == 1 && D5_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 462 | DigitalOutput_Pos |= (uint16_t) (D5_USO << 5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 463 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 464 | if (D4_USO == 1 && D4_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 465 | DigitalOutput_Pos |= (uint16_t) (D4_USO << 4); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 466 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 467 | if (D3_USO == 1 && D3_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 468 | DigitalOutput_Pos |= (uint16_t) (D3_USO << 3); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 469 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 470 | if (D2_USO == 1 && D2_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 471 | DigitalOutput_Pos |= (uint16_t) (D2_USO << 2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 472 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 473 | if (D1_USO == 1 && D1_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 474 | DigitalOutput_Pos |= (uint16_t) (D1_USO << 1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 475 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 476 | if (D0_USO == 1 && D0_TYPE == OUT) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 477 | DigitalOutput_Pos |= (uint16_t) (D0_USO << 0); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 478 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 479 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 480 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 481 | if (D15_USO == 1 && D15_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 482 | DigitalPwm_Pos |= (uint16_t) (D15_USO << 15); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 483 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 484 | if (D14_USO == 1 && D14_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 485 | DigitalPwm_Pos |= (uint16_t) (D14_USO << 14); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 486 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 487 | if (D13_USO == 1 && D13_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 488 | DigitalPwm_Pos |= (uint16_t) (D13_USO << 13); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 489 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 490 | if (D12_USO == 1 && D12_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 491 | DigitalPwm_Pos |= (uint16_t) (D12_USO << 12); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 492 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 493 | if (D11_USO == 1 && D11_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 494 | DigitalPwm_Pos |= (uint16_t) (D11_USO << 11); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 495 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 496 | if (D10_USO == 1 && D10_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 497 | DigitalPwm_Pos |= (uint16_t) (D10_USO << 10); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 498 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 499 | if (D9_USO == 1 && D9_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 500 | DigitalPwm_Pos |= (uint16_t) (D9_USO << 9); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 501 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 502 | if (D8_USO == 1 && D8_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 503 | DigitalPwm_Pos |= (uint16_t) (D8_USO << 8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 504 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 505 | if (D7_USO == 1 && D7_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 506 | DigitalPwm_Pos |= (uint16_t) (D7_USO << 7); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 507 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 508 | if (D6_USO == 1 && D6_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 509 | DigitalPwm_Pos |= (uint16_t) (D6_USO << 6); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 510 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 511 | if (D5_USO == 1 && D5_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 512 | DigitalPwm_Pos |= (uint16_t) (D5_USO << 5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 513 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 514 | if (D4_USO == 1 && D4_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 515 | DigitalPwm_Pos |= (uint16_t) (D4_USO << 4); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 516 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 517 | if (D3_USO == 1 && D3_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 518 | DigitalPwm_Pos |= (uint16_t) (D3_USO << 3); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 519 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 520 | if (D2_USO == 1 && D2_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 521 | DigitalPwm_Pos |= (uint16_t) (D2_USO << 2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 522 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 523 | if (D1_USO == 1 && D1_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 524 | DigitalPwm_Pos |= (uint16_t) (D1_USO << 1); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 525 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 526 | if (D0_USO == 1 && D0_TYPE == PWM) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 527 | DigitalPwm_Pos |= (uint16_t) (D0_USO << 0); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 528 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 529 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 530 | //Digital inputs |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 531 | AnalogInput_Pos = (uint16_t) ((A5_USO << 5) | (A4_USO << 4) | (A3_USO << 3) | (A2_USO << 2) | (A1_USO << 1) | (A0_USO << 0)); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 532 | //Digital Outputs |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 533 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 534 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 535 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 536 | //para probar |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 537 | pc.printf("DigitalInput_Pos = %x \r\n", DigitalInput_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 538 | pc.printf("DigitalOutput_Pos = %x \r\n", DigitalOutput_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 539 | pc.printf("AnalogInput_Pos = %x \r\n", AnalogInput_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 540 | pc.printf("AnalogOutput_Pos = %x \r\n", DigitalPwm_Pos); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 541 | pc.printf("---------------------------\r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 542 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 543 | // Definimos la trama de configuracion general |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 544 | TRAMA_CONFIG_GENERAL [0] = 0xC1; // Codigo de configuracion general |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 545 | TRAMA_CONFIG_GENERAL [1] = 0xA1; // Codigo de entradas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 546 | TRAMA_CONFIG_GENERAL [2] = AnalogInput_Pos; // Valor de las entradas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 547 | TRAMA_CONFIG_GENERAL [3] = 0xA0; // Codigo de las salidas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 548 | TRAMA_CONFIG_GENERAL [4] = (DigitalPwm_Pos >> 8); // Valor de las salidas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 549 | TRAMA_CONFIG_GENERAL [5] = (DigitalPwm_Pos); // Valor de las salidas analogicas |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 550 | TRAMA_CONFIG_GENERAL [6] = 0xD1; // Codigo de las entradas digitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 551 | TRAMA_CONFIG_GENERAL [7] = (DigitalInput_Pos >> 8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 552 | TRAMA_CONFIG_GENERAL [8] = DigitalInput_Pos; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 553 | TRAMA_CONFIG_GENERAL [9] = 0xD0; // Codigo de las salidas difitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 554 | TRAMA_CONFIG_GENERAL [10] = (DigitalOutput_Pos>> 8); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 555 | TRAMA_CONFIG_GENERAL [11] = DigitalOutput_Pos; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 556 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 557 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 558 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 559 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 560 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 561 | // Ingresa por este metdo unicamente la primera vez que se conecta al mote. |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 562 | // Tomado desde: https://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_LEDBlinker/file/dc392bde2b3c/main.cpp |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 563 | void connectionCallback(const Gap::ConnectionCallbackParams_t *) |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 564 | { |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 565 | pc.printf("connectionCallback \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 566 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 567 | makeExtraBytes_CONFIG(); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 568 | SEND_CONFIG_GENERAL = 1; |
dixysleo | 0:58e350255405 | 569 | } |
dixysleo | 0:58e350255405 | 570 | |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 571 | // Recepta las caracteristicas que se desea escribir en el mote. |
dixysleo | 0:58e350255405 | 572 | void WrittenHandler(const GattWriteCallbackParams *Handler) |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 573 | { |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 574 | pc.printf("WrittenHandler(const GattWriteCallbackParams *Handler) \r\n"); |
dixysleo | 0:58e350255405 | 575 | uint8_t buf[TXRX_BUF_LEN]; |
dixysleo | 0:58e350255405 | 576 | uint16_t bytesRead, index; |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 577 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 578 | if (Handler->handle == txCharacteristic.getValueAttribute().getHandle()) { |
dixysleo | 0:58e350255405 | 579 | ble.readCharacteristicValue(txCharacteristic.getValueAttribute().getHandle(), buf, &bytesRead); |
dixysleo | 0:58e350255405 | 580 | memset(txPayload, 0, TXRX_BUF_LEN); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 581 | memcpy(txPayload, buf, TXRX_BUF_LEN); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 582 | |
dixysleo | 0:58e350255405 | 583 | for(index=0; index<bytesRead; index++) |
dixysleo | 0:58e350255405 | 584 | pc.putc(buf[index]); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 585 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 586 | pc.printf("Leemos la trama: \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 587 | for(index=0; index<bytesRead; index++) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 588 | pc.printf("buf[%02x]: %02x\r\n", index, buf[index]); |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 589 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 590 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 591 | // Desde el telefono desactiva el envio de tramas de configuracion general o de cada sensor. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 592 | if (buf[0] == 0xDC) { // Dato Configuracion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 593 | if(buf[1] == 0xC1) { // Hace referencia a la configuración general |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 594 | 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 | 595 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 596 | // Comprueba si estan habilitados las salidas analogicas, y las |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 597 | // inicializa a 1 para que mas adelante envie la configuracion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 598 | // de cada sensor |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 599 | SEND_CONFIG_ANALOG_0 = (A0_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 600 | SEND_CONFIG_ANALOG_1 = (A1_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 601 | SEND_CONFIG_ANALOG_2 = (A2_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 602 | SEND_CONFIG_ANALOG_3 = (A3_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 603 | SEND_CONFIG_ANALOG_4 = (A4_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 604 | SEND_CONFIG_ANALOG_5 = (A5_USO == ON)?1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 605 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 606 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 607 | // Maneja las Tramas de confirmacion de la configuracion detallada de cada senssor analogico |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 608 | if(buf[1] == 0xC2) { // Hace referencia a la configuracion detallada por sensor. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 609 | switch (buf[2]) { // Evalua la posición |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 610 | case 0x00: // 0xA0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 611 | SEND_CONFIG_ANALOG_0 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 612 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 613 | case 0x01: // 0xA1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 614 | SEND_CONFIG_ANALOG_1 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_1 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 615 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 616 | case 0x02: // 0xA2 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 617 | SEND_CONFIG_ANALOG_2 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_2 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 618 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 619 | case 0x03: // 0xA3 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 620 | SEND_CONFIG_ANALOG_3 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_3 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 621 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 622 | case 0x04: // 0xA4 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 623 | SEND_CONFIG_ANALOG_4 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_4 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 624 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 625 | case 0x05: // 0xA5 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 626 | SEND_CONFIG_ANALOG_5 = buf[3]; // buf[3] debe ser 0, para detenerse el envió SEND_CONFIG_ANALOG_5 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 627 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 628 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 629 | } |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 630 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 631 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 632 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 633 | // Verifico si es una trama de Escitura. |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 634 | if(buf[0] == 0xEE) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 635 | PAQUETE_ID = buf[1]; |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 636 | // Verifico si es un signal Digital Out |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 637 | if(buf[2] == 0xD0) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 638 | // Evaluo sobre que pin se debe actuar. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 639 | switch (buf[3]) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 640 | case 0x00: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 641 | LED_SET_0 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 642 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 643 | case 0x01: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 644 | LED_SET_1 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 645 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 646 | case 0x02: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 647 | LED_SET_2 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 648 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 649 | case 0x03: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 650 | LED_SET_3 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 651 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 652 | case 0x04: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 653 | LED_SET_4 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 654 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 655 | case 0x05: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 656 | LED_SET_5 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 657 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 658 | case 0x06: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 659 | LED_SET_6 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 660 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 661 | case 0x07: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 662 | LED_SET_7 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 663 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 664 | case 0x08: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 665 | LED_SET_8 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 666 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 667 | case 0x09: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 668 | LED_SET_9 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 669 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 670 | case 0x10: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 671 | LED_SET_10 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 672 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 673 | case 0x11: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 674 | LED_SET_11 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 675 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 676 | case 0x12: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 677 | LED_SET_12 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 678 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 679 | case 0x13: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 680 | LED_SET_13 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 681 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 682 | case 0x14: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 683 | LED_SET_14 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 684 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 685 | case 0x15: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 686 | LED_SET_15 = (buf[4] == 0x01) ? 1:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 687 | break; |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 688 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 689 | // Verifico si es un signal Analog out |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 690 | } else if(buf[2] == 0xA0) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 691 | float value = (float)buf[4]/255; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 692 | switch (buf[3]) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 693 | case 0x05: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 694 | PWM_5 = value; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 695 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 696 | case 0x06: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 697 | PWM_6 = value; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 698 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 699 | case 0x09: |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 700 | PWM_9 =value; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 701 | break; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 702 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 703 | } |
dixysleo | 0:58e350255405 | 704 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 705 | |
dixysleo | 0:58e350255405 | 706 | } |
dixysleo | 0:58e350255405 | 707 | } |
dixysleo | 0:58e350255405 | 708 | } |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 709 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 710 | |
dixysleo | 0:58e350255405 | 711 | /* |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 712 | * Desde este metodo envia las tramas al Gateway. |
dixysleo | 0:58e350255405 | 713 | */ |
dixysleo | 0:58e350255405 | 714 | void m_status_check_handle(void) |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 715 | { |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 716 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 717 | uint8_t TRAMA_CONFIG_ANALOG[5]; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 718 | uint8_t LECTURA_DIGITAL[6]; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 719 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 720 | /**if (analog_enabled) { // if analog reading enabled |
dixysleo | 0:58e350255405 | 721 | // Read and send out |
dixysleo | 0:58e350255405 | 722 | float s = ANALOG; |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 723 | uint16_t value = s*1024; |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 724 | buf[0] = (0xDD); // Codigo |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 725 | buf[1] = (0x00); // paquete id |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 726 | buf[2] = (0xA1); // A1| A0| D1| D0 |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 727 | buf[3] = (20); // Posicion |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 728 | buf[4] = (value >> 8); // Valor |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 729 | buf[5] = (value); // Valor |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 730 | |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 731 | //pc.printf("buf[4]: %d\r\n", buf[4]); |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 732 | //pc.printf("buf[5]: %d\r\n", buf[5]); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 733 | |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 734 | //pc.printf("value pt 1000: %d\r\n", value); // Imprimo en terminal lo que esta enviando desde el mote. |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 735 | |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 736 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 6); // Para el RTD |
dixysleo | 0:58e350255405 | 737 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 738 | **/ |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 739 | |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 740 | //pc.printf("enviar_config %d \r\n", enviar_config_01); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 741 | if (SEND_CONFIG_GENERAL == 1) { |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 742 | // Envia la configuracion Genaral del Mote. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 743 | pc.printf("TRAMA_CONFIG_GENERAL0 %d \r\n", TRAMA_CONFIG_GENERAL[0]); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 744 | pc.printf("TRAMA_CONFIG_GENERAL1 %d \r\n", TRAMA_CONFIG_GENERAL[1]); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 745 | pc.printf("SEND_CONFIG_GENERAL %d \r\n", SEND_CONFIG_GENERAL); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 746 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_GENERAL, 12); |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 747 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 748 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 749 | // Envio de las tramas de Configuracion del Mote. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 750 | // -- Configuracion detallada de los sensores. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 751 | // Evalua si se encuentra pendiente enviar la configuracion de los sensores. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 752 | 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 | 10:5580ae8cbe7e | 753 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 754 | TRAMA_CONFIG_ANALOG[0] = (0xC2); // Codigo que indica que la configuracion sera por cada Pin. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 755 | TRAMA_CONFIG_ANALOG[1] = (0x05); // Categoria puede ser: A (Actuador) | 5 (Sensor) |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 756 | TRAMA_CONFIG_ANALOG[2] = (0xAA); // Tipo de Signal AA | DD |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 757 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 758 | if (A0_USO == ON && SEND_CONFIG_ANALOG_0 == ON) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 759 | TRAMA_CONFIG_ANALOG[3] = 0x00; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 760 | TRAMA_CONFIG_ANALOG[4] = A0_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 761 | pc.printf("SEND_CONFIG_ANALOG_0 \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 762 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 763 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 764 | } else if (A1_USO == ON && SEND_CONFIG_ANALOG_1 == ON) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 765 | TRAMA_CONFIG_ANALOG[3] = 0x01; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 766 | TRAMA_CONFIG_ANALOG[4] = A1_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 767 | pc.printf("SEND_CONFIG_ANALOG_1 \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 768 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 5); |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 769 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 770 | } else if (A2_USO == ON && SEND_CONFIG_ANALOG_2 == ON) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 771 | TRAMA_CONFIG_ANALOG[3] = 0x02; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 772 | TRAMA_CONFIG_ANALOG[4] = A2_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 773 | pc.printf("SEND_CONFIG_ANALOG_2 \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 774 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 775 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 776 | } else if (A3_USO == ON && SEND_CONFIG_ANALOG_3 == ON) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 777 | TRAMA_CONFIG_ANALOG[3] = 0x03; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 778 | TRAMA_CONFIG_ANALOG[4] = A3_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 779 | pc.printf("SEND_CONFIG_ANALOG_3 \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 780 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 5); |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 781 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 782 | } else if (A4_USO == ON && SEND_CONFIG_ANALOG_4 == ON) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 783 | TRAMA_CONFIG_ANALOG[3] = 0x04; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 784 | TRAMA_CONFIG_ANALOG[4] = A4_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 785 | pc.printf("SEND_CONFIG_ANALOG_4 \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 786 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 5); |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 787 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 788 | } else if (A5_USO == ON && SEND_CONFIG_ANALOG_5 == ON) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 789 | TRAMA_CONFIG_ANALOG[3] = 0x05; // Posicion que ocupa en el mote |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 790 | TRAMA_CONFIG_ANALOG[4] = A5_TED; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 791 | pc.printf("SEND_CONFIG_ANALOG_5 \r\n"); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 792 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 5); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 793 | } |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 794 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 795 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 796 | // Envio de las tramas de lecturas del Mote. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 797 | // -- Envio las lecturas digitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 798 | if (PAQUETE_ID != 0) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 799 | PAQUETE_ID = 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 800 | readDigitalInputs_Value(); // Leemos los estados digitales. |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 801 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 802 | LECTURA_DIGITAL[0] = (0xDD); // Codigo |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 803 | LECTURA_DIGITAL[1] = PAQUETE_ID; // paquete id |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 804 | LECTURA_DIGITAL[2] = PAQUETE_ID; // paquete id |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 805 | LECTURA_DIGITAL[3] = 0xDD; // A1| A0| D1| D0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 806 | LECTURA_DIGITAL[4] = DigitalInput_DATA; // Posicion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 807 | pc.printf("Envio LECTURA_DIGITAL \r\n"); // Imprimo en terminal lo que esta enviando desde el mote. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 808 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 809 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 5); // Para el RTD |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 810 | } |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 811 | // -- Envio de las lecturas Analogicas. |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 812 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 813 | /** |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 814 | if (resp_digital_out_7 != 0) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 815 | // Envia trama de lectura |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 816 | buf[0] = (0xDD); // Codigo |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 817 | buf[1] = resp_digital_out_7; // paquete id |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 818 | buf[2] = (0xD0); // A1| A0| D1| D0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 819 | buf[3] = (10); // Posicion |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 820 | buf[4] = LED_SET_7; // Valor |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 821 | pc.printf("resp_digital_out_7 %d\r\n", resp_digital_out_7); // Imprimo en terminal lo que esta enviando desde el mote. |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 822 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 823 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5); // Para el RTD |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 824 | }**/ |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 825 | //wait_ms(100); |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 826 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 827 | // If digital in changes, report the state |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 828 | if ((BUTTON_2 != state_button_2 && D2_TYPE == IN) || (BUTTON_3 != state_button_3 && D3_TYPE == IN) || (BUTTON_3 != state_button_3 && D3_TYPE == IN) || (BUTTON_4 != state_button_4 && D4_TYPE == IN) || (BUTTON_5 != state_button_5 && D5_TYPE == IN) || (BUTTON_6 != state_button_6 && D6_TYPE == IN) || (BUTTON_7 != state_button_7 && D7_TYPE == IN) || (BUTTON_8 != state_button_8 && D8_TYPE == IN) || (BUTTON_9 != state_button_9 && D9_TYPE == IN) || (BUTTON_10 != state_button_10 && D10_TYPE == IN) || (BUTTON_11 != state_button_11 && D11_TYPE == IN) || (BUTTON_12 != state_button_12 && D12_TYPE == IN) || (BUTTON_13 != state_button_13 && D13_TYPE == IN) || (BUTTON_14 != state_button_14 && D14_TYPE == IN) || (BUTTON_15 != state_button_15 && D15_TYPE == IN)) { |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 829 | // Lecturas digitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 830 | readDigitalInputs_Value(); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 831 | // Actualizando estados de las variables auxiliares |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 832 | state_button_2 = (D2_USO == ON && D2_TYPE == IN) ? BUTTON_2 : 0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 833 | state_button_3 = (D3_USO == ON && D3_TYPE == IN) ? BUTTON_3:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 834 | state_button_4 = (D4_USO == ON && D4_TYPE == IN) ? BUTTON_4:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 835 | state_button_5 = (D5_USO == ON && D5_TYPE == IN) ? BUTTON_5:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 836 | state_button_6 = (D6_USO == ON && D6_TYPE == IN) ? BUTTON_6:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 837 | state_button_7 = (D7_USO == ON && D7_TYPE == IN) ? BUTTON_7:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 838 | state_button_8 = (D8_USO == ON && D8_TYPE == IN) ? BUTTON_8:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 839 | state_button_9 = (D9_USO == ON && D9_TYPE == IN) ? BUTTON_9:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 840 | state_button_10 = (D10_USO == ON && D10_TYPE == IN) ? BUTTON_10:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 841 | state_button_11 = (D11_USO == ON && D11_TYPE == IN) ? BUTTON_11:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 842 | state_button_12 = (D12_USO == ON && D12_TYPE == IN) ? BUTTON_12:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 843 | state_button_13 = (D13_USO == ON && D13_TYPE == IN) ? BUTTON_13:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 844 | state_button_14 = (D14_USO == ON && D14_TYPE == IN) ? BUTTON_14:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 845 | state_button_15 = (D15_USO == ON && D15_TYPE == IN) ? BUTTON_15:0; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 846 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 847 | PAQUETE_ID = 0x3E8; |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 848 | pc.printf("DigitalInput_DATA: %d \r\n", DigitalInput_DATA); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 849 | LECTURA_DIGITAL[0] = 0xDD; // Codigo |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 850 | LECTURA_DIGITAL[1] = (PAQUETE_ID >> 8); // primera parte del paquete |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 851 | LECTURA_DIGITAL[2] = PAQUETE_ID ; // segunda parte del paquete |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 852 | LECTURA_DIGITAL[3] = 0xD0; // A1| A0| D1| D0 |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 853 | LECTURA_DIGITAL[4] = (DigitalInput_DATA >> 8); // Valor de las salidas digitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 854 | LECTURA_DIGITAL[5] = (DigitalInput_DATA); // Valor de las salidas digitales |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 855 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 856 | ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 6); // Para el RTD |
Gustavo_Eduardo338 | 7:fb4c6c1dd3a9 | 857 | } |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 858 | |
Gustavo_Eduardo338 | 8:c4130ea78471 | 859 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 860 | /**int pt100 = ANALOG_A5.read(); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 861 | pc.printf("pt100: %f Ohm\r\n", pt100); |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 862 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 863 | float Vout = pt100 * (5.0 / 1023.0); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 864 | float R2 = R1 * 1/(5.0/Vout - 1); |
Gustavo_Eduardo338 | 9:501a9e6710d2 | 865 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 866 | float c = MultiMap(R2,in,80); |
Gustavo_Eduardo338 | 8:c4130ea78471 | 867 | |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 868 | pc.printf("Resistance: %f Ohm\r\n", R2); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 869 | pc.printf("Temperature: %f C\r\n", c); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 870 | */ |
dixysleo | 0:58e350255405 | 871 | } |
dixysleo | 0:58e350255405 | 872 | |
dixysleo | 0:58e350255405 | 873 | int main(void) |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 874 | { |
dixysleo | 0:58e350255405 | 875 | Ticker ticker; |
dixysleo | 0:58e350255405 | 876 | ticker.attach_us(m_status_check_handle, 200000); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 877 | |
dixysleo | 0:58e350255405 | 878 | ble.init(); |
dixysleo | 0:58e350255405 | 879 | ble.onDisconnection(disconnectionCallback); |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 880 | ble.onConnection(connectionCallback); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 881 | ble.onDataWritten(WrittenHandler); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 882 | |
dixysleo | 0:58e350255405 | 883 | pc.baud(9600); |
dixysleo | 0:58e350255405 | 884 | pc.printf("SimpleChat Init \r\n"); |
dixysleo | 0:58e350255405 | 885 | //pc.attach( uartCB , pc.RxIrq); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 886 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 887 | // setup advertising |
dixysleo | 0:58e350255405 | 888 | ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); |
dixysleo | 0:58e350255405 | 889 | ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 890 | ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, (const uint8_t *)"Biscuit", sizeof("Biscuit") - 1); // Original: Biscuit |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 891 | ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS, (const uint8_t *)uart_base_uuid_rev, sizeof(uart_base_uuid)); |
Gustavo_Eduardo338 | 10:5580ae8cbe7e | 892 | |
dixysleo | 0:58e350255405 | 893 | ble.setAdvertisingInterval(160); |
dixysleo | 0:58e350255405 | 894 | |
dixysleo | 0:58e350255405 | 895 | ble.addService(uartService); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 896 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 897 | ble.startAdvertising(); |
dixysleo | 0:58e350255405 | 898 | pc.printf("Advertising Start \r\n"); |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 899 | |
dixysleo | 0:58e350255405 | 900 | //por dixys |
dixysleo | 0:58e350255405 | 901 | // para probar, luego quitar. Esto hace que cada ticker se envie un dato analogico via BLE |
Gustavo_Eduardo338 | 5:a8c07a29df8a | 902 | analog_enabled = 0; |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 903 | |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 904 | while(1) { |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 905 | ble.waitForEvent(); |
dixysleo | 0:58e350255405 | 906 | } |
Gustavo_Eduardo338 | 4:a43cbe8aed6a | 907 | } |