Same library as tosihisa, but with extensions for SetTemplate, DeleteAllIDs, and SendData.
Dependents: GT511C3_demo GT511C3 IOTProjectCodeDavidBruce15597305
Fork of GT511C3 by
GT511C3.hpp@2:8fa6daf39d91, 2015-12-01 (annotated)
- Committer:
- beanmachine44
- Date:
- Tue Dec 01 20:48:44 2015 +0000
- Revision:
- 2:8fa6daf39d91
- Parent:
- 1:aa0bd9bd1c56
Fixed bugs: Issued wrong command in SetTemplate; Removed extraneous waitPress as it was consuming 1 byte from the data packet after enroll when ID was set to -1; Changes: Made RecvData only fill the buffer with the actual data (no header and checksum)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tosihisa | 0:90c64cb9db58 | 1 | /** |
tosihisa | 0:90c64cb9db58 | 2 | * @section LICENSE |
tosihisa | 0:90c64cb9db58 | 3 | * |
tosihisa | 0:90c64cb9db58 | 4 | * Copyright (c) 2013 @tosihisa, MIT License |
tosihisa | 0:90c64cb9db58 | 5 | * |
tosihisa | 0:90c64cb9db58 | 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
tosihisa | 0:90c64cb9db58 | 7 | * and associated documentation files (the "Software"), to deal in the Software without restriction, |
tosihisa | 0:90c64cb9db58 | 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, |
tosihisa | 0:90c64cb9db58 | 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is |
tosihisa | 0:90c64cb9db58 | 10 | * furnished to do so, subject to the following conditions: |
tosihisa | 0:90c64cb9db58 | 11 | * |
tosihisa | 0:90c64cb9db58 | 12 | * The above copyright notice and this permission notice shall be included in all copies or |
tosihisa | 0:90c64cb9db58 | 13 | * substantial portions of the Software. |
tosihisa | 0:90c64cb9db58 | 14 | * |
tosihisa | 0:90c64cb9db58 | 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
tosihisa | 0:90c64cb9db58 | 16 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
tosihisa | 0:90c64cb9db58 | 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
tosihisa | 0:90c64cb9db58 | 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
tosihisa | 0:90c64cb9db58 | 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
tosihisa | 0:90c64cb9db58 | 20 | * |
tosihisa | 0:90c64cb9db58 | 21 | * @section DESCRIPTION |
tosihisa | 0:90c64cb9db58 | 22 | * |
tosihisa | 0:90c64cb9db58 | 23 | * Fingerprint reader module "GT-511C3" class. |
tosihisa | 0:90c64cb9db58 | 24 | * |
tosihisa | 0:90c64cb9db58 | 25 | * http://www.adh-tech.com.tw/?22,gt-511c3-gt-511c31 |
tosihisa | 0:90c64cb9db58 | 26 | * http://www.adh-tech.com.tw/files/GT-511C3_datasheet_V1%201_20131127[1].pdf |
tosihisa | 0:90c64cb9db58 | 27 | * https://www.sparkfun.com/products/11792 |
tosihisa | 0:90c64cb9db58 | 28 | * https://github.com/sparkfun/Fingerprint_Scanner-TTL/ |
tosihisa | 0:90c64cb9db58 | 29 | * http://blog.digit-parts.com/archives/51894096.html |
tosihisa | 0:90c64cb9db58 | 30 | */ |
tosihisa | 0:90c64cb9db58 | 31 | #ifndef __GT511C3_HPP |
tosihisa | 0:90c64cb9db58 | 32 | #define __GT511C3_HPP |
tosihisa | 0:90c64cb9db58 | 33 | #include "mbed.h" |
tosihisa | 0:90c64cb9db58 | 34 | |
tosihisa | 0:90c64cb9db58 | 35 | class GT511C3 : public Serial { |
tosihisa | 0:90c64cb9db58 | 36 | public: |
tosihisa | 0:90c64cb9db58 | 37 | enum Command { |
tosihisa | 0:90c64cb9db58 | 38 | CMD_Open = 0x01, // 01 Open Initialization |
tosihisa | 0:90c64cb9db58 | 39 | CMD_Close = 0x02, // 02 Close Termination |
tosihisa | 0:90c64cb9db58 | 40 | CMD_UsbInternalCheck = 0x03, // 03 UsbInternalCheck Check if the connected USB device is valid |
tosihisa | 0:90c64cb9db58 | 41 | CMD_ChangeBaudrate = 0x04, // 04 ChangeBaudrate Change UART baud rate |
tosihisa | 0:90c64cb9db58 | 42 | CMD_SetIAPMode = 0x05, // 05 SetIAPMode Enter IAP Mode In this mode, FW Upgrade is available |
tosihisa | 0:90c64cb9db58 | 43 | CMD_CmosLed = 0x12, // 12 CmosLed Control CMOS LED |
tosihisa | 0:90c64cb9db58 | 44 | CMD_GetEnrollCount = 0x20, // 20 GetEnrollCount Get enrolled fingerprint count |
tosihisa | 0:90c64cb9db58 | 45 | CMD_CheckEnrolled = 0x21, // 21 CheckEnrolled Check whether the specified ID is already enrolled |
tosihisa | 0:90c64cb9db58 | 46 | CMD_EnrollStart = 0x22, // 22 EnrollStart Start an enrollment |
tosihisa | 0:90c64cb9db58 | 47 | CMD_Enroll1 = 0x23, // 23 Enroll1 Make 1st template for an enrollment |
tosihisa | 0:90c64cb9db58 | 48 | CMD_Enroll2 = 0x24, // 24 Enroll2 Make 2nd template for an enrollment |
tosihisa | 0:90c64cb9db58 | 49 | CMD_Enroll3 = 0x25, // 25 Enroll3 Make 3rd template for an enrollment, merge three templates into one template, save merged template to the database |
tosihisa | 0:90c64cb9db58 | 50 | CMD_IsPressFinger = 0x26, // 26 IsPressFinger Check if a finger is placed on the sensor |
tosihisa | 0:90c64cb9db58 | 51 | CMD_DeleteID = 0x40, // 40 DeleteID Delete the fingerprint with the specified ID |
tosihisa | 0:90c64cb9db58 | 52 | CMD_DeleteAll = 0x41, // 41 DeleteAll Delete all fingerprints from the database |
tosihisa | 0:90c64cb9db58 | 53 | CMD_Verify = 0x50, // 50 Verify 1:1 Verification of the capture fingerprint image with the specified ID |
tosihisa | 0:90c64cb9db58 | 54 | CMD_Identify = 0x51, // 51 Identify 1:N Identification of the capture fingerprint image with the database |
tosihisa | 0:90c64cb9db58 | 55 | CMD_VerifyTemplate = 0x52, // 52 VerifyTemplate 1:1 Verification of a fingerprint template with the specified ID |
tosihisa | 0:90c64cb9db58 | 56 | CMD_IdentifyTemplate = 0x53, // 53 IdentifyTemplate 1:N Identification of a fingerprint template with the database |
tosihisa | 0:90c64cb9db58 | 57 | CMD_CaptureFinger = 0x60, // 60 CaptureFinger Capture a fingerprint image(256x256) from the sensor |
tosihisa | 0:90c64cb9db58 | 58 | CMD_MakeTemplate = 0x61, // 61 MakeTemplate Make template for transmission |
tosihisa | 0:90c64cb9db58 | 59 | CMD_GetImage = 0x62, // 62 GetImage Download the captured fingerprint image(256x256) |
tosihisa | 0:90c64cb9db58 | 60 | CMD_GetRawImage = 0x63, // 63 GetRawImage Capture & Download raw fingerprint image(320x240) |
tosihisa | 0:90c64cb9db58 | 61 | CMD_GetTemplate = 0x70, // 70 GetTemplate Download the template of the specified ID |
tosihisa | 0:90c64cb9db58 | 62 | CMD_SetTemplate = 0x71, // 71 SetTemplate Upload the template of the specified ID |
tosihisa | 0:90c64cb9db58 | 63 | CMD_GetDatabaseStart = 0x72, // 72 GetDatabaseStart Start database download, obsolete |
tosihisa | 0:90c64cb9db58 | 64 | CMD_GetDatabaseEnd = 0x73, // 73 GetDatabaseEnd End database download, obsolete |
tosihisa | 0:90c64cb9db58 | 65 | CMD_UpgradeFirmware = 0x80, // 80 UpgradeFirmware Not supported |
tosihisa | 0:90c64cb9db58 | 66 | CMD_UpgradeISOCDImage = 0x81, // 81 UpgradeISOCDImage Not supported |
tosihisa | 0:90c64cb9db58 | 67 | CMD_Ack = 0x30, // 30 Ack Acknowledge. |
tosihisa | 0:90c64cb9db58 | 68 | CMD_Nack = 0x31, // 31 Nack Non-acknowledge. |
tosihisa | 0:90c64cb9db58 | 69 | }; |
tosihisa | 0:90c64cb9db58 | 70 | enum Error { |
tosihisa | 0:90c64cb9db58 | 71 | NACK_TIMEOUT = 0x1001, // NACK_TIMEOUT 0x1001 Obsolete, capture timeout |
tosihisa | 0:90c64cb9db58 | 72 | NACK_INVALID_BAUDRATE = 0x1002, // NACK_INVALID_BAUDRATE 0x1002 Obsolete, Invalid serial baud rate |
tosihisa | 0:90c64cb9db58 | 73 | NACK_INVALID_POS = 0x1003, // NACK_INVALID_POS 0x1003 The specified ID is not between 0~199 |
tosihisa | 0:90c64cb9db58 | 74 | NACK_IS_NOT_USED = 0x1004, // NACK_IS_NOT_USED 0x1004 The specified ID is not used |
tosihisa | 0:90c64cb9db58 | 75 | NACK_IS_ALREADY_USED = 0x1005, // NACK_IS_ALREADY_USED 0x1005 The specified ID is already used |
tosihisa | 0:90c64cb9db58 | 76 | NACK_COMM_ERR = 0x1006, // NACK_COMM_ERR 0x1006 Communication Error |
tosihisa | 0:90c64cb9db58 | 77 | NACK_VERIFY_FAILED = 0x1007, // NACK_VERIFY_FAILED 0x1007 1:1 Verification Failure |
tosihisa | 0:90c64cb9db58 | 78 | NACK_IDENTIFY_FAILED = 0x1008, // NACK_IDENTIFY_FAILED 0x1008 1:N Identification Failure |
tosihisa | 0:90c64cb9db58 | 79 | NACK_DB_IS_FULL = 0x1009, // NACK_DB_IS_FULL 0x1009 The database is full |
tosihisa | 0:90c64cb9db58 | 80 | NACK_DB_IS_EMPTY = 0x100A, // NACK_DB_IS_EMPTY 0x100A The database is empty |
tosihisa | 0:90c64cb9db58 | 81 | NACK_TURN_ERR = 0x100B, // NACK_TURN_ERR 0x100B Obsolete, Invalid order of the enrollment (The order was not as: EnrollStart -> Enroll1 -> Enroll2 -> Enroll3) |
tosihisa | 0:90c64cb9db58 | 82 | NACK_BAD_FINGER = 0x100C, // NACK_BAD_FINGER 0x100C Too bad fingerprint |
tosihisa | 0:90c64cb9db58 | 83 | NACK_ENROLL_FAILED = 0x100D, // NACK_ENROLL_FAILED 0x100D Enrollment Failure |
tosihisa | 0:90c64cb9db58 | 84 | NACK_IS_NOT_SUPPORTED = 0x100E, // NACK_IS_NOT_SUPPORTED 0x100E The specified command is not supported |
tosihisa | 0:90c64cb9db58 | 85 | NACK_DEV_ERR = 0x100F, // NACK_DEV_ERR 0x100F Device Error, especially if Crypto-Chip is trouble |
tosihisa | 0:90c64cb9db58 | 86 | NACK_CAPTURE_CANCELED = 0x1010, // NACK_CAPTURE_CANCELED 0x1010 Obsolete, The capturing is canceled |
tosihisa | 0:90c64cb9db58 | 87 | NACK_INVALID_PARAM = 0x1011, // NACK_INVALID_PARAM 0x1011 Invalid parameter |
tosihisa | 0:90c64cb9db58 | 88 | NACK_FINGER_IS_NOT_PRESSED = 0x1012, // NACK_FINGER_IS_NOT_PRESSED 0x1012 Finger is not pressed |
tosihisa | 0:90c64cb9db58 | 89 | NACK_IO_ERR = 0xF000, // ORIGINAL ERROR CODE. Serial line error. |
tosihisa | 0:90c64cb9db58 | 90 | }; |
tosihisa | 0:90c64cb9db58 | 91 | unsigned long LastError; |
tosihisa | 0:90c64cb9db58 | 92 | unsigned long FirmwareVersion; |
tosihisa | 0:90c64cb9db58 | 93 | unsigned long IsoAreaMaxSize; |
tosihisa | 0:90c64cb9db58 | 94 | unsigned char DeviceSerialNumber[16]; |
tosihisa | 0:90c64cb9db58 | 95 | |
tosihisa | 0:90c64cb9db58 | 96 | GT511C3(PinName _tx, PinName _rx) : Serial(_tx,_rx) , LastError(0) {} |
tosihisa | 0:90c64cb9db58 | 97 | int Init(void); |
tosihisa | 0:90c64cb9db58 | 98 | int SendCommand(unsigned long Parameter,unsigned short Command); |
tosihisa | 0:90c64cb9db58 | 99 | int RecvResponse(unsigned long *Parameter,unsigned short *Response); |
beanmachine44 | 1:aa0bd9bd1c56 | 100 | int SendData(unsigned char *data,unsigned long size); |
tosihisa | 0:90c64cb9db58 | 101 | int RecvData(unsigned char *data,unsigned long size); |
tosihisa | 0:90c64cb9db58 | 102 | int SendRecv(unsigned short Command,unsigned long *Parameter,unsigned short *Response); |
tosihisa | 0:90c64cb9db58 | 103 | int ClearLine(void); |
tosihisa | 0:90c64cb9db58 | 104 | int Open(void); |
tosihisa | 0:90c64cb9db58 | 105 | int WaitPress(int press); |
tosihisa | 0:90c64cb9db58 | 106 | int CmosLed(int onoff); |
tosihisa | 0:90c64cb9db58 | 107 | int IsPress(void); |
tosihisa | 0:90c64cb9db58 | 108 | int Capture(int best); |
tosihisa | 0:90c64cb9db58 | 109 | int Enroll_N(int N); |
tosihisa | 0:90c64cb9db58 | 110 | int Identify(void); |
tosihisa | 0:90c64cb9db58 | 111 | int Enroll(int ID,int (*progress)(int status,char *msg)); |
tosihisa | 0:90c64cb9db58 | 112 | int CheckEnrolled(int ID); |
beanmachine44 | 1:aa0bd9bd1c56 | 113 | int SetTemplate(int ID,unsigned char *data,unsigned long size); |
tosihisa | 0:90c64cb9db58 | 114 | int DeleteID(int ID); |
beanmachine44 | 1:aa0bd9bd1c56 | 115 | int DeleteAllIDs(); |
tosihisa | 0:90c64cb9db58 | 116 | }; |
tosihisa | 0:90c64cb9db58 | 117 | |
tosihisa | 0:90c64cb9db58 | 118 | #endif //__GT511C3_HPP |