-
Notifications
You must be signed in to change notification settings - Fork 3
Implement application-level command response timeouts #166
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Per spec (§8.2.5), during interviews and runtime communication, the controller MUST timeout waiting for Report responses using a ReportTime timer (CommandTime + 1s for interviews, CommandTime + 10s for polling). Currently only serial-level ACK timeouts exist (1600ms in ZWaveSerialPortCoordinator).
Scope:
- Add a configurable
ReportTimetimeout toCommandClass.AwaitNextReportAsync()(currently waits indefinitely viaTaskCompletionSource) - Default timeout: CommandTime + 1s for interviews, CommandTime + 10s for polling scenarios
- When timeout expires: cancel the awaiting TCS, log the timeout, allow the interview to continue with next CC
- Update the interview flow in
Node.InterviewCommandClassesAsync()to handle timeout exceptions gracefully - mark the CC as partially interviewed rather than failing the entire interview - Extend Missing Error/Timeout Handling for Callbacks #121's callback timeout handling to also cover these application-level timeouts
Design notes: This is distinct from serial-level timeouts (which handle frame delivery) and callback timeouts (#121, which handle REQ→callback flow). This is about the application-level wait for a CC Report in response to a CC Get. The timeout should be measured from successful transmission (ACK received) to Report received.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request