Skip to main content
Version: 1.1.1

ecdev::CiA401IoProfile

CiA 401 (CANopen generic I/O) profile. More...

#include <cia401_io_profile.hpp>

Inherits from ecdev::GenericIoProfile, ecdev::IDeviceProfile, ecdev::IIoProfile, IDeviceLifecycle

Public Functions

Name
virtual const char *profileName() const override
Stable identifier for diagnostics (e.g.

Additional inherited members

Public Functions inherited from ecdev::GenericIoProfile

Name
virtual voidwriteOutputs(ProcessImage & image, std::uint64_t cycle_count) override
Write output PDO values for this cycle.
virtual voidsetDigitalOutput(std::size_t channel, bool value) override
Command a digital output channel; out-of-range is a no-op.
virtual voidsetAnalogOutput(std::size_t channel, std::int32_t value) override
Command an analog output channel (raw counts); out-of-range is a no-op.
virtual voidresolveTopology(const ProcessImage & image) override
Resolve the static channel/PDO topology from the ENI-derived process image.
virtual voidreadInputs(const ProcessImage & image, bool wkc_valid, bool operational) override
Read input PDO values captured this cycle.
virtual std::size_tdigitalOutputCount() const override
virtual booldigitalOutput(std::size_t ch) const override
virtual std::size_tdigitalInputCount() const override
virtual booldigitalInput(std::size_t channel) const override
Read a digital input/output channel; out-of-range returns false.
virtual std::stringconfigurePreOp(ISlaveServices & svc, ProcessImage & image) override
Perform CoE / SDO configuration while the slave is in PRE_OP (bus not cycling).
virtual IIoProfile *asIo() override
Query whether this profile exposes digital/analog I/O channels.
virtual std::size_tanalogOutputCount() const override
virtual std::int32_tanalogOutput(std::size_t ch) const override
virtual std::size_tanalogInputCount() const override
virtual std::int32_tanalogInput(std::size_t channel) const override
Read an analog input/output channel (raw counts); out-of-range returns 0.

Public Attributes inherited from ecdev::GenericIoProfile

Name
constexpr std::size_tkMaxDigital
constexpr std::size_tkMaxAnalog

Public Functions inherited from ecdev::IDeviceProfile

Name
~IDeviceProfile() override =default
virtual voidwriteOutputs(ProcessImage & image, std::uint64_t cycle_count)
Write output PDO values for this cycle.
virtual voidresolveTopology(const ProcessImage & image)
Resolve the static channel/PDO topology from the ENI-derived process image.
virtual voidreadInputs(const ProcessImage & image, bool wkc_valid, bool operational)
Read input PDO values captured this cycle.
virtual voidprimeOutputs(ProcessImage & image)
Prime output PDO bytes to safe values immediately before the bus enters SAFE_OP (outputs start being transmitted).
virtual std::stringprepareSafeOp(ISlaveServices & svc, ProcessImage & image)
Final configuration step before OPERATIONAL: the slave is in SAFE_OP and the PDO IOmap is live but outputs are not yet driven.
virtual std::stringconfigurePreOp(ISlaveServices & svc, ProcessImage & image)
Perform CoE / SDO configuration while the slave is in PRE_OP (bus not cycling).
virtual voidcaptureExitDiagnostics(ISlaveServices & svc)
End-of-run hook called after the RT thread has joined; safe to perform SDO reads.
virtual IMotionProfile *asMotion()
Query whether this profile drives a motion (servo) axis.
virtual IIoProfile *asIo()
Query whether this profile exposes digital/analog I/O channels.
virtual IEncoderProfile *asEncoder()
Query whether this profile exposes position/velocity encoder readings.

Public Functions inherited from ecdev::IIoProfile

Name
virtual~IIoProfile() =default
virtual voidsetDigitalOutput(std::size_t channel, bool value) =0
Command a digital output channel; out-of-range is a no-op.
virtual voidsetAnalogOutput(std::size_t channel, std::int32_t value) =0
Command an analog output channel (raw counts); out-of-range is a no-op.
virtual std::size_tdigitalOutputCount() const =0
virtual booldigitalOutput(std::size_t channel) const =0
virtual std::size_tdigitalInputCount() const =0
virtual booldigitalInput(std::size_t channel) const =0
Read a digital input/output channel; out-of-range returns false.
virtual std::size_tanalogOutputCount() const =0
virtual std::int32_tanalogOutput(std::size_t channel) const =0
virtual std::size_tanalogInputCount() const =0
virtual std::int32_tanalogInput(std::size_t channel) const =0
Read an analog input/output channel (raw counts); out-of-range returns 0.

Detailed Description

class ecdev::CiA401IoProfile;

CiA 401 (CANopen generic I/O) profile.

A dedicated profile for genuine CoE CiA401 devices, selected ahead of [GenericIoProfile](/lxmaster/api/classes/GenericIoProfile) for slaves that expose the CiA401 standard object ranges over a CoE mailbox. The channel model is inherited from [GenericIoProfile](/lxmaster/api/classes/GenericIoProfile); this class is the seam where CiA401-specific setup (configuration objects, input filters, interrupt masks) would be added. Non-CoE / vendor I/O terminals fall through to [GenericIoProfile](/lxmaster/api/classes/GenericIoProfile) instead.

Public Functions Documentation

function profileName

inline virtual const char * profileName() const override

Stable identifier for diagnostics (e.g.

Return: A null-terminated string literal naming this profile class. Must be stable for the lifetime of the profile object (a string literal in practice).

Reimplements: ecdev::IDeviceProfile::profileName

"CiA402-drive").


Updated on 2026-07-13 at 20:44:41 +0000