You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From #417 (#379). The node raises EMCYs only for 8210h/8230h/8240h/8250h (plus application EMCYs via SendEmcyAsync). It does not raise:
8130h — life-guard error or heartbeat error,
81xxh — CAN controller state (e.g. 8110h overrun, 8120h error passive, 8140h recovered from bus-off).
CiA 301 V4.2.0 Table 26 makes every emergency error code except 0000h and 1000h optional, so this is a feature, not a conformance defect. If added, they should follow the 1001h rule #417 introduced (bit 4/bit 0 while active, 0000h when the last cause ends).
8120h observed controller error passive: merged in feat(canopen): add opt-in controller passive EMCYs #487 (d80bf712), separate opt-in EmitControllerErrorEmcy, default false. It uses the existing actor-driven BusStateMonitor, fresh reset baselines and generation invalidation for queued jobs/retries, preserves reset/LSS completion on diagnostic errors, and cleans up monitoring on disposal/construction failure.
Both use the existing communication-error aggregate: 1001h bits 4/0 while active, application bits preserved, one report per error event and 0000h only when the last cause repairs. All issue/PR review findings were addressed in their original threads. Final #487 validation: 3104 local net10 tests, net48 compile, format, nine verified packages, 50 engineering tests and traceability; 14 actual source mutations runtime-red/restored. Both final CI-Cobertura copies cover every changed executable entry with no missing/partials. Main CI 40493261604 and CodeQL 40493261636 are fully successful at d80bf71 (18 documented retained CodeQL recommendations, no new alerts).
Leaving this issue open for the genuine remaining contracts:
8110h overrun: pinned CanKit 0.5.6 exposes RxOverflow/TxOverflow as error-frame events, without an unambiguous persistent repair signal. A normal controller level alone must not be guessed to repair an overrun. Recommendation: require a reliable adapter recovery signal or an explicitly defined application acknowledgement/clear contract before implementing its active lifetime.
8140h recovered from bus-off: relate it to actual recovery, not bus-off entry, and confirm the error-register/0000h sequence against the applicable CiA 301 Table 26/Figure 37 text. That normative sequencing has not been verified; no conformance claim or guessed implementation was added.
These remaining scope/norm decisions are collected with the other backlog prerequisites. No real NuGet publication was performed.
Activity
dborgards commentedon Oct 27, 2026
Completed independent feature parts:
72f83407), opt-inEmitGuardingErrorEmcy, default false.d80bf712), separate opt-inEmitControllerErrorEmcy, default false. It uses the existing actor-driven BusStateMonitor, fresh reset baselines and generation invalidation for queued jobs/retries, preserves reset/LSS completion on diagnostic errors, and cleans up monitoring on disposal/construction failure.Both use the existing communication-error aggregate: 1001h bits 4/0 while active, application bits preserved, one report per error event and 0000h only when the last cause repairs. All issue/PR review findings were addressed in their original threads. Final #487 validation: 3104 local net10 tests, net48 compile, format, nine verified packages, 50 engineering tests and traceability; 14 actual source mutations runtime-red/restored. Both final CI-Cobertura copies cover every changed executable entry with no missing/partials. Main CI 40493261604 and CodeQL 40493261636 are fully successful at d80bf71 (18 documented retained CodeQL recommendations, no new alerts).
Leaving this issue open for the genuine remaining contracts:
These remaining scope/norm decisions are collected with the other backlog prerequisites. No real NuGet publication was performed.