mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 22:02:17 +01:00
fix: wait out a remote's long press across the millis() wrap
The 500 ms wait that tells a short press from a long one compared now > await, so a press just before the wrap acted at once. It now compares the wrap-safe difference. Reconcile Q21 in SHADE_BEHAVIOUR_PLAN.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4eff50645d
commit
7220f38fcd
3 changed files with 15 additions and 2 deletions
|
|
@ -324,6 +324,17 @@ static void test_remote_my_when_idle_goes_to_the_favorite_after_half_a_second()
|
|||
r.wait(200);
|
||||
ASSERT_POS(60, r.st().target);
|
||||
}
|
||||
static void test_remote_my_waits_half_a_second_across_the_millis_wrap() {
|
||||
Rig r;
|
||||
r.b.restore(0, 0, 60, -1);
|
||||
r.now = 0xFFFFFFFF - 200;
|
||||
r.press(somfy_commands::My);
|
||||
// The deadline is past the wrap; it still waits for it.
|
||||
r.wait(300);
|
||||
ASSERT_POS(0, r.st().target);
|
||||
r.wait(300);
|
||||
ASSERT_POS(60, r.st().target);
|
||||
}
|
||||
static void test_remote_my_held_sets_the_favorite() {
|
||||
Rig r;
|
||||
r.b.restore(30, 0, 60, -1);
|
||||
|
|
@ -629,6 +640,7 @@ int main(int argc, char **argv) {
|
|||
RUN_TEST(test_flipped_shade_sends_the_other_way);
|
||||
RUN_TEST(test_remote_down_and_my_stop);
|
||||
RUN_TEST(test_remote_my_when_idle_goes_to_the_favorite_after_half_a_second);
|
||||
RUN_TEST(test_remote_my_waits_half_a_second_across_the_millis_wrap);
|
||||
RUN_TEST(test_remote_my_held_sets_the_favorite);
|
||||
RUN_TEST(test_remote_held_up_on_a_tilt_motor_tilts);
|
||||
RUN_TEST(test_remote_step_uses_the_frames_step_size);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue