@@ -70,6 +70,24 @@ class TestFinger2 : public UARTComponentTestBase<UnitFinger2, bool> {
7070 s.begin (115200 , SERIAL_8N1 , pin_num_in, pin_num_out);
7171 return &s;
7272 }
73+
74+ void reset_serial (const uint32_t baud = 19200 )
75+ {
76+ auto pin_num_in = M5 .getPin (m5::pin_name_t ::port_c_rxd);
77+ auto pin_num_out = M5 .getPin (m5::pin_name_t ::port_c_txd);
78+ if (pin_num_in < 0 || pin_num_out < 0 ) {
79+ // M5_LOGW("PortC is not available");
80+ Wire.end ();
81+ pin_num_in = M5 .getPin (m5::pin_name_t ::port_a_pin1);
82+ pin_num_out = M5 .getPin (m5::pin_name_t ::port_a_pin2);
83+ }
84+ // M5_LOGI("%u getPin: %d,%d", baud, pin_num_in, pin_num_out);
85+ serial->end ();
86+ serial->begin (baud, SERIAL_8N1 , pin_num_in, pin_num_out);
87+ while (serial->available ()) {
88+ serial->read ();
89+ }
90+ }
7391};
7492
7593// INSTANTIATE_TEST_SUITE_P(ParamValues, TestFinger2, ::testing::Values(false, true));
@@ -85,7 +103,34 @@ constexpr WorkMode workmode_table[] = {
85103
86104constexpr LEDMode led_table[] = {
87105 LEDMode::Bleath, LEDMode::Blink, LEDMode::On, LEDMode::Off, LEDMode::Fadein, LEDMode::Fadeout,
106+ };
107+ constexpr auto_enroll_flag_t enroll_flags_table[] = {
108+ 0 ,
109+ auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS ,
110+ auto_enroll_flag::ALLOW_OVERWRITE_PAGE ,
111+ auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS | auto_enroll_flag::ALLOW_OVERWRITE_PAGE ,
112+ auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE ,
113+ auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE | auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS ,
114+ auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE | auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE ,
115+ auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE | auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS |
116+ auto_enroll_flag::ALLOW_OVERWRITE_PAGE ,
117+ auto_enroll_flag::NO_NEED_RELAESE_FINGER ,
118+ auto_enroll_flag::NO_NEED_RELAESE_FINGER | auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS ,
119+ auto_enroll_flag::NO_NEED_RELAESE_FINGER | auto_enroll_flag::ALLOW_OVERWRITE_PAGE ,
120+ auto_enroll_flag::NO_NEED_RELAESE_FINGER | auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS |
121+ auto_enroll_flag::ALLOW_OVERWRITE_PAGE ,
122+ auto_enroll_flag::NO_NEED_RELAESE_FINGER | auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE ,
123+ auto_enroll_flag::NO_NEED_RELAESE_FINGER | auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE |
124+ auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS ,
125+ auto_enroll_flag::NO_NEED_RELAESE_FINGER | auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE |
126+ auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE ,
127+ auto_enroll_flag::NO_NEED_RELAESE_FINGER | auto_enroll_flag::PROHIBIT_DUPLICATE_TEMPLATE |
128+ auto_enroll_flag::DONT_RETURN_INTERMEDIATE_RESULTS | auto_enroll_flag::ALLOW_OVERWRITE_PAGE ,
129+ };
88130
131+ constexpr auto_identify_flag_t identify_flags_table[] = {
132+ 0 ,
133+ auto_identify_flag::DONT_RETURN_INTERMEDIATE_RESULTS ,
89134};
90135
91136auto rng = std::default_random_engine{};
@@ -111,7 +156,7 @@ TEST_P(TestFinger2, Basic)
111156 SCOPED_TRACE (ustr);
112157
113158 // ///
114- // return;
159+ return ;
115160
116161 auto cfg = unit->config ();
117162
@@ -166,8 +211,9 @@ TEST_P(TestFinger2, Basic)
166211 SystemBasicParams params{};
167212 EXPECT_TRUE (unit->readSystemParams (params));
168213 EXPECT_NE (params.status , 0U );
169- EXPECT_EQ (params.template_size , 0x2EC8u );
170- EXPECT_EQ (params.capacity , 100u );
214+ // EXPECT_EQ(params.template_size, 0x2EC8u);
215+ // EXPECT_EQ(params.sensor_type,0x????);
216+ EXPECT_EQ (params.database_capacity , 100u );
171217 EXPECT_EQ (params.score_level , cfg.score_level );
172218 EXPECT_EQ (params.address , 0xFFFFFFFFu );
173219 EXPECT_GE (params.packet_size , 0u );
@@ -196,9 +242,9 @@ TEST_P(TestFinger2, Basic)
196242 EXPECT_FALSE (unit->writeSystemRegister (RegisterID::PacketSize, 4 ));
197243 EXPECT_FALSE (unit->writeSystemRegister (RegisterID::PacketSize, 255 ));
198244
199- EXPECT_TRUE (unit->writeSystemRegister (RegisterID::PacketSize, 2 ));
245+ EXPECT_TRUE (unit->writeSystemRegister (RegisterID::PacketSize, 1 ));
200246 EXPECT_TRUE (unit->readSystemParams (params));
201- EXPECT_EQ (params.packet_size , 2 );
247+ EXPECT_EQ (params.packet_size , 1 );
202248
203249 uint8_t info[512 ]{};
204250 uint8_t info_empty[512 ]{};
@@ -236,7 +282,7 @@ TEST_P(TestFinger2, LED)
236282 SCOPED_TRACE (ustr);
237283
238284 // ///
239- // return;
285+ return ;
240286
241287 EXPECT_TRUE (unit->writeSleepTime (10 ));
242288
@@ -292,7 +338,7 @@ TEST_P(TestFinger2, Notepad)
292338 SCOPED_TRACE (ustr);
293339
294340 // ///
295- // return;
341+ return ;
296342
297343 uint8_t buf[32 ]{};
298344 constexpr uint8_t empty[32 ]{};
@@ -371,7 +417,7 @@ TEST_P(TestFinger2, Template)
371417 SCOPED_TRACE (ustr);
372418
373419 // ///
374- // return;
420+ return ;
375421
376422 std::vector<uint8_t > tbuf{};
377423 tbuf.resize (UnitFinger2::TEMPLATE_SIZE );
@@ -546,6 +592,9 @@ TEST_P(TestFinger2, Finger)
546592{
547593 SCOPED_TRACE (ustr);
548594
595+ // ///
596+ return ;
597+
549598 for (auto && wm : workmode_table) {
550599 auto s = m5::utility::formatString (" WorkMode:%u" , wm);
551600 SCOPED_TRACE (s.c_str ());
@@ -655,6 +704,55 @@ TEST_P(TestFinger2, Finger)
655704 }
656705}
657706
707+ TEST_P (TestFinger2, Automatic)
708+ {
709+ SCOPED_TRACE (ustr);
710+ for (auto && wm : workmode_table) {
711+ auto s = m5::utility::formatString (" WorkMode:%u" , wm);
712+ SCOPED_TRACE (s.c_str ());
713+ EXPECT_TRUE (unit->writeWorkMode (wm));
714+
715+ // In sleep
716+ if (wm == WorkMode::ScheduledSleep) {
717+ wait_sleep (unit.get ());
718+
719+ ConfirmCode confirm{};
720+ EXPECT_FALSE (unit->autoEnroll (confirm, 0 ));
721+
722+ bool matched{};
723+ uint16_t page{}, score{};
724+ EXPECT_FALSE (unit->autoIdentify (matched, page, score));
725+ continue ;
726+ }
727+
728+ ConfirmCode confirm{};
729+ EXPECT_FALSE (unit->autoEnroll (confirm, 0 ));
730+ bool matched{};
731+ uint16_t page{}, score{};
732+ EXPECT_FALSE (unit->autoIdentify (matched, page, score));
733+
734+ EXPECT_FALSE (unit->autoEnroll (confirm, 100 ));
735+ EXPECT_FALSE (unit->autoEnroll (confirm, 65535 ));
736+
737+ EXPECT_FALSE (unit->autoEnroll (confirm, 0 , 0 ));
738+ EXPECT_FALSE (unit->autoEnroll (confirm, 0 , 6 ));
739+ EXPECT_FALSE (unit->autoEnroll (confirm, 0 , 255 ));
740+
741+ for (auto && eflags : enroll_flags_table) {
742+ EXPECT_FALSE (unit->autoEnroll (confirm, 0 , 5 , eflags));
743+ }
744+
745+ EXPECT_FALSE (unit->autoIdentify (matched, page, score, 100 ));
746+ EXPECT_FALSE (unit->autoIdentify (matched, page, score, 0xFFFE ));
747+ EXPECT_FALSE (unit->autoIdentify (matched, page, score, 0xFFFF , 2 ));
748+ EXPECT_FALSE (unit->autoIdentify (matched, page, score, 0xFFFF , 255 ));
749+
750+ for (auto && iflags : identify_flags_table) {
751+ EXPECT_FALSE (unit->autoIdentify (matched, page, score, 0xFFFF , 0 , iflags));
752+ }
753+ }
754+ }
755+
658756#if 0
659757// page:0
6607580x3ffb202c| 00 03 06 09 0C 0F 12 15 18 1B 1E 21 24 27 2A 2D |
0 commit comments