Felícito Manzano
/
CCN_Control_Bahia_TFMiniPlus
Actualizacion General del codigo para CCN con el objetivo de proveer mantenimiento estable.
f_basicas.cpp@3:bf6747585064, 2021-05-24 (annotated)
- Committer:
- fmanzano_dtk
- Date:
- Mon May 24 13:37:53 2021 +0000
- Revision:
- 3:bf6747585064
- Parent:
- 1:c7bcbf5eac28
- Child:
- 4:e0b1d06c5cc5
Codigo en revision para correccion de typos;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fmanzano_dtk | 1:c7bcbf5eac28 | 1 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 2 | * @file f_basicas.cpp |
fmanzano_dtk | 1:c7bcbf5eac28 | 3 | * @author Felícito Manzano (felicito.manzano@detektor.com.sv) |
fmanzano_dtk | 1:c7bcbf5eac28 | 4 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 5 | * @version 0.1 |
fmanzano_dtk | 1:c7bcbf5eac28 | 6 | * @date 2021-05-23 |
fmanzano_dtk | 1:c7bcbf5eac28 | 7 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 8 | * @copyright Copyright (c) 2021 |
fmanzano_dtk | 1:c7bcbf5eac28 | 9 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 10 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 11 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 12 | #include "mbed.h" |
fmanzano_dtk | 3:bf6747585064 | 13 | #include "BufferedSerial.h" |
fmanzano_dtk | 1:c7bcbf5eac28 | 14 | #include "f_basicas.hpp" |
fmanzano_dtk | 1:c7bcbf5eac28 | 15 | #include "constantes.hpp" |
fmanzano_dtk | 1:c7bcbf5eac28 | 16 | #include "tagid.hpp" |
fmanzano_dtk | 3:bf6747585064 | 17 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 18 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 19 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 20 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 21 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 22 | * Esta función recibe un entero que es el contador de tramas |
fmanzano_dtk | 1:c7bcbf5eac28 | 23 | realiza el incremento en uno y verifica si el valor es mayor |
fmanzano_dtk | 1:c7bcbf5eac28 | 24 | o igual que 65535 que es equivalente a 0xFFFF. Si se cumple |
fmanzano_dtk | 1:c7bcbf5eac28 | 25 | la condución se regresa el valor a 1. |
fmanzano_dtk | 1:c7bcbf5eac28 | 26 | Esta función siempre retorna 0. |
fmanzano_dtk | 1:c7bcbf5eac28 | 27 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 28 | * @param tramas |
fmanzano_dtk | 1:c7bcbf5eac28 | 29 | * @return true |
fmanzano_dtk | 1:c7bcbf5eac28 | 30 | * @return false |
fmanzano_dtk | 1:c7bcbf5eac28 | 31 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 32 | bool incrementar_trama(int *tramas) |
fmanzano_dtk | 1:c7bcbf5eac28 | 33 | { |
fmanzano_dtk | 1:c7bcbf5eac28 | 34 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 35 | int actual = *tramas; |
fmanzano_dtk | 1:c7bcbf5eac28 | 36 | int limite = 65535; |
fmanzano_dtk | 1:c7bcbf5eac28 | 37 | actual++; |
fmanzano_dtk | 1:c7bcbf5eac28 | 38 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 39 | if (actual > limite) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 40 | *tramas = 1; |
fmanzano_dtk | 1:c7bcbf5eac28 | 41 | } else { |
fmanzano_dtk | 1:c7bcbf5eac28 | 42 | *tramas = actual; |
fmanzano_dtk | 1:c7bcbf5eac28 | 43 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 44 | return(false); |
fmanzano_dtk | 1:c7bcbf5eac28 | 45 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 46 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 47 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 48 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 49 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 50 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 51 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 52 | * @param puerto_usb |
fmanzano_dtk | 1:c7bcbf5eac28 | 53 | * @param puerto_cp |
fmanzano_dtk | 1:c7bcbf5eac28 | 54 | * @return true |
fmanzano_dtk | 1:c7bcbf5eac28 | 55 | * @return false |
fmanzano_dtk | 1:c7bcbf5eac28 | 56 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 57 | bool booting_gtdat(Serial *puerto_usb, Serial *puerto_cp) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 58 | wait_us(1000000); |
fmanzano_dtk | 1:c7bcbf5eac28 | 59 | puerto_usb -> printf("\r\n*** DETEKTOR LATAM ***\r\n"); |
fmanzano_dtk | 1:c7bcbf5eac28 | 60 | puerto_usb -> printf("INICIANDO NUCLEO STM32\r\n"); |
fmanzano_dtk | 1:c7bcbf5eac28 | 61 | puerto_usb -> printf("CCN TIEMPO EN PLANTA\r\n"); |
fmanzano_dtk | 1:c7bcbf5eac28 | 62 | puerto_usb -> printf("R.0A.1 - 2021-05-24\r\n\r\n"); |
fmanzano_dtk | 1:c7bcbf5eac28 | 63 | puerto_usb -> printf("BAHIA-%d\r\n", BAY_ADDRESS); |
fmanzano_dtk | 1:c7bcbf5eac28 | 64 | puerto_cp -> printf("%s*INICIA BAHIA-%d*%s0001%s\r\n", |
fmanzano_dtk | 1:c7bcbf5eac28 | 65 | CABECERA_TX, BAY_ADDRESS, FIN_CABECERA_TX, ULTIMO_CARACTER); |
fmanzano_dtk | 1:c7bcbf5eac28 | 66 | wait_us(T_TX); |
fmanzano_dtk | 1:c7bcbf5eac28 | 67 | return(false); |
fmanzano_dtk | 1:c7bcbf5eac28 | 68 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 69 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 70 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 71 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 72 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 73 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 74 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 75 | * Esta función recibe los digitos correspondientes a las horas, decenas y |
fmanzano_dtk | 1:c7bcbf5eac28 | 76 | minutos que representan la hora y que deben presentarse en los tres |
fmanzano_dtk | 1:c7bcbf5eac28 | 77 | display de siete segmentos. La función siempre retorna 0. |
fmanzano_dtk | 1:c7bcbf5eac28 | 78 | * @param horas |
fmanzano_dtk | 1:c7bcbf5eac28 | 79 | * @param decenas |
fmanzano_dtk | 1:c7bcbf5eac28 | 80 | * @param minutos |
fmanzano_dtk | 1:c7bcbf5eac28 | 81 | * @param d7_h |
fmanzano_dtk | 1:c7bcbf5eac28 | 82 | * @param d7_d |
fmanzano_dtk | 1:c7bcbf5eac28 | 83 | * @param d7_m |
fmanzano_dtk | 1:c7bcbf5eac28 | 84 | * @return int |
fmanzano_dtk | 1:c7bcbf5eac28 | 85 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 86 | int presentar_tiempo(int *horas, int *decenas, int *minutos, |
fmanzano_dtk | 1:c7bcbf5eac28 | 87 | BusOut *d7_h, BusOut *d7_d, BusOut *d7_m) |
fmanzano_dtk | 1:c7bcbf5eac28 | 88 | { |
fmanzano_dtk | 1:c7bcbf5eac28 | 89 | // Digito más significativo (HORAS) |
fmanzano_dtk | 1:c7bcbf5eac28 | 90 | switch (*horas) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 91 | case 0 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 92 | d7_h -> write(DIGITOS[CERO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 93 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 94 | case 1 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 95 | d7_h -> write(DIGITOS[UNO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 96 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 97 | case 2 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 98 | d7_h -> write(DIGITOS[DOS_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 99 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 100 | case 3 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 101 | d7_h -> write(DIGITOS[TRES_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 102 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 103 | case 4 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 104 | d7_h -> write(DIGITOS[CUATRO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 105 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 106 | case 5 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 107 | d7_h -> write(DIGITOS[CINCO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 108 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 109 | case 6 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 110 | d7_h -> write(DIGITOS[SEIS_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 111 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 112 | case 7 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 113 | d7_h -> write(DIGITOS[SIETE_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 114 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 115 | case 8 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 116 | d7_h -> write(DIGITOS[OCHO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 117 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 118 | case 9 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 119 | d7_h -> write(DIGITOS[NUEVE_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 120 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 121 | case 10: |
fmanzano_dtk | 1:c7bcbf5eac28 | 122 | d7_h -> write(DIGITOS[APAGADO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 123 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 124 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 125 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 126 | // DECENAS DE MINUTOS |
fmanzano_dtk | 1:c7bcbf5eac28 | 127 | switch (*decenas) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 128 | case 0 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 129 | d7_d -> write(DIGITOS[CERO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 130 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 131 | case 1 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 132 | d7_d -> write(DIGITOS[UNO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 133 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 134 | case 2 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 135 | d7_d -> write(DIGITOS[DOS_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 136 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 137 | case 3 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 138 | d7_d -> write(DIGITOS[TRES_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 139 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 140 | case 4 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 141 | d7_d -> write(DIGITOS[CUATRO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 142 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 143 | case 5 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 144 | d7_d -> write(DIGITOS[CINCO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 145 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 146 | case 6 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 147 | d7_d -> write(DIGITOS[SEIS_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 148 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 149 | case 7 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 150 | d7_d -> write(DIGITOS[SIETE_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 151 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 152 | case 8 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 153 | d7_d -> write(DIGITOS[OCHO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 154 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 155 | case 9 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 156 | d7_d -> write(DIGITOS[NUEVE_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 157 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 158 | case 10: |
fmanzano_dtk | 1:c7bcbf5eac28 | 159 | d7_d -> write(DIGITOS[APAGADO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 160 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 161 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 162 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 163 | // Digito menos significativo (MINUTOS ) |
fmanzano_dtk | 1:c7bcbf5eac28 | 164 | switch (*minutos) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 165 | case 0 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 166 | d7_m -> write(DIGITOS[CERO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 167 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 168 | case 1 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 169 | d7_m -> write(DIGITOS[UNO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 170 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 171 | case 2 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 172 | d7_m -> write(DIGITOS[DOS_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 173 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 174 | case 3 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 175 | d7_m -> write(DIGITOS[TRES_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 176 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 177 | case 4 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 178 | d7_m -> write(DIGITOS[CUATRO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 179 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 180 | case 5 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 181 | d7_m -> write(DIGITOS[CINCO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 182 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 183 | case 6 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 184 | d7_m -> write(DIGITOS[SEIS_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 185 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 186 | case 7 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 187 | d7_m -> write(DIGITOS[SIETE_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 188 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 189 | case 8 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 190 | d7_m -> write(DIGITOS[OCHO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 191 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 192 | case 9 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 193 | d7_m -> write(DIGITOS[NUEVE_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 194 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 195 | case 10: |
fmanzano_dtk | 1:c7bcbf5eac28 | 196 | d7_m -> write(DIGITOS[APAGADO_7S]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 197 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 198 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 199 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 200 | return(0); |
fmanzano_dtk | 1:c7bcbf5eac28 | 201 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 202 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 203 | int presentar_torre(const int *color, BusOut *torre_luz) |
fmanzano_dtk | 1:c7bcbf5eac28 | 204 | { |
fmanzano_dtk | 1:c7bcbf5eac28 | 205 | /* |
fmanzano_dtk | 1:c7bcbf5eac28 | 206 | Esta función recibe el código de color correspondiente a la torre de luz |
fmanzano_dtk | 1:c7bcbf5eac28 | 207 | estilo semaforo para activar el LED correspondiente. |
fmanzano_dtk | 1:c7bcbf5eac28 | 208 | La función siempre retorna 0 |
fmanzano_dtk | 1:c7bcbf5eac28 | 209 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 210 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 211 | switch (*color) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 212 | case 0 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 213 | torre_luz -> write(COLOR_TORRE_LUZ[APAGADO_TL]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 214 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 215 | case 1 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 216 | torre_luz -> write(COLOR_TORRE_LUZ[VERDE]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 217 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 218 | case 2 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 219 | torre_luz -> write(COLOR_TORRE_LUZ[AMARILLO]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 220 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 221 | case 3 : |
fmanzano_dtk | 1:c7bcbf5eac28 | 222 | torre_luz -> write(COLOR_TORRE_LUZ[ROJO]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 223 | break; |
fmanzano_dtk | 1:c7bcbf5eac28 | 224 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 225 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 226 | return(0); |
fmanzano_dtk | 1:c7bcbf5eac28 | 227 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 228 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 229 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 230 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 231 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 232 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 233 | * Esta función se encarga de buscar el grupo al que está asignado el TAGRFiD |
fmanzano_dtk | 1:c7bcbf5eac28 | 234 | que ha sido leido por el lector. Se ha predefinido 3 arreglos con los TAG |
fmanzano_dtk | 1:c7bcbf5eac28 | 235 | validos. En función del arreglo en que se genere la coincidencia se retorna |
fmanzano_dtk | 1:c7bcbf5eac28 | 236 | el tiempo para cambiar. |
fmanzano_dtk | 1:c7bcbf5eac28 | 237 | La función retorna 1 cuando encuentra coincidencia. 0 cuando no encuentra coincidencia y |
fmanzano_dtk | 1:c7bcbf5eac28 | 238 | se define el tiempo de la torre de luz amarillo y rojo en 50 minutos y 1 hora. |
fmanzano_dtk | 1:c7bcbf5eac28 | 239 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 240 | * @param id |
fmanzano_dtk | 1:c7bcbf5eac28 | 241 | * @param amarillo |
fmanzano_dtk | 1:c7bcbf5eac28 | 242 | * @param rojo |
fmanzano_dtk | 1:c7bcbf5eac28 | 243 | * @return int |
fmanzano_dtk | 1:c7bcbf5eac28 | 244 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 245 | int tiempo_asignado(char id[9], int *amarillo, int *rojo) |
fmanzano_dtk | 1:c7bcbf5eac28 | 246 | { |
fmanzano_dtk | 1:c7bcbf5eac28 | 247 | int i = 0; |
fmanzano_dtk | 1:c7bcbf5eac28 | 248 | int v = 0; |
fmanzano_dtk | 1:c7bcbf5eac28 | 249 | int busca_id = 0; |
fmanzano_dtk | 1:c7bcbf5eac28 | 250 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 251 | for (i=0; i<TOTAL_PLACAS_A; i++) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 252 | busca_id = strncmp(PLACAS_A[i], id, 10); |
fmanzano_dtk | 1:c7bcbf5eac28 | 253 | if (busca_id == 0) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 254 | *amarillo = GRUPO_A_AMARILLO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 255 | *rojo = GRUPO_A_ROJO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 256 | v = 1; return(1); |
fmanzano_dtk | 1:c7bcbf5eac28 | 257 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 258 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 259 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 260 | for (i=0; i<TOTAL_PLACAS_B; i++) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 261 | busca_id = strncmp(PLACAS_B[i], id, 10); |
fmanzano_dtk | 1:c7bcbf5eac28 | 262 | if (busca_id == 0) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 263 | *amarillo = GRUPO_B_AMARILLO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 264 | *rojo = GRUPO_B_ROJO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 265 | v = 1; return(1); |
fmanzano_dtk | 1:c7bcbf5eac28 | 266 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 267 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 268 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 269 | for (i=0; i<TOTAL_PLACAS_C; i++) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 270 | busca_id = strncmp(PLACAS_C[i], id, 10); |
fmanzano_dtk | 1:c7bcbf5eac28 | 271 | if (busca_id == 0) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 272 | *amarillo = GRUPO_C_AMARILLO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 273 | *rojo = GRUPO_C_ROJO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 274 | v = 1; return(1); |
fmanzano_dtk | 1:c7bcbf5eac28 | 275 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 276 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 277 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 278 | if (v) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 279 | return(1); |
fmanzano_dtk | 1:c7bcbf5eac28 | 280 | } else { |
fmanzano_dtk | 1:c7bcbf5eac28 | 281 | *amarillo = GRUPO_DEFAULT_AMARILLO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 282 | *rojo = GRUPO_DEFAULT_ROJO; |
fmanzano_dtk | 1:c7bcbf5eac28 | 283 | return(0); |
fmanzano_dtk | 1:c7bcbf5eac28 | 284 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 285 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 286 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 287 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 288 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 289 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 290 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 291 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 292 | * Esta función se encarga de analisar el payload de una |
fmanzano_dtk | 1:c7bcbf5eac28 | 293 | huella que es enviada dentro de una cadena (char array) |
fmanzano_dtk | 1:c7bcbf5eac28 | 294 | expresada de manera hexadecimal. en su equivalente de código |
fmanzano_dtk | 1:c7bcbf5eac28 | 295 | ASCII que es guardado en otra cadena. |
fmanzano_dtk | 1:c7bcbf5eac28 | 296 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 297 | * @param id_original |
fmanzano_dtk | 1:c7bcbf5eac28 | 298 | * @param id_hex |
fmanzano_dtk | 1:c7bcbf5eac28 | 299 | * @param tamano_id |
fmanzano_dtk | 1:c7bcbf5eac28 | 300 | * @return int |
fmanzano_dtk | 1:c7bcbf5eac28 | 301 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 302 | int convertir_id(char id_original[256], char id_hex[15], int *tamano_id) |
fmanzano_dtk | 1:c7bcbf5eac28 | 303 | { |
fmanzano_dtk | 1:c7bcbf5eac28 | 304 | int i = 0; |
fmanzano_dtk | 1:c7bcbf5eac28 | 305 | int j = 0; |
fmanzano_dtk | 1:c7bcbf5eac28 | 306 | int limite = *tamano_id; |
fmanzano_dtk | 1:c7bcbf5eac28 | 307 | int k = 0; |
fmanzano_dtk | 1:c7bcbf5eac28 | 308 | char tmp_buffer_ascii[77]; |
fmanzano_dtk | 1:c7bcbf5eac28 | 309 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 310 | memset(tmp_buffer_ascii, '\0', sizeof tmp_buffer_ascii); |
fmanzano_dtk | 1:c7bcbf5eac28 | 311 | memset(id_hex, '\0', sizeof id_hex); |
fmanzano_dtk | 1:c7bcbf5eac28 | 312 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 313 | for (i=0; i<limite; i++) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 314 | snprintf(&tmp_buffer_ascii[j*2], 3,"%02X", id_original[i]); |
fmanzano_dtk | 1:c7bcbf5eac28 | 315 | j++; |
fmanzano_dtk | 1:c7bcbf5eac28 | 316 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 317 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 318 | limite = strlen(tmp_buffer_ascii); |
fmanzano_dtk | 1:c7bcbf5eac28 | 319 | k = limite - 14; |
fmanzano_dtk | 1:c7bcbf5eac28 | 320 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 321 | strncpy(id_hex, &tmp_buffer_ascii[k], 14); |
fmanzano_dtk | 1:c7bcbf5eac28 | 322 | id_hex[15] = '\0'; |
fmanzano_dtk | 1:c7bcbf5eac28 | 323 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 324 | return(1); |
fmanzano_dtk | 1:c7bcbf5eac28 | 325 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 326 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 327 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 328 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 329 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 330 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 331 | * Esta funsión se utiliza para limpiar el buffer de recepción del puerto seleccionado. |
fmanzano_dtk | 1:c7bcbf5eac28 | 332 | No se guarda ninguna información. Siempre devuelve true |
fmanzano_dtk | 1:c7bcbf5eac28 | 333 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 334 | * @param uart |
fmanzano_dtk | 1:c7bcbf5eac28 | 335 | * @return true |
fmanzano_dtk | 1:c7bcbf5eac28 | 336 | * @return false |
fmanzano_dtk | 1:c7bcbf5eac28 | 337 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 338 | bool flush_uart_rx(BufferedSerial *uart) |
fmanzano_dtk | 1:c7bcbf5eac28 | 339 | { |
fmanzano_dtk | 1:c7bcbf5eac28 | 340 | while (uart -> readable()) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 341 | uart -> getc(); |
fmanzano_dtk | 1:c7bcbf5eac28 | 342 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 343 | return(true); |
fmanzano_dtk | 1:c7bcbf5eac28 | 344 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 345 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 346 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 347 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 348 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 349 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 350 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 351 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 352 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 353 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 354 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 355 | extern Serial pcusb; |
fmanzano_dtk | 1:c7bcbf5eac28 | 356 | extern BusOut torreLuz; |
fmanzano_dtk | 1:c7bcbf5eac28 | 357 | extern BusOut display_H; |
fmanzano_dtk | 1:c7bcbf5eac28 | 358 | extern BusOut display_dM; |
fmanzano_dtk | 1:c7bcbf5eac28 | 359 | extern BusOut display_uM; |
fmanzano_dtk | 3:bf6747585064 | 360 | extern Ticker ticker_minuto; |
fmanzano_dtk | 3:bf6747585064 | 361 | extern Timer t_ocupado; |
fmanzano_dtk | 3:bf6747585064 | 362 | extern Timer t_apagado; |
fmanzano_dtk | 1:c7bcbf5eac28 | 363 | extern float tiempo_actual; |
fmanzano_dtk | 1:c7bcbf5eac28 | 364 | extern bool mostrar_tiempo; |
fmanzano_dtk | 1:c7bcbf5eac28 | 365 | extern char actual_trailerID_HEX[]; |
fmanzano_dtk | 1:c7bcbf5eac28 | 366 | extern char antena_trailerID_HEX[]; |
fmanzano_dtk | 1:c7bcbf5eac28 | 367 | extern int rtc_delta; |
fmanzano_dtk | 1:c7bcbf5eac28 | 368 | extern int uminutos; |
fmanzano_dtk | 1:c7bcbf5eac28 | 369 | extern int dminutos; |
fmanzano_dtk | 1:c7bcbf5eac28 | 370 | extern int horas; |
fmanzano_dtk | 1:c7bcbf5eac28 | 371 | extern int tiempo_luz_amarilla; |
fmanzano_dtk | 3:bf6747585064 | 372 | extern int tiempo_luz_roja; |
fmanzano_dtk | 1:c7bcbf5eac28 | 373 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 374 | void update_Display7s() { |
fmanzano_dtk | 1:c7bcbf5eac28 | 375 | // ACTUALIZACIÓN DE PANTALLA DE CRONOMETRO |
fmanzano_dtk | 1:c7bcbf5eac28 | 376 | uminutos++; // Acumular un minuto |
fmanzano_dtk | 1:c7bcbf5eac28 | 377 | if (uminutos >= 10) { // Si es 10 cambiar 0 |
fmanzano_dtk | 1:c7bcbf5eac28 | 378 | uminutos = 0; |
fmanzano_dtk | 1:c7bcbf5eac28 | 379 | dminutos++; // Acumularse las decenas de minutos |
fmanzano_dtk | 1:c7bcbf5eac28 | 380 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 381 | if (dminutos >= 6) { // Si es 6 cambiar 0 |
fmanzano_dtk | 1:c7bcbf5eac28 | 382 | dminutos = 0; // Acumular una hora |
fmanzano_dtk | 1:c7bcbf5eac28 | 383 | horas++; |
fmanzano_dtk | 1:c7bcbf5eac28 | 384 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 385 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 386 | if (mostrar_tiempo) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 387 | rtc_delta = (int)t_ocupado.read(); |
fmanzano_dtk | 1:c7bcbf5eac28 | 388 | pcusb.printf("\r\nTiempo total en Bahia: %d segundos", rtc_delta); |
fmanzano_dtk | 1:c7bcbf5eac28 | 389 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 390 | if ((rtc_delta >= tiempo_luz_amarilla) && (rtc_delta < tiempo_luz_roja)) { // Si estamos en el rango de 50 - 59 minutos |
fmanzano_dtk | 1:c7bcbf5eac28 | 391 | pcusb.printf("\r\nSemaforo AMARILLO..."); |
fmanzano_dtk | 1:c7bcbf5eac28 | 392 | presentar_torre(&AMARILLO, &torreLuz); // Activar luz ambar |
fmanzano_dtk | 1:c7bcbf5eac28 | 393 | } else if (rtc_delta >= tiempo_luz_roja) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 394 | pcusb.printf("\r\nSemaforo ROJO..."); |
fmanzano_dtk | 1:c7bcbf5eac28 | 395 | presentar_torre(&ROJO, &torreLuz); // Activar luz roja |
fmanzano_dtk | 1:c7bcbf5eac28 | 396 | } else { |
fmanzano_dtk | 1:c7bcbf5eac28 | 397 | presentar_torre(&VERDE, &torreLuz); // Activar luz ambar |
fmanzano_dtk | 1:c7bcbf5eac28 | 398 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 399 | presentar_tiempo(&horas, &dminutos, &uminutos, &display_H, &display_dM, &display_uM);// Actualizar la vista del cronometro |
fmanzano_dtk | 1:c7bcbf5eac28 | 400 | pcusb.printf("\r\nTiempo actual [H:MM] = %d:%d%d\r\n\r\n", horas, dminutos, uminutos); |
fmanzano_dtk | 1:c7bcbf5eac28 | 401 | } else { |
fmanzano_dtk | 1:c7bcbf5eac28 | 402 | tiempo_actual = t_apagado.read(); |
fmanzano_dtk | 1:c7bcbf5eac28 | 403 | if (tiempo_actual >= (TIEMPO_RECARGA)) { |
fmanzano_dtk | 1:c7bcbf5eac28 | 404 | pcusb.printf("\r\nSobrepasa limite de %d segundos con pantallas apagadas", TIEMPO_RECARGA); |
fmanzano_dtk | 1:c7bcbf5eac28 | 405 | pcusb.printf("\r\nSe descarta TAG actual y reinicia contadores.\r\n"); |
fmanzano_dtk | 1:c7bcbf5eac28 | 406 | ticker_minuto.detach(); |
fmanzano_dtk | 1:c7bcbf5eac28 | 407 | t_apagado.stop(); |
fmanzano_dtk | 1:c7bcbf5eac28 | 408 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 409 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 410 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 411 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 412 | } |
fmanzano_dtk | 1:c7bcbf5eac28 | 413 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 414 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 415 | /** |
fmanzano_dtk | 1:c7bcbf5eac28 | 416 | * @brief |
fmanzano_dtk | 1:c7bcbf5eac28 | 417 | * |
fmanzano_dtk | 1:c7bcbf5eac28 | 418 | */ |
fmanzano_dtk | 1:c7bcbf5eac28 | 419 | extern Serial gv300; |
fmanzano_dtk | 1:c7bcbf5eac28 | 420 | extern char skytrack_frame[]; |
fmanzano_dtk | 1:c7bcbf5eac28 | 421 | extern int contador_tramas; |
fmanzano_dtk | 1:c7bcbf5eac28 | 422 | void tx_skytrack() |
fmanzano_dtk | 1:c7bcbf5eac28 | 423 | { |
fmanzano_dtk | 1:c7bcbf5eac28 | 424 | sprintf(skytrack_frame, "%s%s%s%s%04X%s", |
fmanzano_dtk | 1:c7bcbf5eac28 | 425 | CABECERA_TX,CODIGO_INT,ALIVE, FIN_CABECERA_TX, contador_tramas, ULTIMO_CARACTER); |
fmanzano_dtk | 1:c7bcbf5eac28 | 426 | gv300.printf("%s\r\n", skytrack_frame); |
fmanzano_dtk | 3:bf6747585064 | 427 | |
fmanzano_dtk | 1:c7bcbf5eac28 | 428 | incrementar_trama(&contador_tramas); |
fmanzano_dtk | 1:c7bcbf5eac28 | 429 | pcusb.printf("\r\n%s", ALIVE); |
fmanzano_dtk | 1:c7bcbf5eac28 | 430 | } |