Proyecto ABInBev para la tarjeta Guaria 1/2.

Committer:
fmanzano_dtk
Date:
Fri Jul 01 12:45:55 2022 -0600
Revision:
1:9e821e640117
Child:
7:01141979e5f2
Se importan todos los archivos de la solucion para soportar la nueva version de USBSerial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fmanzano_dtk 1:9e821e640117 1 /**
fmanzano_dtk 1:9e821e640117 2 * @file fingerprint_exe.cpp
fmanzano_dtk 1:9e821e640117 3 * @author Felícito Manzano (felicito.manzano@detektor.com.sv)
fmanzano_dtk 1:9e821e640117 4 * @brief
fmanzano_dtk 1:9e821e640117 5 * @version 0.1
fmanzano_dtk 1:9e821e640117 6 * @date 2020-10-03
fmanzano_dtk 1:9e821e640117 7 *
fmanzano_dtk 1:9e821e640117 8 * @copyright Copyright (c) 2020
fmanzano_dtk 1:9e821e640117 9 *
fmanzano_dtk 1:9e821e640117 10 */
fmanzano_dtk 1:9e821e640117 11
fmanzano_dtk 1:9e821e640117 12 #include "mbed.h"
fmanzano_dtk 1:9e821e640117 13 #include "BufferedSerial.h"
fmanzano_dtk 1:9e821e640117 14 //#include "GT521FX.hpp"
fmanzano_dtk 1:9e821e640117 15 #include "New_GT521Fx.hpp"
fmanzano_dtk 1:9e821e640117 16 #include "jq8400_voice.hpp"
fmanzano_dtk 1:9e821e640117 17 #include "voice_cn_pa.hpp"
fmanzano_dtk 1:9e821e640117 18 #include "teltonika_fmu130.hpp"
fmanzano_dtk 1:9e821e640117 19 #include "jq8400_voice.hpp"
fmanzano_dtk 1:9e821e640117 20 #include "playlist.hpp"
fmanzano_dtk 1:9e821e640117 21 #include "safety_tip_exe.hpp"
fmanzano_dtk 1:9e821e640117 22 #include "USBSerial.h"
fmanzano_dtk 1:9e821e640117 23
fmanzano_dtk 1:9e821e640117 24
fmanzano_dtk 1:9e821e640117 25 // Objetos Entradas Digitales / Seriales
fmanzano_dtk 1:9e821e640117 26 /**
fmanzano_dtk 1:9e821e640117 27 * @brief
fmanzano_dtk 1:9e821e640117 28 *
fmanzano_dtk 1:9e821e640117 29 */
fmanzano_dtk 1:9e821e640117 30 extern BufferedSerial avl_uart;
fmanzano_dtk 1:9e821e640117 31 extern BufferedSerial voice_uart;
fmanzano_dtk 1:9e821e640117 32 extern DigitalOut out1_fingerprint;
fmanzano_dtk 1:9e821e640117 33 extern DigitalOut out3_gt521fx;
fmanzano_dtk 1:9e821e640117 34 extern DigitalOut out4_gt521fx;
fmanzano_dtk 1:9e821e640117 35 extern BufferedSerial fingerprint;
fmanzano_dtk 1:9e821e640117 36 extern USBSerial myPC_debug;
fmanzano_dtk 1:9e821e640117 37 extern Ticker tick_fingerprint;
fmanzano_dtk 1:9e821e640117 38 extern Ticker tick_safety_tip;
fmanzano_dtk 1:9e821e640117 39 extern queue colaPlaylist;
fmanzano_dtk 1:9e821e640117 40
fmanzano_dtk 1:9e821e640117 41
fmanzano_dtk 1:9e821e640117 42 // Variables Externas
fmanzano_dtk 1:9e821e640117 43 /**
fmanzano_dtk 1:9e821e640117 44 * @brief
fmanzano_dtk 1:9e821e640117 45 *
fmanzano_dtk 1:9e821e640117 46 */
fmanzano_dtk 1:9e821e640117 47 extern float time_safety_tip;
fmanzano_dtk 1:9e821e640117 48 extern bool flag_fingerprint_Sleep;
fmanzano_dtk 1:9e821e640117 49 extern bool flag_driver_loggin;
fmanzano_dtk 1:9e821e640117 50 extern bool functionality_safety_tip;
fmanzano_dtk 1:9e821e640117 51 extern bool flag_fingerprint_query;
fmanzano_dtk 1:9e821e640117 52 extern bool ble_connection_state;
fmanzano_dtk 1:9e821e640117 53 extern bool fingerprint_override;
fmanzano_dtk 1:9e821e640117 54 extern bool ignition;
fmanzano_dtk 1:9e821e640117 55 extern bool finterprint_flag_working;
fmanzano_dtk 1:9e821e640117 56 extern bool fingerprint_flag_poweroff;
fmanzano_dtk 1:9e821e640117 57 extern int fingerprint_login;
fmanzano_dtk 1:9e821e640117 58 extern int flag_fingerprint_turOn;
fmanzano_dtk 1:9e821e640117 59 extern int fp_override_limit;
fmanzano_dtk 1:9e821e640117 60 extern int fp_unauthorized_count;
fmanzano_dtk 1:9e821e640117 61 extern int items_queue;
fmanzano_dtk 1:9e821e640117 62
fmanzano_dtk 1:9e821e640117 63
fmanzano_dtk 1:9e821e640117 64 // Variables locales
fmanzano_dtk 1:9e821e640117 65 /**
fmanzano_dtk 1:9e821e640117 66 * @brief
fmanzano_dtk 1:9e821e640117 67 *
fmanzano_dtk 1:9e821e640117 68 */
fmanzano_dtk 1:9e821e640117 69 int fp_answer = 0;
fmanzano_dtk 1:9e821e640117 70 int w;
fmanzano_dtk 1:9e821e640117 71 char id_buffer[64];
fmanzano_dtk 1:9e821e640117 72 const char TCA_ID_FP_LOGIN[] = "TCA|004|DTK_FP;";
fmanzano_dtk 1:9e821e640117 73 const char TCA_ID_UNIDENTIFIED[] = "TCA|110|";
fmanzano_dtk 1:9e821e640117 74 const char TCA_ID_LECTOR_HUE[] = "TCA|111|";
fmanzano_dtk 1:9e821e640117 75 const char TCA_FP_INIT[] = "TCA|154|";
fmanzano_dtk 1:9e821e640117 76 const char TCA_ID_OVERRIDE_ID[] = "TCA|149|0";
fmanzano_dtk 1:9e821e640117 77 const char FP_ENGINE_LOCK[] = "setdigout 0?? ? ? ? ? ? ?";
fmanzano_dtk 1:9e821e640117 78 const char FP_ENGINE_UNLOCK[] = "setdigout 1?? ? ? ? ? ? ?";
fmanzano_dtk 1:9e821e640117 79
fmanzano_dtk 1:9e821e640117 80 #define DEBUG_F_CPP 1
fmanzano_dtk 1:9e821e640117 81 /**
fmanzano_dtk 1:9e821e640117 82 * @brief
fmanzano_dtk 1:9e821e640117 83 *
fmanzano_dtk 1:9e821e640117 84 */
fmanzano_dtk 1:9e821e640117 85 void identify_fingerPrint() {
fmanzano_dtk 1:9e821e640117 86 flag_fingerprint_query = false;
fmanzano_dtk 1:9e821e640117 87 memset(id_buffer, '\0', sizeof(id_buffer));
fmanzano_dtk 1:9e821e640117 88
fmanzano_dtk 1:9e821e640117 89 if (out3_gt521fx) {
fmanzano_dtk 1:9e821e640117 90 /* DESHABILITADA LA FUNCIÓN DE SLEEP EN EL LECTOR
fmanzano_dtk 1:9e821e640117 91 if (flag_fingerprint_Sleep) {
fmanzano_dtk 1:9e821e640117 92 fingerprint.WakeUp();
fmanzano_dtk 1:9e821e640117 93 flag_fingerprint_Sleep = false;
fmanzano_dtk 1:9e821e640117 94 //myPC_debug.printf("FP - GT521Fx@WakeUp\r\n");
fmanzano_dtk 1:9e821e640117 95 jq8400_addQueue(VOICE_functionality_fingerprint_reader);
fmanzano_dtk 1:9e821e640117 96 }
fmanzano_dtk 1:9e821e640117 97 */
fmanzano_dtk 1:9e821e640117 98 if (!(flag_driver_loggin) && ignition) {
fmanzano_dtk 1:9e821e640117 99 //Verificar con ignicion
fmanzano_dtk 1:9e821e640117 100 //fingerprint.CmosLed(1);
fmanzano_dtk 1:9e821e640117 101 FP_LED_open();
fmanzano_dtk 1:9e821e640117 102 wait_us(50000);
fmanzano_dtk 1:9e821e640117 103
fmanzano_dtk 1:9e821e640117 104 //fp_answer = fingerprint.IsPress();
fmanzano_dtk 1:9e821e640117 105 fp_answer = FP_IsPressFinger();
fmanzano_dtk 1:9e821e640117 106
fmanzano_dtk 1:9e821e640117 107 if (fp_answer == 0) {
fmanzano_dtk 1:9e821e640117 108 //fingerprint.Capture(1);
fmanzano_dtk 1:9e821e640117 109 FP_CaptureFinger(1);
fmanzano_dtk 1:9e821e640117 110
fmanzano_dtk 1:9e821e640117 111 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 112 myPC_debug.printf("FP - Capturando...\r\n");
fmanzano_dtk 1:9e821e640117 113 #endif
fmanzano_dtk 1:9e821e640117 114 //fingerprint_login = fingerprint.Identify();
fmanzano_dtk 1:9e821e640117 115 fingerprint_login = FP_Identify();
fmanzano_dtk 1:9e821e640117 116
fmanzano_dtk 1:9e821e640117 117 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 118 myPC_debug.printf("FP - ID: %d\r\n", fingerprint_login);
fmanzano_dtk 1:9e821e640117 119 #endif
fmanzano_dtk 1:9e821e640117 120 FP_LED_close();
fmanzano_dtk 1:9e821e640117 121
fmanzano_dtk 1:9e821e640117 122 if (fingerprint_login >= 0) {
fmanzano_dtk 1:9e821e640117 123 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 124 myPC_debug.printf("FP - Autorizado...\r\n");
fmanzano_dtk 1:9e821e640117 125 #endif
fmanzano_dtk 1:9e821e640117 126 tick_fingerprint.detach();
fmanzano_dtk 1:9e821e640117 127 jq8400_addQueue(VOICE_DRIVER_AUTHORIZED);
fmanzano_dtk 1:9e821e640117 128 jq8400_addQueue(VOICE_WELLCOME);
fmanzano_dtk 1:9e821e640117 129
fmanzano_dtk 1:9e821e640117 130 // Limpiar cola
fmanzano_dtk 1:9e821e640117 131 if (ble_connection_state) {
fmanzano_dtk 1:9e821e640117 132 // No hacer nada
fmanzano_dtk 1:9e821e640117 133 } else {
fmanzano_dtk 1:9e821e640117 134 // jq8400_addQueue(VOICE_FP_AUTH_NO_BLUETOOTH); // Solicitar asistencia remota
fmanzano_dtk 1:9e821e640117 135 }
fmanzano_dtk 1:9e821e640117 136
fmanzano_dtk 1:9e821e640117 137 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 138 myPC_debug.printf("%s\r\n", FP_ENGINE_UNLOCK);
fmanzano_dtk 1:9e821e640117 139 #endif
fmanzano_dtk 1:9e821e640117 140 tx_fmu130_command(FP_ENGINE_UNLOCK, &avl_uart);
fmanzano_dtk 1:9e821e640117 141 out1_fingerprint = 1;
fmanzano_dtk 1:9e821e640117 142 wait_us(1000000);
fmanzano_dtk 1:9e821e640117 143 out1_fingerprint = 0;
fmanzano_dtk 1:9e821e640117 144 fp_unauthorized_count = 0;
fmanzano_dtk 1:9e821e640117 145 flag_fingerprint_turOn = false;
fmanzano_dtk 1:9e821e640117 146 flag_driver_loggin = true;
fmanzano_dtk 1:9e821e640117 147 FP_LED_close();
fmanzano_dtk 1:9e821e640117 148 FP_Close();
fmanzano_dtk 1:9e821e640117 149 wait_us(1000000);
fmanzano_dtk 1:9e821e640117 150 fingerprint_flag_poweroff = true;
fmanzano_dtk 1:9e821e640117 151
fmanzano_dtk 1:9e821e640117 152 if (functionality_safety_tip) {
fmanzano_dtk 1:9e821e640117 153 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 154 myPC_debug.printf("FP - Ticker de Tip de Seguridad Iniciado\r\n");
fmanzano_dtk 1:9e821e640117 155 #endif
fmanzano_dtk 1:9e821e640117 156 tick_safety_tip.attach(&play_SafetyTip, time_safety_tip);
fmanzano_dtk 1:9e821e640117 157 }
fmanzano_dtk 1:9e821e640117 158
fmanzano_dtk 1:9e821e640117 159 /* DESHABILITADA LA FUNCIÓN DE SLEEP EN EL LECTOR
fmanzano_dtk 1:9e821e640117 160 fingerprint.Sleep();
fmanzano_dtk 1:9e821e640117 161 flag_fingerprint_Sleep = true;
fmanzano_dtk 1:9e821e640117 162 */
fmanzano_dtk 1:9e821e640117 163
fmanzano_dtk 1:9e821e640117 164 sprintf(id_buffer, "%s%04d", TCA_ID_FP_LOGIN, fingerprint_login);
fmanzano_dtk 1:9e821e640117 165 tx_fmu130_message(id_buffer, &avl_uart);
fmanzano_dtk 1:9e821e640117 166 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 167 myPC_debug.printf("GPIO - GT521Fx@Sleep %d\r\n", flag_fingerprint_Sleep);
fmanzano_dtk 1:9e821e640117 168 myPC_debug.printf("%s\r\n", id_buffer);
fmanzano_dtk 1:9e821e640117 169 #endif
fmanzano_dtk 1:9e821e640117 170
fmanzano_dtk 1:9e821e640117 171 wait_us(100000);
fmanzano_dtk 1:9e821e640117 172 sprintf(id_buffer, "%s3", TCA_ID_LECTOR_HUE);
fmanzano_dtk 1:9e821e640117 173 tx_fmu130_message(id_buffer, &avl_uart);
fmanzano_dtk 1:9e821e640117 174 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 175 myPC_debug.printf("%s\r\n", id_buffer);
fmanzano_dtk 1:9e821e640117 176 #endif
fmanzano_dtk 1:9e821e640117 177 } else {
fmanzano_dtk 1:9e821e640117 178 jq8400_addQueue(VOICE_DRIVER_UNAUTHORIZED);
fmanzano_dtk 1:9e821e640117 179 //avl_uart.printf("%s\r\n", FP_ENGINE_LOCK);
fmanzano_dtk 1:9e821e640117 180 sprintf(id_buffer, "%s%d", TCA_ID_UNIDENTIFIED, fingerprint_login);
fmanzano_dtk 1:9e821e640117 181 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 182 myPC_debug.printf("FP - No Autorizado...\r\n");
fmanzano_dtk 1:9e821e640117 183 myPC_debug.printf("%s\r\n", id_buffer);
fmanzano_dtk 1:9e821e640117 184 #endif
fmanzano_dtk 1:9e821e640117 185 tx_fmu130_message(id_buffer, &avl_uart);
fmanzano_dtk 1:9e821e640117 186 //fingerprint.CmosLed(0);
fmanzano_dtk 1:9e821e640117 187 FP_LED_close();
fmanzano_dtk 1:9e821e640117 188
fmanzano_dtk 1:9e821e640117 189 if (fingerprint_override) {
fmanzano_dtk 1:9e821e640117 190 fp_unauthorized_count++;
fmanzano_dtk 1:9e821e640117 191 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 192 myPC_debug.printf("FP - %d de %d para Anular Identificacion de Huella\r\n", fp_unauthorized_count, fp_override_limit);
fmanzano_dtk 1:9e821e640117 193 #endif
fmanzano_dtk 1:9e821e640117 194 if (fp_unauthorized_count >= fp_override_limit)
fmanzano_dtk 1:9e821e640117 195 {
fmanzano_dtk 1:9e821e640117 196 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 197 myPC_debug.printf("FP - Anulando identificacion de Conductor...\r\n");
fmanzano_dtk 1:9e821e640117 198 #endif
fmanzano_dtk 1:9e821e640117 199 /////////////////////////////
fmanzano_dtk 1:9e821e640117 200 // Limpiar cola de mensajes de voz
fmanzano_dtk 1:9e821e640117 201
fmanzano_dtk 1:9e821e640117 202 //
fmanzano_dtk 1:9e821e640117 203 if (ble_connection_state) {
fmanzano_dtk 1:9e821e640117 204 jq8400_addQueue(VOICE_DRIVER_AUTHORIZED);
fmanzano_dtk 1:9e821e640117 205 } else {
fmanzano_dtk 1:9e821e640117 206 // jq8400_addQueue(VOICE_FP_AUTH_NO_BLUETOOTH); // Solicitar asistencia remota
fmanzano_dtk 1:9e821e640117 207 }
fmanzano_dtk 1:9e821e640117 208 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 209 myPC_debug.printf("%s\r\n", FP_ENGINE_UNLOCK);
fmanzano_dtk 1:9e821e640117 210 #endif
fmanzano_dtk 1:9e821e640117 211 tx_fmu130_command(FP_ENGINE_UNLOCK, &avl_uart);
fmanzano_dtk 1:9e821e640117 212 out1_fingerprint = 1;
fmanzano_dtk 1:9e821e640117 213 wait_us(1000000);
fmanzano_dtk 1:9e821e640117 214 out1_fingerprint = 0;
fmanzano_dtk 1:9e821e640117 215 fp_unauthorized_count = 0;
fmanzano_dtk 1:9e821e640117 216 flag_fingerprint_turOn = false;
fmanzano_dtk 1:9e821e640117 217 flag_driver_loggin = true;
fmanzano_dtk 1:9e821e640117 218 tick_fingerprint.detach();
fmanzano_dtk 1:9e821e640117 219 FP_LED_close();
fmanzano_dtk 1:9e821e640117 220 wait_us(1000000);
fmanzano_dtk 1:9e821e640117 221 fingerprint_flag_poweroff = true;
fmanzano_dtk 1:9e821e640117 222
fmanzano_dtk 1:9e821e640117 223 if (functionality_safety_tip) {
fmanzano_dtk 1:9e821e640117 224 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 225 myPC_debug.printf("FP - Ticker de Tip de Seguridad Iniciado\r\n");
fmanzano_dtk 1:9e821e640117 226 #endif
fmanzano_dtk 1:9e821e640117 227 tick_safety_tip.attach(&play_SafetyTip, time_safety_tip);
fmanzano_dtk 1:9e821e640117 228 }
fmanzano_dtk 1:9e821e640117 229 sprintf(id_buffer, "%s", TCA_ID_OVERRIDE_ID);
fmanzano_dtk 1:9e821e640117 230 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 231 myPC_debug.printf("%s\r\n", id_buffer);
fmanzano_dtk 1:9e821e640117 232 #endif
fmanzano_dtk 1:9e821e640117 233 tx_fmu130_message(id_buffer, &avl_uart);
fmanzano_dtk 1:9e821e640117 234 }
fmanzano_dtk 1:9e821e640117 235 }
fmanzano_dtk 1:9e821e640117 236 }
fmanzano_dtk 1:9e821e640117 237 } else {
fmanzano_dtk 1:9e821e640117 238 //fingerprint.CmosLed(0);
fmanzano_dtk 1:9e821e640117 239 FP_LED_close();
fmanzano_dtk 1:9e821e640117 240
fmanzano_dtk 1:9e821e640117 241 // Limpiar cola de mensajes de voz
fmanzano_dtk 1:9e821e640117 242 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 243 myPC_debug.printf("FP - No Presionado\r\n");
fmanzano_dtk 1:9e821e640117 244 #endif
fmanzano_dtk 1:9e821e640117 245 }
fmanzano_dtk 1:9e821e640117 246 }
fmanzano_dtk 1:9e821e640117 247 }
fmanzano_dtk 1:9e821e640117 248 }
fmanzano_dtk 1:9e821e640117 249
fmanzano_dtk 1:9e821e640117 250 /**
fmanzano_dtk 1:9e821e640117 251 * @brief
fmanzano_dtk 1:9e821e640117 252 *
fmanzano_dtk 1:9e821e640117 253 */
fmanzano_dtk 1:9e821e640117 254 void initFingerprintReader() {
fmanzano_dtk 1:9e821e640117 255 // Variable Interna
fmanzano_dtk 1:9e821e640117 256 int answer_GT521Fx = -1;
fmanzano_dtk 1:9e821e640117 257 wait_us(100000); // Tiempo de espera para inicializar el sensor
fmanzano_dtk 1:9e821e640117 258 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 259 myPC_debug.printf("\r\nInicializando GT521Fx");
fmanzano_dtk 1:9e821e640117 260 #endif
fmanzano_dtk 1:9e821e640117 261
fmanzano_dtk 1:9e821e640117 262 answer_GT521Fx = FP_Open();
fmanzano_dtk 1:9e821e640117 263 sprintf(id_buffer, "%s%d", TCA_FP_INIT, answer_GT521Fx);
fmanzano_dtk 1:9e821e640117 264 #ifdef DEBUG_F_CPP
fmanzano_dtk 1:9e821e640117 265 myPC_debug.printf("%s\r\n", id_buffer);
fmanzano_dtk 1:9e821e640117 266 myPC_debug.printf("\r\nGT521Fx Open: OK\r\n");
fmanzano_dtk 1:9e821e640117 267 #endif
fmanzano_dtk 1:9e821e640117 268 tx_fmu130_message(id_buffer, &avl_uart);
fmanzano_dtk 1:9e821e640117 269 FP_Close();
fmanzano_dtk 1:9e821e640117 270 }