Felícito Manzano
/
DTK_Guaria2_ABInBev
Proyecto ABInBev para la tarjeta Guaria 1/2.
GT521Fx/New_GT521Fx.cpp@12:5881f350b4da, 2022-07-07 (annotated)
- Committer:
- fmanzano_dtk
- Date:
- Thu Jul 07 04:44:22 2022 +0000
- Revision:
- 12:5881f350b4da
- Parent:
- 10:a0005a4116ae
- Child:
- 15:6033d2f3d819
Version no compilable. Error en libreria MBED i2C
Who changed what in which revision?
User | Revision | Line number | New 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 | 10:a0005a4116ae | 17 | #include "flash_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 | 10:a0005a4116ae | 76 | ep.write(eprom_AddressArray[EE_Address_FINGERPRINT], ((uint16_t) false)); |
fmanzano_dtk | 10:a0005a4116ae | 77 | } else { |
fmanzano_dtk | 10:a0005a4116ae | 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 | 1:9e821e640117 | 209 | //if(return_ack == 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 | 1:9e821e640117 | 248 | if(return_ack == 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 | 1:9e821e640117 | 264 | if(return_ack == 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 | 1:9e821e640117 | 280 | if(return_ack == 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 | 1:9e821e640117 | 296 | if(return_ack == 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 | 1:9e821e640117 | 350 | if(return_ack == 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 | 1:9e821e640117 | 377 | if(return_ack == 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 | 1:9e821e640117 | 393 | if(return_ack == 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 | 1:9e821e640117 | 409 | if(return_ack == 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 | 1:9e821e640117 | 440 | if (return_ack != 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 | 1:9e821e640117 | 464 | if(return_ack == 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 | } |