M5Unit-FINGER 0.2.0 git rev:ee2afce
Loading...
Searching...
No Matches
unit_Finger2.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
10#ifndef M5_UNIT_FINGER_UNIT_FINGER2_HPP
11#define M5_UNIT_FINGER_UNIT_FINGER2_HPP
12
13#include <M5UnitComponent.hpp>
14#include <vector>
15#include <array>
16
17namespace m5 {
18namespace unit {
23namespace finger2 {
24
29enum class WorkMode : uint8_t {
33};
34
39enum class LEDMode : uint8_t {
40 None,
41 Breath,
42 Blink,
43 On,
44 Off,
45 Fadein,
46 Fadeout,
47 Rainbow,
48 Bleath = Breath,
49};
50
55enum class LEDColor : uint8_t {
56 Black,
57 Blue,
58 Green,
59 Cyan,
60 Red,
61 Magenta,
62 Yellow,
63 White
64};
65
70enum class RegisterID : uint8_t {
71 ScoreLevel = 5,
72 PacketSize = 6,
73};
74
80 uint16_t status{};
81 uint16_t sensor_type{};
82 uint16_t database_capacity{};
83 uint16_t score_level{};
84 uint32_t address{};
85 uint16_t packet_size{};
86 uint16_t baud_rate{};
88} __attribute__((packed));
89
90using auto_enroll_flag_t = uint16_t;
91using auto_identify_flag_t = uint16_t;
92
97namespace auto_enroll_flag {
102
104[[deprecated("use NO_NEED_RELEASE_FINGER")]] constexpr auto_enroll_flag_t NO_NEED_RELAESE_FINGER =
106
107} // namespace auto_enroll_flag
108
113namespace auto_identify_flag {
114constexpr auto_identify_flag_t DONT_RETURN_INTERMEDIATE_RESULTS{1U << 2};
115} // namespace auto_identify_flag
116
130
135enum class AutoIdentifyStage : uint8_t {
137 GetImage,
138 Result = 0x05,
139};
140
211
222using auto_enroll_callback_t = bool (*)(const uint16_t call_times, const uint16_t page_id, const ConfirmCode confirm,
223 const AutoEnrollStage stage, const uint8_t state);
232using auto_identify_callback_t = bool (*)(const uint16_t call_times, const ConfirmCode confirm,
233 const AutoIdentifyStage stage);
234
246using batch_callback_t = bool (*)(const uint16_t call_times, const uint16_t actual_size, const uint16_t batch_size,
247 const uint16_t total_size, const uint16_t planned_size, const bool completed);
248
249} // namespace finger2
250
255class UnitFinger2 : public Component {
256 M5_UNIT_COMPONENT_HPP_BUILDER(UnitFinger2, 0x00);
257
258public:
259 static constexpr uint32_t DEFAULT_MODULE_ADDRESS{0xFFFFFFFF};
260 using Packet = std::vector<uint8_t>;
261
262 static constexpr uint16_t IMAGE_WIDTH{80};
263 static constexpr uint16_t IMAGE_HEIGHT{208};
264 static constexpr uint16_t TEMPLATE_SIZE{7262};
265
266protected:
267 explicit UnitFinger2(const uint32_t device_address) : Component(DEFAULT_ADDRESS), _address{device_address}
268 {
269 }
270
271public:
272 UnitFinger2() : UnitFinger2(DEFAULT_MODULE_ADDRESS)
273 {
274 }
275
276 virtual ~UnitFinger2() = default;
277
282 virtual bool begin() override;
283
288 struct config_t {
289 uint32_t timeout_ms{1000 * 4};
290 finger2::WorkMode work_mode{finger2::WorkMode::ScheduledSleep};
291 uint8_t sleep_time{10};
292 };
293
296
300 inline config_t config() const
301 {
302 return _cfg;
303 }
308 inline void config(const config_t& cfg)
309 {
310 _cfg = cfg;
311 }
313
316
321 uint32_t deviceAddress() const
322 {
323 return _address;
324 }
329 inline constexpr uint16_t imageWidth() const
330 {
331 return IMAGE_WIDTH;
332 }
337 inline constexpr uint16_t imageHeight() const
338 {
339 return IMAGE_HEIGHT;
340 }
346 inline uint16_t capacity() const
347 {
348 return _pageCapacity;
349 }
351
358 bool readModuleStatus(bool& awake);
359
366 bool wakeup();
367
370
383 bool writeWorkMode(const finger2::WorkMode wm);
391 bool saveWorkMode();
392
399 bool readSleepTime(uint8_t& sec);
406 bool writeSleepTime(const uint8_t sec);
414 bool saveSleepTime();
415
424
433 bool writeSystemRegister(const finger2::RegisterID reg_id, const uint8_t value);
434
445 bool writeControlLED(const finger2::LEDMode mode, const finger2::LEDColor clr, const uint8_t cycle = 0,
446 const finger2::LEDColor eclr = finger2::LEDColor::Black);
447
458 bool writeControlLEDRainbow(const uint8_t tm, const finger2::LEDColor* colors, const uint8_t colors_num,
459 const uint8_t cycle);
461
465
472 bool capture(bool& detected, const bool enroll = false);
473
482 bool readImageInformation(uint8_t& percentage, bool& quality);
483
491 bool readImage(std::vector<uint8_t>& img);
492
501 bool generateCharacteristic(const uint8_t buffer_id = 1);
502
510 bool generateTemplate();
511
522 bool storeTemplate(const uint16_t page_id, const uint8_t buffer_id = 1);
523
533 bool match(bool& matched, uint16_t& score);
534
548 bool search(bool& matched, uint16_t& matching_page_id, uint16_t& score, const uint8_t buffer_id = 1,
549 const uint16_t start_page = 0, const uint16_t page_num = 0);
550
563 bool searchNow(bool& matched, uint16_t& matching_page_id, uint16_t& score, const uint16_t start_page = 0,
564 const uint16_t page_num = 0);
565
567
571
579 bool loadTemplate(const uint8_t buffer_id, const uint16_t page_id);
580
592 bool readTemplate(uint16_t& actual_size, uint8_t* buf, const uint16_t buf_size, const uint16_t offset);
593
604 bool readTemplateAllBatches(uint16_t& actual_size, uint8_t* buf, const uint16_t buf_size,
605 const uint16_t batch_size = 128, finger2::batch_callback_t callback = nullptr);
613 bool writeTemplate(const uint16_t offset, const uint8_t* buf, const uint16_t buf_size);
622 bool writeTemplateAllBatches(const uint8_t* buf, const uint16_t buf_size, const uint16_t batch_size = 128,
623 finger2::batch_callback_t callback = nullptr);
624
632 bool deleteTemplate(const uint16_t page_id, const uint16_t num = 1);
633
640 bool clear();
641
648 bool readValidTemplates(uint16_t& num);
649
657 bool readIndexTable(uint8_t table[32]);
658
668 bool existsTemplate(const uint16_t page_id);
669
675 bool findLowestAvailablePage(uint16_t& page);
676
682 bool findHighestAvailablePage(uint16_t& page);
684
688
701 bool autoEnroll(finger2::ConfirmCode& confirm, const uint16_t page_id, const uint8_t capture_times = 5,
702 const finger2::auto_enroll_flag_t flags = 0, finger2::auto_enroll_callback_t callback = nullptr);
703
717 bool autoIdentify(bool& matched, uint16_t& matching_page_id, uint16_t& score, const uint16_t page_id = 0xFFFF,
718 const uint8_t security_level = 0, finger2::auto_identify_flag_t flags = 0,
719 const finger2::auto_identify_callback_t callback = nullptr);
720
726 bool cancel();
728
731
740 bool readNotepad(uint8_t buf[32], const uint8_t page);
752 bool writeNotepad(const uint8_t page, const uint8_t* buf, const uint8_t len);
754
761 bool readInformationPage(uint8_t info[512]);
762
771 bool readRandomNumber(uint32_t& value);
772
780 bool handshake(bool& status);
788 bool checkSensor(bool& status);
789
797 bool readSerialNumber(uint8_t sn[32]);
798
805 bool readFirmwareVersion(uint8_t& ver);
806
807protected:
808 bool write_command(const uint8_t cmd, const uint32_t addr, const uint8_t* payload = nullptr,
809 const uint16_t payload_len = 0);
810 finger2::ConfirmCode read_response(Packet& rbuf);
811 bool transceive_command(Packet& rbuf, const uint8_t cmd, const uint32_t addr, const uint8_t* payload = nullptr,
812 const uint16_t payload_len = 0);
813 bool transceive_command8(Packet& rbuf, const uint8_t cmd, const uint32_t addr, const uint8_t value);
814 uint8_t read_data(Packet& rbuf);
815
816private:
817 config_t _cfg{};
818 uint32_t _address{};
819 uint16_t _pageCapacity{};
820};
821
822namespace finger2 {
823namespace command {
825constexpr uint8_t CMD_GET_IMAGE{0x01};
826constexpr uint8_t CMD_GET_ENROLL_IMAGE{0x29};
827constexpr uint8_t CMD_GENERATE_CHARACTERISTIC{0x02};
828constexpr uint8_t CMD_MATCH{0x03};
829constexpr uint8_t CMD_SEARCH{0x04};
830constexpr uint8_t CMD_SEARCH_NOW{0x3E};
831constexpr uint8_t CMD_REGISTER_MODEL{0x05};
832constexpr uint8_t CMD_STORE_TEMPLATE{0x06};
833constexpr uint8_t CMD_LOAD_TEMPLATE{0x07};
834
835constexpr uint8_t CMD_UPLOAD_IMAGE{0x0A};
836constexpr uint8_t CMD_DELETE_TEMPLATE{0x0C};
837constexpr uint8_t CMD_EMPTY{0x0D};
838
839constexpr uint8_t CMD_WRITE_REGISTER{0x0E};
840constexpr uint8_t CMD_READ_SYSTEM_PARAMETER{0x0F};
841constexpr uint8_t CMD_GET_RANDOM{0x14};
842constexpr uint8_t CMD_READ_FLASH_INFORMATION{0x16};
843constexpr uint8_t CMD_WRITE_NOTEPAD{0x18};
844constexpr uint8_t CMD_READ_NOTEPAD{0x19};
845
846constexpr uint8_t CMD_READ_VALID_TEMPLATE_NUMBER{0x1D};
847constexpr uint8_t CMD_READ_INDEX_TABLE{0x1F};
848
849constexpr uint8_t CMD_CANCEL{0x30};
850constexpr uint8_t CMD_AUTO_ENROLL{0x31};
851constexpr uint8_t CMD_AUTO_IDENTIFY{0x32};
852
853constexpr uint8_t CMD_GET_SERIAL{0x34};
854constexpr uint8_t CMD_HANDSHAKE{0x35};
855constexpr uint8_t CMD_CHECK_SENSOR{0x36};
856constexpr uint8_t CMD_CONTROL_BLN{0x3C};
857constexpr uint8_t CMD_GET_IMAGE_INFORMATION{0x3D};
858
859constexpr uint8_t CMD_UPLOAD_TEMPLATE{0x7A};
860constexpr uint8_t CMD_DOWNLOAD_TEMPLATE{0x7B};
861
862constexpr uint8_t CMD_SET_SLEEP_TIME{0xD0};
863constexpr uint8_t CMD_GET_SLEEP_TIME{0xD1};
864constexpr uint8_t CMD_SET_WORK_MODE{0xD2};
865constexpr uint8_t CMD_GET_WORK_MODE{0xD3};
866constexpr uint8_t CMD_ACTIVATE_MODULE{0xD4};
867constexpr uint8_t CMD_GET_MODULE_STATUS{0xD5};
868constexpr uint8_t CMD_SAVE_CONFIGURATION{0xD6};
869constexpr uint8_t CMD_GET_FIRMWARE_VERSION{0xD7};
871} // namespace command
872} // namespace finger2
873
874} // namespace unit
875} // namespace m5
876#endif
Fingerprint unit.
Definition unit_Finger2.hpp:255
bool readValidTemplates(uint16_t &num)
Read the number of valid templates.
Definition unit_Finger2.cpp:651
bool wakeup()
Wakeup.
Definition unit_Finger2.cpp:948
config_t config() const
Gets the configuration.
Definition unit_Finger2.hpp:300
bool findLowestAvailablePage(uint16_t &page)
Find the lowest available page number.
Definition unit_Finger2.cpp:975
uint32_t deviceAddress() const
Get the device address.
Definition unit_Finger2.hpp:321
bool clear()
Clear fingerprint database (delete all templates)
Definition unit_Finger2.cpp:583
bool readSystemParams(finger2::SystemBasicParams &params)
Read the system basic parameters.
Definition unit_Finger2.cpp:201
bool readSerialNumber(uint8_t sn[32])
Read the serial number (32 bytes)
Definition unit_Finger2.cpp:954
bool generateCharacteristic(const uint8_t buffer_id=1)
Generate characteristic from captured image.
Definition unit_Finger2.cpp:305
bool readTemplateAllBatches(uint16_t &actual_size, uint8_t *buf, const uint16_t buf_size, const uint16_t batch_size=128, finger2::batch_callback_t callback=nullptr)
Read the template.
Definition unit_Finger2.cpp:489
static constexpr uint32_t DEFAULT_MODULE_ADDRESS
Default device address.
Definition unit_Finger2.hpp:259
bool findHighestAvailablePage(uint16_t &page)
Find the highest available page number.
Definition unit_Finger2.cpp:1009
void config(const config_t &cfg)
Set the configuration.
Definition unit_Finger2.hpp:308
bool storeTemplate(const uint16_t page_id, const uint8_t buffer_id=1)
Store template.
Definition unit_Finger2.cpp:322
bool readTemplate(uint16_t &actual_size, uint8_t *buf, const uint16_t buf_size, const uint16_t offset)
Read the specific size template from the specific offset.
Definition unit_Finger2.cpp:455
bool autoIdentify(bool &matched, uint16_t &matching_page_id, uint16_t &score, const uint16_t page_id=0xFFFF, const uint8_t security_level=0, finger2::auto_identify_flag_t flags=0, const finger2::auto_identify_callback_t callback=nullptr)
Automatic identify (1:1, 1:N)
Definition unit_Finger2.cpp:827
bool existsTemplate(const uint16_t page_id)
Exists template?
Definition unit_Finger2.cpp:687
bool cancel()
Abort automatic functions.
Definition unit_Finger2.cpp:896
static constexpr uint16_t IMAGE_HEIGHT
Captured image height.
Definition unit_Finger2.hpp:263
bool deleteTemplate(const uint16_t page_id, const uint16_t num=1)
Delete templates.
Definition unit_Finger2.cpp:567
bool writeSystemRegister(const finger2::RegisterID reg_id, const uint8_t value)
Write the value to register for settings.
Definition unit_Finger2.cpp:589
bool writeSleepTime(const uint8_t sec)
Write the time to go to sleep (second)
Definition unit_Finger2.cpp:232
bool readSleepTime(uint8_t &sec)
Read the time to go to sleep (second)
Definition unit_Finger2.cpp:220
bool search(bool &matched, uint16_t &matching_page_id, uint16_t &score, const uint8_t buffer_id=1, const uint16_t start_page=0, const uint16_t page_num=0)
Search for matching template (1:N)
Definition unit_Finger2.cpp:377
bool searchNow(bool &matched, uint16_t &matching_page_id, uint16_t &score, const uint16_t start_page=0, const uint16_t page_num=0)
Search for matching template using the last extracted template (1:N)
Definition unit_Finger2.cpp:419
bool readNotepad(uint8_t buf[32], const uint8_t page)
Read the notepad(Flash) data.
Definition unit_Finger2.cpp:902
constexpr uint16_t imageHeight() const
Get the image height.
Definition unit_Finger2.hpp:337
bool match(bool &matched, uint16_t &score)
Is match buffer 1 and 2? (1:1)
Definition unit_Finger2.cpp:360
static constexpr uint16_t TEMPLATE_SIZE
Template size.
Definition unit_Finger2.hpp:264
bool readModuleStatus(bool &awake)
Read the module status.
Definition unit_Finger2.cpp:160
bool generateTemplate()
Generate template from merged characteristics.
Definition unit_Finger2.cpp:316
bool capture(bool &detected, const bool enroll=false)
Capture the fingerprint image.
Definition unit_Finger2.cpp:248
bool loadTemplate(const uint8_t buffer_id, const uint16_t page_id)
Load template to buffer.
Definition unit_Finger2.cpp:341
constexpr uint16_t imageWidth() const
Get the image width.
Definition unit_Finger2.hpp:329
bool handshake(bool &status)
Verify that the module is working properly.
Definition unit_Finger2.cpp:703
bool readImageInformation(uint8_t &percentage, bool &quality)
Capture the fingerprint and read image information.
Definition unit_Finger2.cpp:264
bool readFirmwareVersion(uint8_t &ver)
Read the firmware version.
Definition unit_Finger2.cpp:964
bool readWorkMode(finger2::WorkMode &wm)
Read the work mode.
Definition unit_Finger2.cpp:172
bool writeNotepad(const uint8_t page, const uint8_t *buf, const uint8_t len)
Write the notepad(Flash) data.
Definition unit_Finger2.cpp:917
bool autoEnroll(finger2::ConfirmCode &confirm, const uint16_t page_id, const uint8_t capture_times=5, const finger2::auto_enroll_flag_t flags=0, finger2::auto_enroll_callback_t callback=nullptr)
Automatic registration.
Definition unit_Finger2.cpp:764
bool writeControlLED(const finger2::LEDMode mode, const finger2::LEDColor clr, const uint8_t cycle=0, const finger2::LEDColor eclr=finger2::LEDColor::Black)
Write the LED control.
Definition unit_Finger2.cpp:721
bool checkSensor(bool &status)
Verify whether the sensor is working properly.
Definition unit_Finger2.cpp:712
uint16_t capacity() const
Get the capacity of templates.
Definition unit_Finger2.hpp:346
bool readRandomNumber(uint32_t &value)
Read the random number (32bits)
Definition unit_Finger2.cpp:935
static constexpr uint16_t IMAGE_WIDTH
Capture image width.
Definition unit_Finger2.hpp:262
bool readImage(std::vector< uint8_t > &img)
Read the finger image.
Definition unit_Finger2.cpp:278
bool saveWorkMode()
Write the current work mode to internal flash.
Definition unit_Finger2.cpp:195
bool writeControlLEDRainbow(const uint8_t tm, const finger2::LEDColor *colors, const uint8_t colors_num, const uint8_t cycle)
Write the LED control for LEDMode::Rainbow.
Definition unit_Finger2.cpp:738
bool writeWorkMode(const finger2::WorkMode wm)
Write the work mode.
Definition unit_Finger2.cpp:189
bool writeTemplate(const uint16_t offset, const uint8_t *buf, const uint16_t buf_size)
Write the specific size template to the specific offset.
Definition unit_Finger2.cpp:520
std::vector< uint8_t > Packet
Packet buffer for communication.
Definition unit_Finger2.hpp:260
bool readIndexTable(uint8_t table[32])
Read the index table (Bits of existing templates)
Definition unit_Finger2.cpp:663
virtual bool begin() override
Begin communication with the unit.
Definition unit_Finger2.cpp:102
bool saveSleepTime()
Write the current sleep time to internal flash.
Definition unit_Finger2.cpp:242
bool readInformationPage(uint8_t info[512])
Read the information page in FLASH (512 bytes)
Definition unit_Finger2.cpp:615
bool writeTemplateAllBatches(const uint8_t *buf, const uint16_t buf_size, const uint16_t batch_size=128, finger2::batch_callback_t callback=nullptr)
Write the template.
Definition unit_Finger2.cpp:541
Flags for autoEnroll.
Flags for autoIdentify.
For UnitFinger2.
Top level namespace of M5Stack.
Unit-related namespace.
Settings for begin.
Definition unit_Finger2.hpp:288
uint32_t timeout_ms
Serial I/O timeout (ms)
Definition unit_Finger2.hpp:289
finger2::WorkMode work_mode
Work mode.
Definition unit_Finger2.hpp:290
uint8_t sleep_time
Scheduled sleep time (10 - 254) sec.
Definition unit_Finger2.hpp:291
The module’s basic parameters.
Definition unit_Finger2.hpp:79
uint16_t packet_size
Packet size (See also RegisterID::PacketSize)
Definition unit_Finger2.hpp:85
uint16_t baud_rate
Definition unit_Finger2.hpp:86
uint32_t address
Device address.
Definition unit_Finger2.hpp:84
uint16_t score_level
Match threshold (See also RegisterID::ScoreLevel)
Definition unit_Finger2.hpp:83
uint16_t status
System operational status.
Definition unit_Finger2.hpp:80
uint16_t database_capacity
Fingerprint database capacity.
Definition unit_Finger2.hpp:82
uint16_t sensor_type
Sensor type.
Definition unit_Finger2.hpp:81
bool(*)(const uint16_t call_times, const ConfirmCode confirm, const AutoIdentifyStage stage) auto_identify_callback_t
Callback function for autoIdentify.
Definition unit_Finger2.hpp:232
uint16_t auto_identify_flag_t
Flags for autoIdentify.
Definition unit_Finger2.hpp:91
LEDColor
Color for LED.
Definition unit_Finger2.hpp:55
@ Blue
Blue (as default)
bool(*)(const uint16_t call_times, const uint16_t actual_size, const uint16_t batch_size, const uint16_t total_size, const uint16_t planned_size, const bool completed) batch_callback_t
Callback for batch read/write.
Definition unit_Finger2.hpp:246
bool(*)(const uint16_t call_times, const uint16_t page_id, const ConfirmCode confirm, const AutoEnrollStage stage, const uint8_t state) auto_enroll_callback_t
Callback function for autoEnroll.
Definition unit_Finger2.hpp:222
AutoIdentifyStage
Interim stage of AutoIdentify.
Definition unit_Finger2.hpp:135
WorkMode
Work mode.
Definition unit_Finger2.hpp:29
@ AlwaysActive
Always active.
ConfirmCode
Confirmation code.
Definition unit_Finger2.hpp:145
@ UploadImageFailed
0x0F:Image uploading failed
@ ResetFailed
0x14:The system reset failed
@ NotepadPageError
0x1C:Notepad page number appointing error
@ RegisterError
0x1B:Register distributing content wrong number
@ KeyLocked
0x32:The key has been locked
@ OTPFailed
0x2C:OTP operation failed
@ Unmatched
0x08:The fingerprint unmatched
@ ImageTooHumid
0x05:The fingerprint image is too humid or too blurry to generate feature
@ ParameterError
0xFD:Parameter error
@ RandomError
0x19:Random number generation failed
@ DeleteFailed
0x10:Module deleting failed
@ ReadTemplateFailed
0x0C:Template reading error or invalid from the fingerprint database
@ DatabaseFull
0x1F:Fingerprint database is full
@ ClearFailed
0x11:The fingerprint database clearing failed
@ NotActive
0xFE:The fingerprint module is not activated
@ MismatchFunction
0x31:Functionality does not match the encryption level
@ IncompleteFinger
0x17:There are incomplete fingerprint or finger stay still between twice image capturing
@ TemplateNotEmpty
0x22:Fingerprint template is NOT empty
@ NotFound
0x09:No fingerprint searched
@ ImageFailed
0x03:Getting fingerprint image failed
@ InformationNotEmpty
0x2A:Module information is NOT empty
@ AddressOverflow
0x0B:The address SN exceeding the range of fingerprint database when accessing to it
@ PassiveActivation
0xFF:Passive activation
@ IncorrectAddress
0x20:Incorrect device address
@ IncorrectEnrollCount
0x25;Incorrect entry count setting
@ PacketTimeout
0xF9:Receive packet timeout
@ PacketOverflow
0xFB:Packet overflow (e.g., when a packet exceeds the maximum length)
@ TemplateEmpty
0x23:Fingerprint template is empty
@ PasswordIncorrect
0x13:The password incorrect
@ OperationBlocked
0xFC:This operation has been blocked
@ InitializeFailed
0x29:Sensor initialization failed
@ AutoEnrollFailed
0x1E:Automatic enroll failed
@ IllegalData
0x35:The data is illegal
@ ImageTooAmorphous
0x06:The fingerprint image is too amorphous to generate feature
@ SmallImage
0x33:Image too small
@ AlreadyExists
0x27:Fingerprint already exists
@ FlashError
0x18:Read-write FLASH error
@ MergeFailed
0x0A:The feature merging failed
@ PortError
0x1D:Port operation failed
@ UploadFailed
0x0D:Feature uploading failed
@ IncorrectResult
0x30:The encryption/decryption results of the security algorithm are incorrect
@ NoValidImage
0x15:There is no valid original image in buffer to generate image
@ AlgorithmFailed
0x2F:Security algorithm execution failed
@ KeyNotExist
0x2E:The key does not exist
@ NoFinger
0x02:No finger on the sensor
@ DatabaseEmpty
0x24:The fingerprint database is empty
@ UpgradeFailed
0x16:On-line upgrading failed;
@ StaticObjectInImage
0x34:Static foreign object in the image (Orange)
@ ImageTooDry
0x04:The fingerprint image is too dry or too light to generate feature
@ VerifyPassword
0x21:Must verify password first
@ PacketError
0x01:Data packet receiving error
@ OK
0x00:Instruction implementing end or OK
@ PacketBad
0xFA:Error Packet (e.g., data not fully received, other packet received)
@ InformationEmpty
0x2B:Module information is empty
@ LowPowerFailed
0x12:Cannot be in low power consumption
@ ReceiveFailed
0x0E:The module cannot receive continue data packet
@ KeyGenerateFailed
0x2D:Key generation failed
@ InvalidRegister
0x1A:Invalid register number
@ FeatureAssociated
0x28:Fingerprint features are associated
LEDMode
LED operation mode.
Definition unit_Finger2.hpp:39
@ Breath
Roundtrip between light up and out gradually (as default)
@ Rainbow
Roundtrip rainbow color.
@ Fadein
Light up gradually.
@ Fadeout
Light out gradually.
constexpr auto_enroll_flag_t PROHIBIT_DUPLICATE_TEMPLATE
Template Duplication prohibited.
Definition unit_Finger2.hpp:100
uint16_t auto_enroll_flag_t
Flags for autoEnroll.
Definition unit_Finger2.hpp:90
constexpr auto_enroll_flag_t ALLOW_OVERWRITE_PAGE
Allow overwriting of page_id.
Definition unit_Finger2.hpp:99
AutoEnrollStage
Interim stage of AutoEnroll.
Definition unit_Finger2.hpp:121
@ ReleasedFinger
Detected that the finger was released.
@ VerifyCommand
Command verification.
constexpr auto_enroll_flag_t NO_NEED_RELAESE_FINGER
Definition unit_Finger2.hpp:104
RegisterID
PS_WriteReg target register.
Definition unit_Finger2.hpp:70
@ PacketSize
0x06:Data packet size (0:32,1:64,2:128,3:256) (1 as default)
@ ScoreLevel
0x05:Score level for matching (1-5, 3 as default)
constexpr auto_enroll_flag_t NO_NEED_RELEASE_FINGER
No need to release finger.
Definition unit_Finger2.hpp:101
constexpr auto_enroll_flag_t DONT_RETURN_INTERMEDIATE_RESULTS
Do not return intermediate results.
Definition unit_Finger2.hpp:98