Skip to content

CANopen EMCY: 1003h error history on raised EMCYs; SRDO/RPDO asymmetry with the EMCY switched off #434

Open

Description

@dborgards

Found in the review of #417 (pre-existing on main, not caused by it):

  1. 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.
  2. 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.

Related: #423 (optional 8130h/81xxh codes).


Generated by Claude Code

Activity

  1. dborgards commented on Oct 26, 2026

    @dborgards
    OwnerAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions