Revert the two verify-loop changes: zero matches in four runs
Two changes went in together and the next four runs matched nothing, including a held press. They cannot be separated after the fact, so both come out and the loop returns to the shape that has matched every time it was asked to. One is definitely broken. The rising-edge recapture assumed a frame 50 ms after detection would show a settled finger; on a quick tap the finger was already gone, the recapture read the idle floor -- metric 133, still flagged FINGER from the first capture -- and an empty image went to the matcher. A guaranteed miss on exactly the case it was meant to fix. The other is probably wrong. Dropping event 5 as a duplicate rested on observing that event 7 alone produces a verdict -- but every such observation was a held frame that followed an event 5 on the same press. Whether the touch event initialises the press in the trustlet is not known, and five finger frames with no match is not the evidence to remove it on. The process error is the one worth writing down: two variables changed at once, on a live user's finger, with no way to attribute the result. One at a time from here.
This commit is contained in:
parent
9790381e72
commit
06459a8e73
3 changed files with 31 additions and 28 deletions
|
|
@ -115,14 +115,14 @@ int main() {
|
|||
auto e4 = t.Observe(false, Mode::Enrol);
|
||||
Check(e4.empty(), "enrol: idle reports nothing");
|
||||
|
||||
// Authentication: every frame with a finger reaches the matcher, ONCE.
|
||||
// Event 5 also runs the matcher here, so sending it on the rising edge
|
||||
// produced two verdicts from one image and cost ~300 ms extra on the
|
||||
// frame where speed matters most.
|
||||
// Authentication: touch then image-ready on the rising edge. Dropping
|
||||
// the touch event as "redundant" (it does also run the matcher) gave a
|
||||
// run with zero matches; every recorded match followed an event 5 on
|
||||
// its press. Not to be removed without a measurement isolating it.
|
||||
TouchTracker a;
|
||||
auto a1 = a.Observe(true, Mode::Authenticate);
|
||||
Check(a1.size() == 1 && a1[0] == Event::ImageReady,
|
||||
"auth: rising edge reports image-ready only -- one matcher run, not two");
|
||||
Check(a1.size() == 2 && a1[0] == Event::FingerTouched && a1[1] == Event::ImageReady,
|
||||
"auth: rising edge reports touched then image-ready");
|
||||
auto a2 = a.Observe(true, Mode::Authenticate);
|
||||
Check(a2.size() == 1 && a2[0] == Event::ImageReady, "auth: a held frame still reports image-ready");
|
||||
auto a3 = a.Observe(false, Mode::Authenticate);
|
||||
|
|
|
|||
Loading…
Reference in a new issue