Proyecto ABInBev para la tarjeta Guaria 1/2.

Committer:
fmanzano_dtk
Date:
Thu Jul 07 14:49:02 2022 +0000
Revision:
16:772ea817ec43
Parent:
15:6033d2f3d819
Child:
17:c53ea16f75c0
Version no compilable. Se soluciona problema de libreria de I2C de mbed. Pendiente solventar inconveniente con HEADER HPP para solventar error de simbolo no definido.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fmanzano_dtk 1:9e821e640117 1 /**
fmanzano_dtk 1:9e821e640117 2 * @file New_GT521Fx.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 2021-02-13
fmanzano_dtk 1:9e821e640117 7 *
fmanzano_dtk 1:9e821e640117 8 * @copyright Copyright (c) 2021
fmanzano_dtk 1:9e821e640117 9 *
fmanzano_dtk 1:9e821e640117 10 */
fmanzano_dtk 1:9e821e640117 11
fmanzano_dtk 1:9e821e640117 12 #include "New_GT521Fx.hpp"
fmanzano_dtk 1:9e821e640117 13 #include "BufferedSerial.h"
fmanzano_dtk 16:772ea817ec43 14 #include "flash_eeprom.h"
fmanzano_dtk 1:9e821e640117 15 #include "teltonika_fmu130.hpp"
fmanzano_dtk 1:9e821e640117 16 #include "USBSerial.h"
fmanzano_dtk 1:9e821e640117 17 #include "eeprom.h"
fmanzano_dtk 10:a0005a4116ae 18 #include "flash_ee_exe.hpp"
fmanzano_dtk 5:07720e3f99d2 19 #include "eeprom_exe.hpp"
fmanzano_dtk 1:9e821e640117 20 #include <ctype.h>
fmanzano_dtk 1:9e821e640117 21
fmanzano_dtk 1:9e821e640117 22 extern BufferedSerial fingerprint;
fmanzano_dtk 1:9e821e640117 23 extern BufferedSerial avl_uart;
fmanzano_dtk 12:5881f350b4da 24 extern DigitalOut out1_fingerprint;
fmanzano_dtk 12:5881f350b4da 25 extern USBSerial myPC_debug;
fmanzano_dtk 12:5881f350b4da 26 extern uint16_t VirtAddVarTab[];
fmanzano_dtk 12:5881f350b4da 27 extern uint16_t VarDataTab[];
fmanzano_dtk 1:9e821e640117 28 extern uint32_t eprom_AddressArray[];
fmanzano_dtk 12:5881f350b4da 29 extern bool functionality_fingerprint_reader;
fmanzano_dtk 1:9e821e640117 30 extern bool fingerprint_flag_poweroff;
fmanzano_dtk 1:9e821e640117 31 extern EEPROM ep;
fmanzano_dtk 10:a0005a4116ae 32 extern const bool external_eeprom;
fmanzano_dtk 1:9e821e640117 33
fmanzano_dtk 1:9e821e640117 34 unsigned long return_para;
fmanzano_dtk 1:9e821e640117 35 unsigned short return_ack;
fmanzano_dtk 12:5881f350b4da 36 const char TCA_ID_FP_FAILURE[] = "TCA|157|0";
fmanzano_dtk 1:9e821e640117 37 const char TCA_ID_FP_DISABLE[] = "TCA|111|0";
fmanzano_dtk 1:9e821e640117 38 const char GT521_ENGINE_UNLOCK[] = "setdigout 1?? ? ? ? ? ? ?";
fmanzano_dtk 12:5881f350b4da 39 char error_buffer[64];
fmanzano_dtk 1:9e821e640117 40
fmanzano_dtk 1:9e821e640117 41 COMMAND_PACKAGE_STRUCTURE command_package;
fmanzano_dtk 1:9e821e640117 42 DATA_PACKAGE_STRUCTURE data_package;
fmanzano_dtk 1:9e821e640117 43 #define NEW_GT521FX_CPP
fmanzano_dtk 1:9e821e640117 44
fmanzano_dtk 1:9e821e640117 45 void SendCommand(unsigned char *ucData, unsigned int length) {
fmanzano_dtk 1:9e821e640117 46 unsigned int i;
fmanzano_dtk 1:9e821e640117 47 for(i = 0; i < length; i++)
fmanzano_dtk 1:9e821e640117 48 fingerprint.putc(*(ucData + i));
fmanzano_dtk 1:9e821e640117 49 }
fmanzano_dtk 1:9e821e640117 50
fmanzano_dtk 1:9e821e640117 51 void SendData(unsigned char *ucData, unsigned int length) {
fmanzano_dtk 1:9e821e640117 52 unsigned int i;
fmanzano_dtk 1:9e821e640117 53 for(i = 0; i < length; i++)
fmanzano_dtk 1:9e821e640117 54 fingerprint.putc(*(ucData + i));
fmanzano_dtk 1:9e821e640117 55 }
fmanzano_dtk 1:9e821e640117 56
fmanzano_dtk 1:9e821e640117 57 void ReceiveCommand(unsigned char *ucData,unsigned int length) {
fmanzano_dtk 1:9e821e640117 58 unsigned int i=0,time_out=0;
fmanzano_dtk 1:9e821e640117 59 do {
fmanzano_dtk 1:9e821e640117 60 if(fingerprint.readable()>0) {
fmanzano_dtk 1:9e821e640117 61 time_out = 0;
fmanzano_dtk 1:9e821e640117 62 if(i < length) {
fmanzano_dtk 1:9e821e640117 63 *(ucData + i) = (uint8_t)fingerprint.getc();
fmanzano_dtk 1:9e821e640117 64 i++; //write command package from RX
fmanzano_dtk 1:9e821e640117 65 }
fmanzano_dtk 1:9e821e640117 66 } else {
fmanzano_dtk 1:9e821e640117 67 wait_us(1000);
fmanzano_dtk 1:9e821e640117 68 time_out++;
fmanzano_dtk 1:9e821e640117 69 if(time_out==5001) {
fmanzano_dtk 1:9e821e640117 70 if (!(fingerprint_flag_poweroff)) {
fmanzano_dtk 1:9e821e640117 71 #ifdef NEW_GT521FX_CPP
fmanzano_dtk 1:9e821e640117 72 myPC_debug.printf("ERROR - GT521Fx no responde\r\n");
fmanzano_dtk 1:9e821e640117 73 #endif
fmanzano_dtk 1:9e821e640117 74 functionality_fingerprint_reader = false;
fmanzano_dtk 10:a0005a4116ae 75 if (external_eeprom) {
fmanzano_dtk 16:772ea817ec43 76 //ep.write(eprom_AddressArray[EE_Address_FINGERPRINT], ((uint16_t) false));
fmanzano_dtk 10:a0005a4116ae 77 } else {
fmanzano_dtk 16:772ea817ec43 78 //EE_WriteVariable(VirtAddVarTab[AP_FINGERPRINT], ((uint16_t) false));
fmanzano_dtk 10:a0005a4116ae 79 }
fmanzano_dtk 1:9e821e640117 80 memset(error_buffer, '\0', sizeof(error_buffer));
fmanzano_dtk 1:9e821e640117 81 sprintf(error_buffer, "%s", TCA_ID_FP_FAILURE);
fmanzano_dtk 1:9e821e640117 82 tx_fmu130_message(error_buffer, &avl_uart);
fmanzano_dtk 1:9e821e640117 83 wait_us(1000000);
fmanzano_dtk 1:9e821e640117 84
fmanzano_dtk 1:9e821e640117 85 memset(error_buffer, '\0', sizeof(error_buffer));
fmanzano_dtk 1:9e821e640117 86 sprintf(error_buffer, "%s", TCA_ID_FP_DISABLE);
fmanzano_dtk 1:9e821e640117 87 tx_fmu130_message(error_buffer, &avl_uart);
fmanzano_dtk 1:9e821e640117 88 wait_us(1000000);
fmanzano_dtk 1:9e821e640117 89
fmanzano_dtk 1:9e821e640117 90 tx_fmu130_command(GT521_ENGINE_UNLOCK, &avl_uart);
fmanzano_dtk 1:9e821e640117 91 out1_fingerprint = 1;
fmanzano_dtk 1:9e821e640117 92 wait_us(1000000);
fmanzano_dtk 1:9e821e640117 93 out1_fingerprint = 0;
fmanzano_dtk 1:9e821e640117 94 NVIC_SystemReset();
fmanzano_dtk 1:9e821e640117 95 }
fmanzano_dtk 1:9e821e640117 96 }
fmanzano_dtk 1:9e821e640117 97 }
fmanzano_dtk 1:9e821e640117 98 } while(i<length); //check whether bytes
fmanzano_dtk 1:9e821e640117 99 }
fmanzano_dtk 1:9e821e640117 100
fmanzano_dtk 1:9e821e640117 101 void ReceiveData(unsigned char *ucData,unsigned int length) {
fmanzano_dtk 1:9e821e640117 102 unsigned int i=0,time_out=0;
fmanzano_dtk 1:9e821e640117 103 do {
fmanzano_dtk 1:9e821e640117 104 if(fingerprint.readable()>0) {
fmanzano_dtk 1:9e821e640117 105 if(i < length) {
fmanzano_dtk 1:9e821e640117 106 *(ucData + i) = (uint8_t)fingerprint.getc();
fmanzano_dtk 1:9e821e640117 107 i++; //write command package from RX
fmanzano_dtk 1:9e821e640117 108 }
fmanzano_dtk 1:9e821e640117 109 } else {
fmanzano_dtk 1:9e821e640117 110 wait_us(100000);
fmanzano_dtk 1:9e821e640117 111 time_out++;
fmanzano_dtk 1:9e821e640117 112 if(time_out==5000) {
fmanzano_dtk 1:9e821e640117 113 #ifdef NEW_GT521FX_CPP
fmanzano_dtk 1:9e821e640117 114 myPC_debug.printf("ERROR - No fingerprint module!\n");
fmanzano_dtk 1:9e821e640117 115 #endif
fmanzano_dtk 1:9e821e640117 116 }
fmanzano_dtk 1:9e821e640117 117 }
fmanzano_dtk 1:9e821e640117 118 } while(i<length); //check whether bytes
fmanzano_dtk 1:9e821e640117 119 }
fmanzano_dtk 1:9e821e640117 120
fmanzano_dtk 1:9e821e640117 121
fmanzano_dtk 1:9e821e640117 122 unsigned short CalcChkSumOfCmdAckPkt(COMMAND_PACKAGE_STRUCTURE *pPkt)
fmanzano_dtk 1:9e821e640117 123 {
fmanzano_dtk 1:9e821e640117 124 unsigned short wChkSum = 0;
fmanzano_dtk 1:9e821e640117 125 unsigned char *pBuf = (unsigned char*)pPkt;
fmanzano_dtk 1:9e821e640117 126 int i;
fmanzano_dtk 1:9e821e640117 127
fmanzano_dtk 1:9e821e640117 128 for(i=0;i<(sizeof(COMMAND_PACKAGE_STRUCTURE)-2);i++)
fmanzano_dtk 1:9e821e640117 129 wChkSum += pBuf[i];
fmanzano_dtk 1:9e821e640117 130
fmanzano_dtk 1:9e821e640117 131 return wChkSum;
fmanzano_dtk 1:9e821e640117 132 }
fmanzano_dtk 1:9e821e640117 133
fmanzano_dtk 1:9e821e640117 134 unsigned short CalcChkSumOfDataPkt(DATA_PACKAGE_STRUCTURE *pPkt)
fmanzano_dtk 1:9e821e640117 135 {
fmanzano_dtk 1:9e821e640117 136 unsigned short wChkSum = 0;
fmanzano_dtk 1:9e821e640117 137 unsigned char *pBuf = (unsigned char*)pPkt;
fmanzano_dtk 1:9e821e640117 138 int i;
fmanzano_dtk 1:9e821e640117 139
fmanzano_dtk 1:9e821e640117 140 for(i=0;i<(sizeof(DATA_PACKAGE_STRUCTURE)-2);i++)
fmanzano_dtk 1:9e821e640117 141 wChkSum += pBuf[i];
fmanzano_dtk 1:9e821e640117 142
fmanzano_dtk 1:9e821e640117 143 return wChkSum;
fmanzano_dtk 1:9e821e640117 144 }
fmanzano_dtk 1:9e821e640117 145
fmanzano_dtk 1:9e821e640117 146
fmanzano_dtk 1:9e821e640117 147 void send_receive_command() {
fmanzano_dtk 1:9e821e640117 148 SendCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 149 ReceiveCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 150
fmanzano_dtk 1:9e821e640117 151 return_para=command_package.nParam;
fmanzano_dtk 1:9e821e640117 152 return_ack=command_package.wCmd;
fmanzano_dtk 1:9e821e640117 153 }
fmanzano_dtk 1:9e821e640117 154
fmanzano_dtk 1:9e821e640117 155
fmanzano_dtk 1:9e821e640117 156 void send_NO_receive_command() {
fmanzano_dtk 1:9e821e640117 157 SendCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 158 //ReceiveCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 159 //return_para=command_package.nParam;
fmanzano_dtk 1:9e821e640117 160 //return_ack=command_package.wCmd;
fmanzano_dtk 1:9e821e640117 161 }
fmanzano_dtk 1:9e821e640117 162
fmanzano_dtk 1:9e821e640117 163
fmanzano_dtk 1:9e821e640117 164 void send_receive_data() {
fmanzano_dtk 1:9e821e640117 165 SendData(&data_package.DHead1,DATA_FP_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 166 ReceiveCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 167
fmanzano_dtk 1:9e821e640117 168 return_para=command_package.nParam;
fmanzano_dtk 1:9e821e640117 169 return_ack=command_package.wCmd;
fmanzano_dtk 1:9e821e640117 170 }
fmanzano_dtk 1:9e821e640117 171
fmanzano_dtk 1:9e821e640117 172 int FP_Open() {
fmanzano_dtk 1:9e821e640117 173 int i;
fmanzano_dtk 1:9e821e640117 174 unsigned int zero = 0x00;
fmanzano_dtk 1:9e821e640117 175
fmanzano_dtk 1:9e821e640117 176 for (i=0; i < CEROS_INICIO; i++) {
fmanzano_dtk 1:9e821e640117 177 fingerprint.putc(zero);
fmanzano_dtk 1:9e821e640117 178 }
fmanzano_dtk 1:9e821e640117 179 wait_us(TIEMPO_ESPERA);
fmanzano_dtk 1:9e821e640117 180 FP_Flush();
fmanzano_dtk 1:9e821e640117 181
fmanzano_dtk 1:9e821e640117 182 int unsigned first_cmd[] = {0x55, 0xAA, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01};
fmanzano_dtk 1:9e821e640117 183
fmanzano_dtk 1:9e821e640117 184 for (i=0; i < COMMAND_PACKAGE_LENGTH; i++){
fmanzano_dtk 1:9e821e640117 185 fingerprint.putc(first_cmd[i]);
fmanzano_dtk 1:9e821e640117 186 }
fmanzano_dtk 1:9e821e640117 187 /*
fmanzano_dtk 1:9e821e640117 188 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 189 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 190 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 191 command_package.nParam=0x00000000; //didn't get information
fmanzano_dtk 1:9e821e640117 192 command_package.wCmd=OPEN;
fmanzano_dtk 1:9e821e640117 193 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 194 SendCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);*/
fmanzano_dtk 1:9e821e640117 195 wait_us(TIEMPO_ESPERA);
fmanzano_dtk 1:9e821e640117 196 FP_Flush();
fmanzano_dtk 1:9e821e640117 197
fmanzano_dtk 1:9e821e640117 198 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 199 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 200 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 201 command_package.nParam=0x00000000; //didn't get information
fmanzano_dtk 1:9e821e640117 202 command_package.wCmd=UNKNOW;
fmanzano_dtk 1:9e821e640117 203 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 204 SendCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 205 wait_us(TIEMPO_ESPERA);
fmanzano_dtk 1:9e821e640117 206 FP_Flush();
fmanzano_dtk 1:9e821e640117 207
fmanzano_dtk 1:9e821e640117 208 //send_receive_command();
fmanzano_dtk 15:6033d2f3d819 209 //if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 210 return 0;
fmanzano_dtk 1:9e821e640117 211 //} else {
fmanzano_dtk 1:9e821e640117 212 // return -1;
fmanzano_dtk 1:9e821e640117 213 //}
fmanzano_dtk 1:9e821e640117 214 }
fmanzano_dtk 1:9e821e640117 215
fmanzano_dtk 1:9e821e640117 216 void FP_Close() {
fmanzano_dtk 1:9e821e640117 217 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 218 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 219 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 220 command_package.nParam=0x00000000; //didn't get information
fmanzano_dtk 1:9e821e640117 221 command_package.wCmd=CLOSE;
fmanzano_dtk 1:9e821e640117 222 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 223 send_NO_receive_command();
fmanzano_dtk 1:9e821e640117 224 wait_us(200000);
fmanzano_dtk 1:9e821e640117 225 FP_Flush();
fmanzano_dtk 1:9e821e640117 226
fmanzano_dtk 1:9e821e640117 227 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 228 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 229 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 230 command_package.nParam=9600; //didn't get information
fmanzano_dtk 1:9e821e640117 231 command_package.wCmd=CHANGE_BAUD;
fmanzano_dtk 1:9e821e640117 232 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 233 send_NO_receive_command();
fmanzano_dtk 1:9e821e640117 234 wait_us(200000);
fmanzano_dtk 1:9e821e640117 235 FP_Flush();
fmanzano_dtk 1:9e821e640117 236 }
fmanzano_dtk 1:9e821e640117 237
fmanzano_dtk 1:9e821e640117 238
fmanzano_dtk 1:9e821e640117 239 int FP_LED_open() {
fmanzano_dtk 1:9e821e640117 240 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 241 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 242 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 243 command_package.nParam=0x00000001; //open LED
fmanzano_dtk 1:9e821e640117 244 command_package.wCmd=CMOSLED;
fmanzano_dtk 1:9e821e640117 245 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 246
fmanzano_dtk 1:9e821e640117 247 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 248 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 249 return 0;
fmanzano_dtk 1:9e821e640117 250 } else {
fmanzano_dtk 1:9e821e640117 251 return -1;
fmanzano_dtk 1:9e821e640117 252 }
fmanzano_dtk 1:9e821e640117 253 }
fmanzano_dtk 1:9e821e640117 254
fmanzano_dtk 1:9e821e640117 255 int FP_LED_close() {
fmanzano_dtk 1:9e821e640117 256 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 257 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 258 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 259 command_package.nParam=0x00000000; //close LED
fmanzano_dtk 1:9e821e640117 260 command_package.wCmd=CMOSLED;
fmanzano_dtk 1:9e821e640117 261 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 262
fmanzano_dtk 1:9e821e640117 263 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 264 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 265 return 0;
fmanzano_dtk 1:9e821e640117 266 } else {
fmanzano_dtk 1:9e821e640117 267 return -1;
fmanzano_dtk 1:9e821e640117 268 }
fmanzano_dtk 1:9e821e640117 269 }
fmanzano_dtk 1:9e821e640117 270
fmanzano_dtk 1:9e821e640117 271 int FP_GetEnrollCount() {
fmanzano_dtk 1:9e821e640117 272 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 273 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 274 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 275 command_package.nParam=0x00000000;
fmanzano_dtk 1:9e821e640117 276 command_package.wCmd=GETENROLLCOUNT;
fmanzano_dtk 1:9e821e640117 277 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 278
fmanzano_dtk 1:9e821e640117 279 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 280 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 281 return ((int) return_para);
fmanzano_dtk 1:9e821e640117 282 } else {
fmanzano_dtk 1:9e821e640117 283 return -1;
fmanzano_dtk 1:9e821e640117 284 }
fmanzano_dtk 1:9e821e640117 285 }
fmanzano_dtk 1:9e821e640117 286
fmanzano_dtk 1:9e821e640117 287 int FP_CheckEnrolled(int thisID) {
fmanzano_dtk 1:9e821e640117 288 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 289 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 290 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 291 command_package.nParam=thisID;
fmanzano_dtk 1:9e821e640117 292 command_package.wCmd=CHECK_ENROLLED;
fmanzano_dtk 1:9e821e640117 293 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 294
fmanzano_dtk 1:9e821e640117 295 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 296 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 297 return 1; // Segun definicion TCA
fmanzano_dtk 1:9e821e640117 298 } else {
fmanzano_dtk 1:9e821e640117 299 return 0;
fmanzano_dtk 1:9e821e640117 300 }
fmanzano_dtk 1:9e821e640117 301 }
fmanzano_dtk 1:9e821e640117 302
fmanzano_dtk 1:9e821e640117 303 void FP_EnrollStart(int specify_ID)
fmanzano_dtk 1:9e821e640117 304 {
fmanzano_dtk 1:9e821e640117 305 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 306 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 307 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 308 command_package.nParam=specify_ID;
fmanzano_dtk 1:9e821e640117 309 command_package.wCmd=ENROLLSTART;
fmanzano_dtk 1:9e821e640117 310 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 311
fmanzano_dtk 1:9e821e640117 312 send_receive_command();
fmanzano_dtk 1:9e821e640117 313 }
fmanzano_dtk 1:9e821e640117 314
fmanzano_dtk 1:9e821e640117 315 void FP_Enroll(int Enroll_define)
fmanzano_dtk 1:9e821e640117 316 {
fmanzano_dtk 1:9e821e640117 317 unsigned short Enroll_command;
fmanzano_dtk 1:9e821e640117 318
fmanzano_dtk 1:9e821e640117 319 switch(Enroll_define)
fmanzano_dtk 1:9e821e640117 320 {
fmanzano_dtk 1:9e821e640117 321 case 1:
fmanzano_dtk 1:9e821e640117 322 Enroll_command=ENROLL1;
fmanzano_dtk 1:9e821e640117 323 break;
fmanzano_dtk 1:9e821e640117 324 case 2:
fmanzano_dtk 1:9e821e640117 325 Enroll_command=ENROLL2;
fmanzano_dtk 1:9e821e640117 326 break;
fmanzano_dtk 1:9e821e640117 327 case 3:
fmanzano_dtk 1:9e821e640117 328 Enroll_command=ENROLL3;
fmanzano_dtk 1:9e821e640117 329 break;
fmanzano_dtk 1:9e821e640117 330 }
fmanzano_dtk 1:9e821e640117 331 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 332 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 333 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 334 command_package.nParam=0x00000000;
fmanzano_dtk 1:9e821e640117 335 command_package.wCmd=Enroll_command;
fmanzano_dtk 1:9e821e640117 336 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 337
fmanzano_dtk 1:9e821e640117 338 send_receive_command();
fmanzano_dtk 1:9e821e640117 339 }
fmanzano_dtk 1:9e821e640117 340
fmanzano_dtk 1:9e821e640117 341 int FP_IsPressFinger() {
fmanzano_dtk 1:9e821e640117 342 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 343 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 344 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 345 command_package.nParam=0x00000000;
fmanzano_dtk 1:9e821e640117 346 command_package.wCmd=ISPRESSFINGER;
fmanzano_dtk 1:9e821e640117 347 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 348
fmanzano_dtk 1:9e821e640117 349 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 350 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 351 return ((int) return_para);
fmanzano_dtk 1:9e821e640117 352 } else {
fmanzano_dtk 1:9e821e640117 353 return -1;
fmanzano_dtk 1:9e821e640117 354 }
fmanzano_dtk 1:9e821e640117 355 }
fmanzano_dtk 1:9e821e640117 356
fmanzano_dtk 1:9e821e640117 357 void FP_CaptureFinger(unsigned long picture_quality) { //0:normal picture, 1:best picture
fmanzano_dtk 1:9e821e640117 358 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 359 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 360 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 361 command_package.nParam=picture_quality;
fmanzano_dtk 1:9e821e640117 362 command_package.wCmd=CAPTURE_FINGER;
fmanzano_dtk 1:9e821e640117 363 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 364
fmanzano_dtk 1:9e821e640117 365 send_receive_command();
fmanzano_dtk 1:9e821e640117 366 }
fmanzano_dtk 1:9e821e640117 367
fmanzano_dtk 1:9e821e640117 368 int FP_DeleteAll() {
fmanzano_dtk 1:9e821e640117 369 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 370 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 371 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 372 command_package.nParam=0x00000000;
fmanzano_dtk 1:9e821e640117 373 command_package.wCmd=DELETEALL;
fmanzano_dtk 1:9e821e640117 374 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 375
fmanzano_dtk 1:9e821e640117 376 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 377 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 378 return 0;
fmanzano_dtk 1:9e821e640117 379 } else {
fmanzano_dtk 1:9e821e640117 380 return -1;
fmanzano_dtk 1:9e821e640117 381 }
fmanzano_dtk 1:9e821e640117 382 }
fmanzano_dtk 1:9e821e640117 383
fmanzano_dtk 1:9e821e640117 384 int FP_DeleteID(int thisID) {
fmanzano_dtk 1:9e821e640117 385 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 386 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 387 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 388 command_package.nParam=thisID;
fmanzano_dtk 1:9e821e640117 389 command_package.wCmd=DELETEID;
fmanzano_dtk 1:9e821e640117 390 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 391
fmanzano_dtk 1:9e821e640117 392 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 393 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 394 return 0;
fmanzano_dtk 1:9e821e640117 395 } else {
fmanzano_dtk 1:9e821e640117 396 return -1;
fmanzano_dtk 1:9e821e640117 397 }
fmanzano_dtk 1:9e821e640117 398 }
fmanzano_dtk 1:9e821e640117 399
fmanzano_dtk 1:9e821e640117 400 int FP_Identify() {
fmanzano_dtk 1:9e821e640117 401 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 402 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 403 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 404 command_package.nParam=0x00000000;
fmanzano_dtk 1:9e821e640117 405 command_package.wCmd=IDENTIFY;
fmanzano_dtk 1:9e821e640117 406 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 407
fmanzano_dtk 1:9e821e640117 408 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 409 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 410 return ((int) return_para);
fmanzano_dtk 1:9e821e640117 411 } else {
fmanzano_dtk 1:9e821e640117 412 return -1;
fmanzano_dtk 1:9e821e640117 413 }
fmanzano_dtk 1:9e821e640117 414 }
fmanzano_dtk 1:9e821e640117 415
fmanzano_dtk 1:9e821e640117 416 void FP_Sleep() {
fmanzano_dtk 1:9e821e640117 417 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 418 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 419 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 420 command_package.nParam=0x00000000;
fmanzano_dtk 1:9e821e640117 421 command_package.wCmd=STANDBY_MODE;
fmanzano_dtk 1:9e821e640117 422 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 423
fmanzano_dtk 1:9e821e640117 424 send_receive_command();
fmanzano_dtk 1:9e821e640117 425 }
fmanzano_dtk 1:9e821e640117 426
fmanzano_dtk 1:9e821e640117 427 int FP_SetTemplate(int thisID, char * fingerData) {
fmanzano_dtk 1:9e821e640117 428
fmanzano_dtk 1:9e821e640117 429 unsigned char thisData_package[504];
fmanzano_dtk 1:9e821e640117 430 unsigned int thisSend_checksum = 0;
fmanzano_dtk 1:9e821e640117 431 int xyz;
fmanzano_dtk 1:9e821e640117 432 command_package.Head1=COMMAND_START_CODE1;
fmanzano_dtk 1:9e821e640117 433 command_package.Head2=COMMAND_START_CODE2;
fmanzano_dtk 1:9e821e640117 434 command_package.wDevId=DEVICE_ID;
fmanzano_dtk 1:9e821e640117 435 command_package.nParam=thisID;
fmanzano_dtk 1:9e821e640117 436 command_package.wCmd=SETTEMPLATE;
fmanzano_dtk 1:9e821e640117 437 command_package.wChkSum=CalcChkSumOfCmdAckPkt(&command_package);
fmanzano_dtk 1:9e821e640117 438
fmanzano_dtk 1:9e821e640117 439 send_receive_command();
fmanzano_dtk 15:6033d2f3d819 440 if (return_ack != FP_ACK) {
fmanzano_dtk 1:9e821e640117 441 return -1;
fmanzano_dtk 1:9e821e640117 442 }
fmanzano_dtk 1:9e821e640117 443
fmanzano_dtk 1:9e821e640117 444 thisData_package[0] = DATA_START_CODE1;
fmanzano_dtk 1:9e821e640117 445 thisData_package[1] = DATA_START_CODE2;
fmanzano_dtk 1:9e821e640117 446 thisData_package[2] = 0x01;
fmanzano_dtk 1:9e821e640117 447 thisData_package[3] = 0x00;
fmanzano_dtk 1:9e821e640117 448 for (xyz = 4; xyz <= 501; xyz++) {
fmanzano_dtk 1:9e821e640117 449 thisData_package[xyz] = fingerData[xyz -4];
fmanzano_dtk 1:9e821e640117 450 }
fmanzano_dtk 1:9e821e640117 451 for (xyz = 0; xyz < 502; xyz++) {
fmanzano_dtk 1:9e821e640117 452 thisSend_checksum = thisSend_checksum + thisData_package[xyz];
fmanzano_dtk 1:9e821e640117 453 }
fmanzano_dtk 1:9e821e640117 454 thisData_package[502] = thisSend_checksum&0x00FF;
fmanzano_dtk 1:9e821e640117 455 thisData_package[503] = thisSend_checksum>>8;
fmanzano_dtk 1:9e821e640117 456
fmanzano_dtk 1:9e821e640117 457 for(xyz = 0; xyz < 504; xyz++) {
fmanzano_dtk 1:9e821e640117 458 fingerprint.putc(thisData_package[xyz]);
fmanzano_dtk 1:9e821e640117 459 }
fmanzano_dtk 1:9e821e640117 460
fmanzano_dtk 1:9e821e640117 461 ReceiveCommand(&command_package.Head1,COMMAND_PACKAGE_LENGTH);
fmanzano_dtk 1:9e821e640117 462 return_ack=command_package.wCmd;
fmanzano_dtk 1:9e821e640117 463
fmanzano_dtk 15:6033d2f3d819 464 if(return_ack == FP_ACK) {
fmanzano_dtk 1:9e821e640117 465 return 0;
fmanzano_dtk 1:9e821e640117 466 } else {
fmanzano_dtk 1:9e821e640117 467 return -1;
fmanzano_dtk 1:9e821e640117 468 }
fmanzano_dtk 1:9e821e640117 469 }
fmanzano_dtk 1:9e821e640117 470
fmanzano_dtk 1:9e821e640117 471 void FP_Flush() {
fmanzano_dtk 1:9e821e640117 472 if(fingerprint.readable()) {
fmanzano_dtk 1:9e821e640117 473 while(fingerprint.readable()){
fmanzano_dtk 1:9e821e640117 474 fingerprint.getc();
fmanzano_dtk 1:9e821e640117 475 }
fmanzano_dtk 1:9e821e640117 476 }
fmanzano_dtk 1:9e821e640117 477 }