108 lines
3.0 KiB
C++
108 lines
3.0 KiB
C++
/***************************************************
|
|
This is a library for our optical Fingerprint sensor
|
|
|
|
Designed specifically to work with the Adafruit BMP085 Breakout
|
|
----> http://www.adafruit.com/products/751
|
|
|
|
These displays use TTL Serial to communicate, 2 pins are required to
|
|
interface
|
|
Adafruit invests time and resources providing this open source code,
|
|
please support Adafruit and open-source hardware by purchasing
|
|
products from Adafruit!
|
|
|
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
|
BSD license, all text above must be included in any redistribution
|
|
****************************************************/
|
|
|
|
#if (ARDUINO >= 100)
|
|
#include "Arduino.h"
|
|
#include <SoftwareSerial.h>
|
|
#else
|
|
#include "WProgram.h"
|
|
#include <NewSoftSerial.h>
|
|
#endif
|
|
|
|
|
|
#define FINGERPRINT_OK 0x00
|
|
#define FINGERPRINT_PACKETRECIEVEERR 0x01
|
|
#define FINGERPRINT_NOFINGER 0x02
|
|
#define FINGERPRINT_IMAGEFAIL 0x03
|
|
#define FINGERPRINT_IMAGEMESS 0x06
|
|
#define FINGERPRINT_FEATUREFAIL 0x07
|
|
#define FINGERPRINT_NOMATCH 0x08
|
|
#define FINGERPRINT_NOTFOUND 0x09
|
|
#define FINGERPRINT_ENROLLMISMATCH 0x0A
|
|
#define FINGERPRINT_BADLOCATION 0x0B
|
|
#define FINGERPRINT_DBRANGEFAIL 0x0C
|
|
#define FINGERPRINT_UPLOADFEATUREFAIL 0x0D
|
|
#define FINGERPRINT_PACKETRESPONSEFAIL 0x0E
|
|
#define FINGERPRINT_UPLOADFAIL 0x0F
|
|
#define FINGERPRINT_DELETEFAIL 0x10
|
|
#define FINGERPRINT_DBCLEARFAIL 0x11
|
|
#define FINGERPRINT_PASSFAIL 0x13
|
|
#define FINGERPRINT_INVALIDIMAGE 0x15
|
|
#define FINGERPRINT_FLASHERR 0x18
|
|
#define FINGERPRINT_INVALIDREG 0x1A
|
|
#define FINGERPRINT_ADDRCODE 0x20
|
|
#define FINGERPRINT_PASSVERIFY 0x21
|
|
|
|
#define FINGERPRINT_STARTCODE 0xEF01
|
|
|
|
#define FINGERPRINT_COMMANDPACKET 0x1
|
|
#define FINGERPRINT_DATAPACKET 0x2
|
|
#define FINGERPRINT_ACKPACKET 0x7
|
|
#define FINGERPRINT_ENDDATAPACKET 0x8
|
|
|
|
#define FINGERPRINT_TIMEOUT 0xFF
|
|
#define FINGERPRINT_BADPACKET 0xFE
|
|
|
|
#define FINGERPRINT_GETIMAGE 0x01
|
|
#define FINGERPRINT_IMAGE2TZ 0x02
|
|
#define FINGERPRINT_REGMODEL 0x05
|
|
#define FINGERPRINT_STORE 0x06
|
|
#define FINGERPRINT_EMPTY 0x0D
|
|
#define FINGERPRINT_VERIFYPASSWORD 0x13
|
|
#define FINGERPRINT_HISPEEDSEARCH 0x1B
|
|
#define FINGERPRINT_TEMPLATECOUNT 0x1D
|
|
|
|
//#define FINGERPRINT_DEBUG
|
|
|
|
#define DEFAULTTIMEOUT 5000 // milliseconds
|
|
|
|
|
|
class Adafruit_Fingerprint {
|
|
|
|
public:
|
|
#if ARDUINO >= 100
|
|
Adafruit_Fingerprint(SoftwareSerial *);
|
|
#else
|
|
Adafruit_Fingerprint(NewSoftSerial *);
|
|
#endif
|
|
void begin(uint16_t baud);
|
|
|
|
boolean verifyPassword(void);
|
|
uint8_t getImage(void);
|
|
uint8_t image2Tz(uint8_t slot = 1);
|
|
uint8_t createModel(void);
|
|
uint8_t emptyDatabase(void);
|
|
uint8_t storeModel(uint16_t id);
|
|
uint8_t fingerFastSearch(void);
|
|
uint8_t getTemplateCount(void);
|
|
void writePacket(uint32_t addr, uint8_t packettype, uint16_t len, uint8_t *packet);
|
|
uint8_t getReply(uint8_t packet[], uint16_t timeout=DEFAULTTIMEOUT);
|
|
|
|
uint16_t fingerID, confidence, templateCount;
|
|
|
|
void setKey(unsigned long key_t);
|
|
void setAddr(unsigned long addr_t);
|
|
|
|
private:
|
|
uint32_t thePassword;
|
|
uint32_t theAddress;
|
|
#if ARDUINO >= 100
|
|
SoftwareSerial *mySerial;
|
|
#else
|
|
NewSoftSerial *mySerial;
|
|
#endif
|
|
};
|