Commit 6f279f3
Report release multistate value directly before not_pressed overwrite
On end-of-hold the switch cluster writes the *_release presentValue
(6=single_release, 9=double_release, ...) and immediately overwrites it
with not_pressed (0) in the same call, with no event-loop yield in
between. The SDK's deferred reporting machinery reads the live attribute
when it next runs, so it only ever sees the final 0: the release value
never reaches the network, and coordinators never observe
single_release/double_release actions.
Send the report directly via hal_zigbee_send_report_attr while the
attribute still holds the release value. The existing
notify_attribute_changed call is kept so the SDK reporting bookkeeping
is unchanged; the added direct send bypasses the deferred path entirely,
so the fix holds regardless of SDK reporting internals on both the
telink and silabs ports.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent ebbcaf3 commit 6f279f3
1 file changed
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
495 | 495 | | |
496 | 496 | | |
497 | 497 | | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
498 | 509 | | |
499 | 510 | | |
500 | 511 | | |
| |||
0 commit comments