Proyecto ABInBev para la tarjeta Guaria 1/2.

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