mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
refactor: name radio jobs as GLOSSARY.md does
The repeater-frame flag was called raw and the ticket was seq, jobSeq, stopSeq or mySeq depending on the file. They are now repeater and ticket (stopTicket, myTicket, lastTicket) throughout, matching the glossary. Renames only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
29d642b6f4
commit
bb6c929bf8
10 changed files with 92 additions and 92 deletions
|
|
@ -149,7 +149,7 @@ static void test_txhold_idle_shade_is_held() {
|
|||
TxHold hold;
|
||||
hold.mark(7, false, 1000);
|
||||
TEST_ASSERT_TRUE(hold.held());
|
||||
TEST_ASSERT_EQUAL_UINT32(7, hold.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(7, hold.ticket);
|
||||
TEST_ASSERT_EQUAL_UINT32(1000, hold.since);
|
||||
}
|
||||
static void test_txhold_moving_shade_is_not_held() {
|
||||
|
|
@ -171,7 +171,7 @@ static void test_txhold_first_job_wins() {
|
|||
TxHold hold;
|
||||
hold.mark(11, false, 1000);
|
||||
hold.mark(10, false, 1005);
|
||||
TEST_ASSERT_EQUAL_UINT32(11, hold.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(11, hold.ticket);
|
||||
TEST_ASSERT_EQUAL_UINT32(1000, hold.since);
|
||||
TEST_ASSERT_FALSE(hold.release(10));
|
||||
TEST_ASSERT_TRUE(hold.held());
|
||||
|
|
@ -192,7 +192,7 @@ static void test_txhold_new_hold_after_release() {
|
|||
hold.mark(5, false, 0);
|
||||
hold.release(5);
|
||||
hold.mark(6, false, 200);
|
||||
TEST_ASSERT_EQUAL_UINT32(6, hold.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(6, hold.ticket);
|
||||
TEST_ASSERT_EQUAL_UINT32(200, hold.since);
|
||||
}
|
||||
static void test_txhold_times_out() {
|
||||
|
|
|
|||
|
|
@ -24,15 +24,15 @@ static uint32_t runNext(RadioScheduler &s, uint32_t now = 0) {
|
|||
somfy_tx_job_t job;
|
||||
uint32_t waitMs;
|
||||
if(!s.next(now, job, waitMs)) return 0;
|
||||
if(!s.start(job.seq, now)) return job.seq;
|
||||
s.ended(job.seq, true, now);
|
||||
return job.seq;
|
||||
if(!s.start(job.ticket, now)) return job.ticket;
|
||||
s.ended(job.ticket, true, now);
|
||||
return job.ticket;
|
||||
}
|
||||
static void assertEvent(RadioScheduler &s, tx_event_t type, uint32_t ticket) {
|
||||
somfy_tx_event_t evt;
|
||||
TEST_ASSERT_TRUE_MESSAGE(s.popEvent(evt), "expected another event");
|
||||
TEST_ASSERT_EQUAL_UINT8((uint8_t)type, (uint8_t)evt.type);
|
||||
TEST_ASSERT_EQUAL_UINT32(ticket, evt.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(ticket, evt.ticket);
|
||||
}
|
||||
static void assertNoEvents(RadioScheduler &s) {
|
||||
somfy_tx_event_t evt;
|
||||
|
|
@ -61,7 +61,7 @@ static void test_tickets_are_distinct_and_set_in_the_job() {
|
|||
RadioScheduler s;
|
||||
somfy_tx_job_t job = makeJob(REMOTE_A);
|
||||
const uint32_t a = s.submit(job, false, 0, 0);
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.ticket);
|
||||
TEST_ASSERT_NOT_EQUAL(a, submit(s, REMOTE_A));
|
||||
}
|
||||
static void test_nothing_waiting_sleeps_until_woken() {
|
||||
|
|
@ -102,7 +102,7 @@ static void test_stop_goes_ahead_once_its_remote_is_on_air() {
|
|||
somfy_tx_job_t job;
|
||||
uint32_t waitMs;
|
||||
TEST_ASSERT_TRUE(s.next(0, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(up, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(up, job.ticket);
|
||||
// The remote's frame is already going out so the stop can't overtake it.
|
||||
const uint32_t stop = submit(s, REMOTE_A, 0, true);
|
||||
s.start(up, 0);
|
||||
|
|
@ -151,9 +151,9 @@ static void test_a_refused_job_has_no_ticket() {
|
|||
RadioScheduler s;
|
||||
for(uint8_t i = 0; i < TX_JOB_QUEUE_SIZE - TX_RESERVED_SLOTS; i++) submit(s, REMOTE_B);
|
||||
somfy_tx_job_t job = makeJob(REMOTE_A);
|
||||
job.seq = 99;
|
||||
job.ticket = 99;
|
||||
TEST_ASSERT_EQUAL_UINT32(0, s.submit(job, false, 0, 0));
|
||||
TEST_ASSERT_EQUAL_UINT32(0, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, job.ticket);
|
||||
}
|
||||
static void test_taking_a_job_frees_its_slot() {
|
||||
RadioScheduler s;
|
||||
|
|
@ -175,7 +175,7 @@ static void test_delayed_job_waits_until_due() {
|
|||
TEST_ASSERT_FALSE(s.next(1400, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(100, waitMs);
|
||||
TEST_ASSERT_TRUE(s.next(1500, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.ticket);
|
||||
}
|
||||
static void test_delayed_job_holds_up_the_jobs_behind_it() {
|
||||
RadioScheduler s;
|
||||
|
|
@ -208,7 +208,7 @@ static void test_delay_counts_from_the_job_ahead_going_off_air() {
|
|||
TEST_ASSERT_FALSE(s.next(350, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(100, waitMs);
|
||||
TEST_ASSERT_TRUE(s.next(450, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(setMy, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(setMy, job.ticket);
|
||||
}
|
||||
static void test_delay_ignores_a_job_that_ended_before_it_was_queued() {
|
||||
RadioScheduler s;
|
||||
|
|
@ -220,7 +220,7 @@ static void test_delay_ignores_a_job_that_ended_before_it_was_queued() {
|
|||
TEST_ASSERT_FALSE(s.next(100, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(200, waitMs);
|
||||
TEST_ASSERT_TRUE(s.next(300, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.ticket);
|
||||
}
|
||||
static void test_delay_after_a_job_ended_across_millis_wrap() {
|
||||
RadioScheduler s;
|
||||
|
|
@ -234,7 +234,7 @@ static void test_delay_after_a_job_ended_across_millis_wrap() {
|
|||
TEST_ASSERT_FALSE(s.next(0x100, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(0x80, waitMs);
|
||||
TEST_ASSERT_TRUE(s.next(0x180, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(setMy, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(setMy, job.ticket);
|
||||
}
|
||||
static void test_stop_waits_behind_its_remotes_delayed_job() {
|
||||
// The favorite's long press holds a rolling code, so the stop can't go first.
|
||||
|
|
@ -255,7 +255,7 @@ static void test_delay_across_millis_wrap() {
|
|||
TEST_ASSERT_FALSE(s.next(0x50, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(0xB0, waitMs);
|
||||
TEST_ASSERT_TRUE(s.next(0x100, job, waitMs));
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(a, job.ticket);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
|
@ -273,7 +273,7 @@ static void test_job_reports_started_then_finished() {
|
|||
somfy_tx_event_t evt;
|
||||
TEST_ASSERT_TRUE(s.popEvent(evt));
|
||||
TEST_ASSERT_EQUAL_UINT8((uint8_t)tx_event_t::started, (uint8_t)evt.type);
|
||||
TEST_ASSERT_EQUAL_UINT32(a, evt.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(a, evt.ticket);
|
||||
TEST_ASSERT_EQUAL_UINT32(20, evt.at);
|
||||
TEST_ASSERT_EQUAL_UINT32(REMOTE_A, evt.remoteAddress);
|
||||
TEST_ASSERT_EQUAL_UINT8((uint8_t)somfy_commands::Up, (uint8_t)evt.cmd);
|
||||
|
|
@ -340,18 +340,18 @@ static void test_every_job_gets_one_outcome_across_a_flush() {
|
|||
somfy_tx_job_t job;
|
||||
uint32_t waitMs;
|
||||
s.next(0, job, waitMs);
|
||||
s.start(job.seq, 0);
|
||||
s.start(job.ticket, 0);
|
||||
s.flush(0);
|
||||
// Jobs queued after the flush are unaffected by it.
|
||||
for(uint8_t i = 3; i < 6; i++) tickets[i] = submit(s, REMOTE_B + i);
|
||||
s.ended(job.seq, s.keepSending(job.seq), 0);
|
||||
s.ended(job.ticket, s.keepSending(job.ticket), 0);
|
||||
while(runNext(s)) {}
|
||||
uint8_t outcomes[6] = {};
|
||||
somfy_tx_event_t evt;
|
||||
while(s.popEvent(evt)) {
|
||||
if(evt.type == tx_event_t::started) continue;
|
||||
for(uint8_t i = 0; i < 6; i++)
|
||||
if(tickets[i] == evt.seq) outcomes[i]++;
|
||||
if(tickets[i] == evt.ticket) outcomes[i]++;
|
||||
}
|
||||
for(uint8_t i = 0; i < 6; i++) TEST_ASSERT_EQUAL_UINT8(1, outcomes[i]);
|
||||
}
|
||||
|
|
@ -399,7 +399,7 @@ static void test_flush_reports_every_drop_when_events_arent_collected() {
|
|||
while(s.popEvent(evt)) {
|
||||
if(evt.type == tx_event_t::started) continue;
|
||||
for(uint8_t i = 0; i < n; i++)
|
||||
if(tickets[i] == evt.seq) outcomes[i]++;
|
||||
if(tickets[i] == evt.ticket) outcomes[i]++;
|
||||
}
|
||||
for(uint8_t i = 0; i < n; i++) TEST_ASSERT_EQUAL_UINT8(1, outcomes[i]);
|
||||
}
|
||||
|
|
@ -444,13 +444,13 @@ static void test_resume_needs_every_reason_cleared() {
|
|||
static void test_repeater_frames_report_nothing() {
|
||||
RadioScheduler s;
|
||||
somfy_tx_job_t job = makeJob(REMOTE_A);
|
||||
job.raw = true;
|
||||
job.repeater = true;
|
||||
const uint32_t r = s.submit(job, false, 0, 0);
|
||||
TEST_ASSERT_NOT_EQUAL(0, r);
|
||||
TEST_ASSERT_EQUAL_UINT32(r, runNext(s));
|
||||
submit(s, REMOTE_B);
|
||||
job = makeJob(REMOTE_A);
|
||||
job.raw = true;
|
||||
job.repeater = true;
|
||||
s.submit(job, false, 0, 0);
|
||||
s.flush(0);
|
||||
somfy_tx_event_t evt;
|
||||
|
|
@ -463,7 +463,7 @@ static void test_repeater_frame_doesnt_hold_back_a_stop() {
|
|||
// order.
|
||||
RadioScheduler s;
|
||||
somfy_tx_job_t job = makeJob(REMOTE_A);
|
||||
job.raw = true;
|
||||
job.repeater = true;
|
||||
const uint32_t r = s.submit(job, false, 0, 0);
|
||||
const uint32_t stop = submit(s, REMOTE_A, 0, true);
|
||||
TEST_ASSERT_EQUAL_UINT32(stop, runNext(s));
|
||||
|
|
|
|||
|
|
@ -8,17 +8,17 @@ static const int8_t UP = -1;
|
|||
static const bool IDLE = false;
|
||||
static const bool MOVING = true;
|
||||
|
||||
static somfy_tx_event_t evt(tx_event_t type, uint32_t seq, uint32_t at = 0) {
|
||||
static somfy_tx_event_t evt(tx_event_t type, uint32_t ticket, uint32_t at = 0) {
|
||||
somfy_tx_event_t e;
|
||||
e.type = type;
|
||||
e.seq = seq;
|
||||
e.ticket = ticket;
|
||||
e.at = at;
|
||||
return e;
|
||||
}
|
||||
// A shade whose idle motor was set moving by radio job seq.
|
||||
static ShadeTxState heldBy(uint32_t seq) {
|
||||
// A shade whose idle motor was set moving by radio job ticket.
|
||||
static ShadeTxState heldBy(uint32_t ticket) {
|
||||
ShadeTxState tx;
|
||||
tx.hold.mark(seq, false, 0);
|
||||
tx.hold.mark(ticket, false, 0);
|
||||
return tx;
|
||||
}
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ static void test_favorite_started_waits_for_the_end() {
|
|||
tx.setMySent(9, 40.0f, 10.0f);
|
||||
ShadeTxActions act = tx.onEvent(evt(tx_event_t::started, 9), IDLE);
|
||||
TEST_ASSERT_FALSE(act.any());
|
||||
TEST_ASSERT_EQUAL_UINT32(9, tx.mySeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(9, tx.myTicket);
|
||||
}
|
||||
static void test_favorite_finished_is_committed() {
|
||||
ShadeTxState tx;
|
||||
|
|
@ -72,7 +72,7 @@ static void test_favorite_finished_is_committed() {
|
|||
ShadeTxActions act = tx.onEvent(evt(tx_event_t::finished, 9), IDLE);
|
||||
TEST_ASSERT_TRUE(act.commitMy);
|
||||
TEST_ASSERT_FALSE(act.restoreMy);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.mySeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.myTicket);
|
||||
}
|
||||
static void test_favorite_aborted_restores_the_previous_one() {
|
||||
// The motor only stores the favorite when it gets the whole long press.
|
||||
|
|
@ -84,7 +84,7 @@ static void test_favorite_aborted_restores_the_previous_one() {
|
|||
TEST_ASSERT_FALSE(act.commitMy);
|
||||
ASSERT_POS(40.0f, act.myOldPos);
|
||||
ASSERT_POS(10.0f, act.myOldTiltPos);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.mySeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.myTicket);
|
||||
}
|
||||
static void test_favorite_dropped_restores_the_previous_one() {
|
||||
ShadeTxState tx;
|
||||
|
|
@ -107,7 +107,7 @@ static void test_stop_dropped_runs_on_to_the_limit() {
|
|||
TEST_ASSERT_FALSE(act.limitTilt);
|
||||
// From when the motor should have stopped, not when the drop was reported.
|
||||
TEST_ASSERT_EQUAL_UINT32(5000, act.limitSince);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.stopSeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.stopTicket);
|
||||
}
|
||||
static void test_tilt_stop_dropped_runs_the_tilt_on() {
|
||||
ShadeTxState tx;
|
||||
|
|
@ -124,13 +124,13 @@ static void test_stop_dropped_after_moving_again_does_nothing() {
|
|||
tx.stopSent(12, 5000, DOWN, false);
|
||||
ShadeTxActions act = tx.onEvent(evt(tx_event_t::dropped, 12), MOVING);
|
||||
TEST_ASSERT_FALSE(act.any());
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.stopSeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.stopTicket);
|
||||
}
|
||||
static void test_stop_on_air_does_nothing() {
|
||||
ShadeTxState tx;
|
||||
tx.stopSent(12, 5000, DOWN, false);
|
||||
TEST_ASSERT_FALSE(tx.onEvent(evt(tx_event_t::started, 12), IDLE).any());
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.stopSeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.stopTicket);
|
||||
// Nothing is waiting on it any more.
|
||||
TEST_ASSERT_FALSE(tx.onEvent(evt(tx_event_t::dropped, 12), IDLE).any());
|
||||
}
|
||||
|
|
@ -153,7 +153,7 @@ static void test_one_event_for_the_held_job_and_the_favorite() {
|
|||
TEST_ASSERT_TRUE(act.cancelMovement);
|
||||
TEST_ASSERT_TRUE(act.restoreMy);
|
||||
TEST_ASSERT_FALSE(tx.hold.held());
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.mySeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, tx.myTicket);
|
||||
}
|
||||
static void test_seq_zero_is_ignored() {
|
||||
ShadeTxState tx;
|
||||
|
|
@ -168,9 +168,9 @@ static void test_other_jobs_are_ignored() {
|
|||
tx.stopSent(12, 5000, DOWN, false);
|
||||
TEST_ASSERT_FALSE(tx.onEvent(evt(tx_event_t::dropped, 8), IDLE).any());
|
||||
TEST_ASSERT_FALSE(tx.onEvent(evt(tx_event_t::finished, 13), IDLE).any());
|
||||
TEST_ASSERT_EQUAL_UINT32(7, tx.hold.seq);
|
||||
TEST_ASSERT_EQUAL_UINT32(9, tx.mySeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(12, tx.stopSeq);
|
||||
TEST_ASSERT_EQUAL_UINT32(7, tx.hold.ticket);
|
||||
TEST_ASSERT_EQUAL_UINT32(9, tx.myTicket);
|
||||
TEST_ASSERT_EQUAL_UINT32(12, tx.stopTicket);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue