M5Unit-FINGER 0.0.2 git rev:9f22200
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 PacketSize = 6,
72};
73
79 uint16_t status{};
80 uint16_t sensor_type{};
81 uint16_t database_capacity{};
82 uint16_t score_level{};
83 uint32_t address{};
84 uint16_t packet_size{};
85 uint16_t baud_rate{};
87} __attribute__((packed));
88
89using auto_enroll_flag_t = uint16_t;
90using auto_identify_flag_t = uint16_t;
91
96namespace auto_enroll_flag {
101
103[[deprecated("use NO_NEED_RELEASE_FINGER")]] constexpr auto_enroll_flag_t NO_NEED_RELAESE_FINGER =
105
106} // namespace auto_enroll_flag
107
112namespace auto_identify_flag {
113constexpr auto_identify_flag_t DONT_RETURN_INTERMEDIATE_RESULTS{1U << 2};
114} // namespace auto_identify_flag
115
129
134enum class AutoIdentifyStage : uint8_t {
136 GetImage,
137 Result = 0x05,
138};
139
210
221using auto_enroll_callback_t = bool (*)(const uint16_t call_times, const uint16_t page_id, const ConfirmCode confirm,
222 const AutoEnrollStage stage, const uint8_t state);
231using auto_identify_callback_t = bool (*)(const uint16_t call_times, const ConfirmCode confirm,
232 const AutoIdentifyStage stage);
233
245using batch_callback_t = bool (*)(const uint16_t call_times, const uint16_t actual_size, const uint16_t batch_size,
246 const uint16_t total_size, const uint16_t planned_size, const bool completed);
247
248} // namespace finger2
249
254class UnitFinger2 : public Component {
255 M5_UNIT_COMPONENT_HPP_BUILDER(UnitFinger2, 0x00);
256
257public:
258 static constexpr uint32_t DEFAULT_MODULE_ADDRESS{0xFFFFFFFF};
259 using Packet = std::vector<uint8_t>;
260
261 static constexpr uint16_t IMAGE_WIDTH{80};
262 static constexpr uint16_t IMAGE_HEIGHT{208};
263 static constexpr uint16_t TEMPLATE_SIZE{7262};
264
265protected:
266 explicit UnitFinger2(const uint32_t device_address) : Component(DEFAULT_ADDRESS), _address{device_address}
267 {
268 }
269
270public:
271 UnitFinger2() : UnitFinger2(DEFAULT_MODULE_ADDRESS)
272 {
273 }
274
275 virtual ~UnitFinger2() = default;
276
278 virtual bool begin() override;
279
284 struct config_t {
285 uint32_t timeout_ms{1000 * 4};
286 finger2::WorkMode work_mode{finger2::WorkMode::ScheduledSleep};
287 uint8_t sleep_time{10};
288 };
289
292
294 {
295 return _cfg;
296 }
298 inline void config(const config_t& cfg)
299 {
300 _cfg = cfg;
301 }
303
306
310 uint32_t deviceAddress() const
311 {
312 return _address;
313 }
315 inline constexpr uint16_t imageWidth() const
316 {
317 return IMAGE_WIDTH;
318 }
320 inline constexpr uint16_t imageHeight() const
321 {
322 return IMAGE_HEIGHT;
323 }
328 inline uint16_t capacity() const
329 {
330 return _pageCapacity;
331 }
333
340 bool readModuleStatus(bool& awake);
341
348 bool wakeup();
349
352
365 bool writeWorkMode(const finger2::WorkMode wm);
373 bool saveWorkMode();
374
381 bool readSleepTime(uint8_t& sec);
388 bool writeSleepTime(const uint8_t sec);
396 bool saveSleepTime();
397
406
415 bool writeSystemRegister(const finger2::RegisterID reg_id, const uint8_t value);
416
427 bool writeControlLED(const finger2::LEDMode mode, const finger2::LEDColor clr, const uint8_t cycle = 0,
428 const finger2::LEDColor eclr = finger2::LEDColor::Black);
429
440 bool writeControlLEDRainbow(const uint8_t tm, const finger2::LEDColor* colors, const uint8_t colors_num,
441 const uint8_t cycle);
443
447
454 bool capture(bool& detected, const bool enroll = false);
455
464 bool readImageInformation(uint8_t& percentage, bool& quality);
465
473 bool readImage(std::vector<uint8_t>& img);
474
483 bool generateCharacteristic(const uint8_t buffer_id = 1);
484
492 bool generateTemplate();
493
504 bool storeTemplate(const uint16_t page_id, const uint8_t buffer_id = 1);
505
515 bool match(bool& matched, uint16_t& score);
516
530 bool search(bool& matched, uint16_t& matching_page_id, uint16_t& score, const uint8_t buffer_id = 1,
531 const uint16_t start_page = 0, const uint16_t page_num = 0);
532
545 bool searchNow(bool& matched, uint16_t& matching_page_id, uint16_t& score, const uint16_t start_page = 0,
546 const uint16_t page_num = 0);
547
549
553
561 bool loadTemplate(const uint8_t buffer_id, const uint16_t page_id);
562
574 bool readTemplate(uint16_t& actual_size, uint8_t* buf, const uint16_t buf_size, const uint16_t offset);
575
585 bool readTemplateAllBatches(uint16_t& actual_size, uint8_t* buf, const uint16_t buf_size,
586 const uint16_t batch_size = 128, finger2::batch_callback_t callback = nullptr);
594 bool writeTemplate(const uint16_t offset, const uint8_t* buf, const uint16_t buf_size);
603 bool writeTemplateAllBatches(const uint8_t* buf, const uint16_t buf_size, const uint16_t batch_size = 128,
604 finger2::batch_callback_t callback = nullptr);
605
613 bool deleteTemplate(const uint16_t page_id, const uint16_t num = 1);
614
621 bool clear();
622
629 bool readValidTemplates(uint16_t& num);
630
638 bool readIndexTable(uint8_t table[32]);
639
649 bool existsTemplate(const uint16_t page_id);
650
656 bool findLowestAvailablePage(uint16_t& page);
657
663 bool findHighestAvailablePage(uint16_t& page);
665
669
682 bool autoEnroll(finger2::ConfirmCode& confirm, const uint16_t page_id, const uint8_t capture_times = 5,
683 const finger2::auto_enroll_flag_t flags = 0, finger2::auto_enroll_callback_t callback = nullptr);
684
698 bool autoIdentify(bool& matched, uint16_t& matching_page_id, uint16_t& score, const uint16_t page_id = 0xFFFF,
699 const uint8_t security_level = 0, finger2::auto_identify_flag_t flags = 0,
700 const finger2::auto_identify_callback_t callback = nullptr);
701
707 bool cancel();
709
712
721 bool readNotepad(uint8_t buf[32], const uint8_t page);
733 bool writeNotepad(const uint8_t page, const uint8_t* buf, const uint8_t len);
735
742 bool readInformationPage(uint8_t info[512]);
743
752 bool readRandomNumber(uint32_t& value);
753
761 bool handshake(bool& status);
769 bool checkSensor(bool& status);
770
778 bool readSerialNumber(uint8_t sn[32]);
779
786 bool readFirmwareVersion(uint8_t& ver);
787
788protected:
789 bool write_command(const uint8_t cmd, const uint32_t addr, const uint8_t* payload = nullptr,
790 const uint16_t payload_len = 0);
791 finger2::ConfirmCode read_response(Packet& rbuf);
792 bool transceive_command(Packet& rbuf, const uint8_t cmd, const uint32_t addr, const uint8_t* payload = nullptr,
793 const uint16_t payload_len = 0);
794 bool transceive_command8(Packet& rbuf, const uint8_t cmd, const uint32_t addr, const uint8_t value);
795 uint8_t read_data(Packet& rbuf);
796
797private:
798 config_t _cfg{};
799 uint32_t _address{};
800 uint16_t _pageCapacity{};
801};
802
803namespace finger2 {
804namespace command {
806constexpr uint8_t CMD_GET_IMAGE{0x01};
807constexpr uint8_t CMD_GET_ENROLL_IMAGE{0x29};
808constexpr uint8_t CMD_GENERATE_CHARACTERISTIC{0x02};
809constexpr uint8_t CMD_MATCH{0x03};
810constexpr uint8_t CMD_SEARCH{0x04};
811constexpr uint8_t CMD_SEARCH_NOW{0x3E};
812constexpr uint8_t CMD_REGISTER_MODEL{0x05};
813constexpr uint8_t CMD_STORE_TEMPLATE{0x06};
814constexpr uint8_t CMD_LOAD_TEMPLATE{0x07};
815
816constexpr uint8_t CMD_UPLOAD_IMAGE{0x0A};
817constexpr uint8_t CMD_DELETE_TEMPLATE{0x0C};
818constexpr uint8_t CMD_EMPTY{0x0D};
819
820constexpr uint8_t CMD_WRITE_REGISTER{0x0E};
821constexpr uint8_t CMD_READ_SYSTEM_PARAMETER{0x0F};
822constexpr uint8_t CMD_GET_RANDOM{0x14};
823constexpr uint8_t CMD_READ_FLASH_INFORMATION{0x16};
824constexpr uint8_t CMD_WRITE_NOTEPAD{0x18};
825constexpr uint8_t CMD_READ_NOTEPAD{0x19};
826
827constexpr uint8_t CMD_READ_VALID_TEMPLATE_NUMBER{0x1D};
828constexpr uint8_t CMD_READ_INDEX_TABLE{0x1F};
829
830constexpr uint8_t CMD_CANCEL{0x30};
831constexpr uint8_t CMD_AUTO_ENROLL{0x31};
832constexpr uint8_t CMD_AUTO_IDENTIFY{0x32};
833
834constexpr uint8_t CMD_GET_SERIAL{0x34};
835constexpr uint8_t CMD_HANDSHAKE{0x35};
836constexpr uint8_t CMD_CHECK_SENSOR{0x36};
837constexpr uint8_t CMD_CONTROL_BLN{0x3C};
838constexpr uint8_t CMD_GET_IMAGE_INFORMATION{0x3D};
839
840constexpr uint8_t CMD_UPLOAD_TEMPLATE{0x7A};
841constexpr uint8_t CMD_DOWNLOAD_TEMPLATE{0x7B};
842
843constexpr uint8_t CMD_SET_SLEEP_TIME{0xD0};
844constexpr uint8_t CMD_GET_SLEEP_TIME{0xD1};
845constexpr uint8_t CMD_SET_WORK_MODE{0xD2};
846constexpr uint8_t CMD_GET_WORK_MODE{0xD3};
847constexpr uint8_t CMD_ACTIVATE_MODULE{0xD4};
848constexpr uint8_t CMD_GET_MODULE_STATUS{0xD5};
849constexpr uint8_t CMD_SAVE_CONFIGURATION{0xD6};
850constexpr uint8_t CMD_GET_FIRMWARE_VERSION{0xD7};
852} // namespace command
853} // namespace finger2
854
855} // namespace unit
856} // namespace m5
857#endif
Fingerprint unit.
Definition unit_Finger2.hpp:254
bool readValidTemplates(uint16_t &num)
Read the number of valid templates.
Definition unit_Finger2.cpp:633
bool wakeup()
Wakeup.
Definition unit_Finger2.cpp:930
bool findLowestAvailablePage(uint16_t &page)
Find the lowest available page number.
Definition unit_Finger2.cpp:957
uint32_t deviceAddress() const
Get the device address.
Definition unit_Finger2.hpp:310
bool clear()
Clear fingerprint database (delete all templates)
Definition unit_Finger2.cpp:565
bool readSystemParams(finger2::SystemBasicParams &params)
Read the system basic parameters.
Definition unit_Finger2.cpp:196
bool readSerialNumber(uint8_t sn[32])
Read the serial number (32 bytes)
Definition unit_Finger2.cpp:936
bool generateCharacteristic(const uint8_t buffer_id=1)
Generate characteristic from captured image.
Definition unit_Finger2.cpp:300
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:471
static constexpr uint32_t DEFAULT_MODULE_ADDRESS
Default device address.
Definition unit_Finger2.hpp:258
bool findHighestAvailablePage(uint16_t &page)
Find the highest available page number.
Definition unit_Finger2.cpp:991
void config(const config_t &cfg)
Set the configuration.
Definition unit_Finger2.hpp:298
bool storeTemplate(const uint16_t page_id, const uint8_t buffer_id=1)
Store template.
Definition unit_Finger2.cpp:317
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:442
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:811
bool existsTemplate(const uint16_t page_id)
Exists template?
Definition unit_Finger2.cpp:671
bool cancel()
Abort automatic functions.
Definition unit_Finger2.cpp:878
static constexpr uint16_t IMAGE_HEIGHT
Captured image height.
Definition unit_Finger2.hpp:262
bool deleteTemplate(const uint16_t page_id, const uint16_t num=1)
Delete templates.
Definition unit_Finger2.cpp:549
bool writeSystemRegister(const finger2::RegisterID reg_id, const uint8_t value)
Write the value to register for settings.
Definition unit_Finger2.cpp:571
bool writeSleepTime(const uint8_t sec)
Write the time to go to sleep (second)
Definition unit_Finger2.cpp:227
bool readSleepTime(uint8_t &sec)
Read the time to go to sleep (second)
Definition unit_Finger2.cpp:215
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:372
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:410
bool readNotepad(uint8_t buf[32], const uint8_t page)
Read the notepad(Flash) data.
Definition unit_Finger2.cpp:884
constexpr uint16_t imageHeight() const
Get the image height.
Definition unit_Finger2.hpp:320
config_t config()
Gets the configuration.
Definition unit_Finger2.hpp:293
bool match(bool &matched, uint16_t &score)
Is match buffer 1 and 2? (1:1)
Definition unit_Finger2.cpp:355
static constexpr uint16_t TEMPLATE_SIZE
Template size.
Definition unit_Finger2.hpp:263
bool readModuleStatus(bool &awake)
Read the module status.
Definition unit_Finger2.cpp:160
bool generateTemplate()
Generate template from merged characteristics.
Definition unit_Finger2.cpp:311
bool capture(bool &detected, const bool enroll=false)
Capture the fingerprint image.
Definition unit_Finger2.cpp:243
bool loadTemplate(const uint8_t buffer_id, const uint16_t page_id)
Load template to buffer.
Definition unit_Finger2.cpp:336
constexpr uint16_t imageWidth() const
Get the image width.
Definition unit_Finger2.hpp:315
bool handshake(bool &status)
Verify that the module is working properly.
Definition unit_Finger2.cpp:687
bool readImageInformation(uint8_t &percentage, bool &quality)
Capture the fingerprint and read image information.
Definition unit_Finger2.cpp:259
bool readFirmwareVersion(uint8_t &ver)
Read the firmware version.
Definition unit_Finger2.cpp:946
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:899
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:748
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:705
bool checkSensor(bool &status)
Verify whether the sensor is working properly.
Definition unit_Finger2.cpp:696
uint16_t capacity() const
Get the capacity of templates.
Definition unit_Finger2.hpp:328
bool readRandomNumber(uint32_t &value)
Read the random number (32bits)
Definition unit_Finger2.cpp:917
static constexpr uint16_t IMAGE_WIDTH
Capture image width.
Definition unit_Finger2.hpp:261
bool readImage(std::vector< uint8_t > &img)
Read the finger image.
Definition unit_Finger2.cpp:273
bool saveWorkMode()
Write the current work mode to internal flash.
Definition unit_Finger2.cpp:190
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:722
bool writeWorkMode(const finger2::WorkMode wm)
Write the work mode.
Definition unit_Finger2.cpp:184
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:502
bool readIndexTable(uint8_t table[32])
Read the index table (Bits of existing templates)
Definition unit_Finger2.cpp:645
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:237
bool readInformationPage(uint8_t info[512])
Read the the information page in FLASH( 512 bytes)
Definition unit_Finger2.cpp:597
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:523
Flags for autoEnroll.
Flags for autoIdentify.
For UnitFinger2.
Top level namespace of M5stack.
Unit-related namespace.
Settings for begin.
Definition unit_Finger2.hpp:284
uint32_t timeout_ms
Serial I/O timeout (ms)
Definition unit_Finger2.hpp:285
finger2::WorkMode work_mode
Work mode.
Definition unit_Finger2.hpp:286
uint8_t sleep_time
Scheduled sleep time (10 - 254) sec.
Definition unit_Finger2.hpp:287
The module’s basic parameters.
Definition unit_Finger2.hpp:78
uint16_t packet_size
Packet size (See also RegisterID::PacketSize)
Definition unit_Finger2.hpp:84
uint16_t baud_rate
Definition unit_Finger2.hpp:85
uint32_t address
Device address.
Definition unit_Finger2.hpp:83
uint16_t score_level
Match threshold (See also RegisterID::ScoreLevel)
Definition unit_Finger2.hpp:82
uint16_t status
System operational status.
Definition unit_Finger2.hpp:79
uint16_t database_capacity
Fingerprint database capacity.
Definition unit_Finger2.hpp:81
uint16_t sensor_type
Sensor type.
Definition unit_Finger2.hpp:80
bool(*)(const uint16_t call_times, const ConfirmCode confirm, const AutoIdentifyStage stage) auto_identify_callback_t
Callback function for autoIdentify.
Definition unit_Finger2.hpp:231
uint16_t auto_identify_flag_t
Flags for autoIdentify.
Definition unit_Finger2.hpp:90
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:245
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:221
AutoIdentifyStage
Interim stage of AutoIdentify.
Definition unit_Finger2.hpp:134
WorkMode
Work mode.
Definition unit_Finger2.hpp:29
@ AlwaysActive
Always active.
ConfirmCode
Confirmation code.
Definition unit_Finger2.hpp:144
@ 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:99
uint16_t auto_enroll_flag_t
Flags for autoEnroll.
Definition unit_Finger2.hpp:89
constexpr auto_enroll_flag_t ALLOW_OVERWRITE_PAGE
Allow overwriting of page_id.
Definition unit_Finger2.hpp:98
AutoEnrollStage
Interim stage of AutoEnroll.
Definition unit_Finger2.hpp:120
@ ReleasedFinger
Detected that the finger was released.
@ VerifyCommand
Command verification.
constexpr auto_enroll_flag_t NO_NEED_RELAESE_FINGER
Definition unit_Finger2.hpp:103
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)
constexpr auto_enroll_flag_t NO_NEED_RELEASE_FINGER
No need to release finger.
Definition unit_Finger2.hpp:100
constexpr auto_enroll_flag_t DONT_RETURN_INTERMEDIATE_RESULTS
Do not return intermediate results.
Definition unit_Finger2.hpp:97