mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
fix: let a priority stop overtake a delayed radio job
The radio task took a delayed job (the My after a shade reaches its target) off the queue and slept until it was due, so a stop queued at the front waited for the sleep plus the whole delayed job. Wait on a task notification instead and send front jobs while the delayed one is held. A held job still counts as queued for isQueued(), so a stop for the same remote goes behind it and the rolling codes stay in order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1cc55e07f0
commit
03eb3b3d99
2 changed files with 60 additions and 25 deletions
|
|
@ -494,6 +494,11 @@ class Transceiver {
|
|||
somfy_frame_t frame;
|
||||
void startTxTask();
|
||||
bool transmitJob(somfy_tx_job_t &job);
|
||||
// Sends a job taken off the queue and leaves a frame beat after it.
|
||||
void runJob(somfy_tx_job_t &job);
|
||||
// Holds a delayed job until it is due, sending stops queued at the front
|
||||
// in the meantime.
|
||||
void waitUntilDue(const somfy_tx_job_t &job);
|
||||
public:
|
||||
transceiver_config_t config;
|
||||
bool printBuffer = false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue