mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
fix: command op replies that said ok when nothing was done
From the review of #100: - setMyPosition on a moving shade replies busy ("The shade is moving"), and setPositions with only a tilt, for a shade without one, replies bad request ("The shade has no tilt"). Both said ok before. - PROTOCOL.md lists where the ops differ from the routes, and how sendRemoteCommand is answered. - The LoopQueue hold comment covers protocol 2 replies and an unpair held through a frequency scan. - One shadeRequestIsForGroup() for the group cases; ProtoOps shares one reader for "one or both" fields and one for ids, and the radio refused text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
598d708b12
commit
5737a58790
12 changed files with 103 additions and 49 deletions
|
|
@ -43,11 +43,14 @@ struct loop_item_t {
|
|||
inline bool loopItemUsesRadio(const loop_item_t &item) {
|
||||
return item.type == loop_item_type_t::shade_request && shadeRequestUsesRadio(item.request.type);
|
||||
}
|
||||
// Whether the item at the head of the queue waits for the radio. The client
|
||||
// was already told it was accepted so it stays queued until the radio has room
|
||||
// rather than have the radio drop it. While TX is suspended nothing gets
|
||||
// through anyway so nothing is held back then, except an unpair: the client was
|
||||
// told the shade is unpaired, so it waits until TX resumes.
|
||||
// Whether the item at the head of the queue waits for the radio. An HTTP or
|
||||
// MQTT client was already told it was accepted, so it stays queued until the
|
||||
// radio has room rather than have the radio drop it; a protocol 2 client gets
|
||||
// its reply once it has run. While TX is suspended nothing gets through
|
||||
// anyway so nothing is held back then, except an unpair: an HTTP client was
|
||||
// told the shade is unpaired, so it waits until TX resumes. Everything queued
|
||||
// behind it waits too, protocol 2 replies included, so a frequency scan
|
||||
// started after an unpair delays them until it ends.
|
||||
inline bool holdLoopItem(const loop_item_t &item, bool txSuspended, bool txHasRoom) {
|
||||
if(txSuspended) return item.type == loop_item_type_t::shade_request && item.request.type == shade_request_type_t::unpair;
|
||||
return loopItemUsesRadio(item) && !txHasRoom;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue