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
{{ message }}
Repository navigation
CANopen EMCY: 1003h error history on raised EMCYs; SRDO/RPDO asymmetry with the EMCY switched off #434
Found in the review of #417 (pre-existing on main, not caused by it):
1003h pre-defined error field. CiA 301 V4.2.0 Figure 37, transitions 1 and 3: the error code is to be entered in 1003h when an error occurs. Check whether the node does this for the EMCYs it raises itself (8210h/8230h/8240h/8250h) and for SendEmcyAsync; cite the clause, test, mutation.
SRDO vs RPDO with the EMCY switched off. With the EMCY disabled, the SRDO engine still consumes its run of short pairs, an RPDO does not. If the EMCY is enabled mid-run, the RPDO reports on its next short frame, the SRDO does not. Decide which is intended and align both.
PR #461 addresses item 2 using the already documented RPDO rule in CanOpenNode.ErrorRegister.cs: an error run is not consumed while 1014h disables the EMCY producer. The SRDO engine now checks that same host state before latching its once-per-run report. This preserves the existing RPDO contract rather than changing RPDO behaviour.
Controlled-clock unit and wire-level RPDO/SRDO tests cover enabling during an unreported short run, no duplicate after toggling an already reported run, and normal-pair recovery. Removing the engine gate or forcing the host enabled each produces a failing assertion. The full local suite, net48 compile, format and fresh package checks passed before the PR; CI/reviews and coverage are being checked there.
Item 1 remains open. On main d74230b9, the package README explicitly documents 1003h as unsupported: the node neither maintains nor reads it, and a description that declares it is loaded as data with a NotImplemented diagnostic. No error-history implementation exists to repair in this PR. Adding managed 1003h support requires defining its optional OD exposure/capacity and reset/write semantics and checking the cited normative text; no conformance claim or guessed implementation has been added here.
Activity
dborgards commentedon Oct 26, 2026
PR #461 addresses item 2 using the already documented RPDO rule in
CanOpenNode.ErrorRegister.cs: an error run is not consumed while 1014h disables the EMCY producer. The SRDO engine now checks that same host state before latching its once-per-run report. This preserves the existing RPDO contract rather than changing RPDO behaviour.Controlled-clock unit and wire-level RPDO/SRDO tests cover enabling during an unreported short run, no duplicate after toggling an already reported run, and normal-pair recovery. Removing the engine gate or forcing the host enabled each produces a failing assertion. The full local suite, net48 compile, format and fresh package checks passed before the PR; CI/reviews and coverage are being checked there.
Item 1 remains open. On main
d74230b9, the package README explicitly documents 1003h as unsupported: the node neither maintains nor reads it, and a description that declares it is loaded as data with a NotImplemented diagnostic. No error-history implementation exists to repair in this PR. Adding managed 1003h support requires defining its optional OD exposure/capacity and reset/write semantics and checking the cited normative text; no conformance claim or guessed implementation has been added here.