Macros Corregidas

Dependencies:   BLE_API mbed

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?

UserRevisionLine numberNew 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 }