Felícito Manzano
/
DTK_Guaria2_ABInBev
Proyecto ABInBev para la tarjeta Guaria 1/2.
GT521Fx/New_GT521Fx.cpp@5:07720e3f99d2, 2022-07-04 (annotated)
- Committer:
- fmanzano_dtk
- Date:
- Mon Jul 04 22:28:16 2022 -0600
- Revision:
- 5:07720e3f99d2
- Parent:
- 1:9e821e640117
- Child:
- 10:a0005a4116ae
Se restaura la libreria de Flash como alternativa adicional a la memoria externa de EEPROM
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 | 5:07720e3f99d2 | 17 | #include "eeprom_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 | } |