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 void | writeOutputs(ProcessImage & image, std::uint64_t cycle_count) override Write output PDO values for this cycle. |
| virtual void | setDigitalOutput(std::size_t channel, bool value) override Command a digital output channel; out-of-range is a no-op. |
| virtual void | setAnalogOutput(std::size_t channel, std::int32_t value) override Command an analog output channel (raw counts); out-of-range is a no-op. |
| virtual void | resolveTopology(const ProcessImage & image) override Resolve the static channel/PDO topology from the ENI-derived process image. |
| virtual void | readInputs(const ProcessImage & image, bool wkc_valid, bool operational) override Read input PDO values captured this cycle. |
| virtual std::size_t | digitalOutputCount() const override |
| virtual bool | digitalOutput(std::size_t ch) const override |
| virtual std::size_t | digitalInputCount() const override |
| virtual bool | digitalInput(std::size_t channel) const override Read a digital input/output channel; out-of-range returns false. |
| virtual std::string | configurePreOp(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_t | analogOutputCount() const override |
| virtual std::int32_t | analogOutput(std::size_t ch) const override |
| virtual std::size_t | analogInputCount() const override |
| virtual std::int32_t | analogInput(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_t | kMaxDigital |
| constexpr std::size_t | kMaxAnalog |
Public Functions inherited from ecdev::IDeviceProfile
| Name | |
|---|---|
| ~IDeviceProfile() override =default | |
| virtual void | writeOutputs(ProcessImage & image, std::uint64_t cycle_count) Write output PDO values for this cycle. |
| virtual void | resolveTopology(const ProcessImage & image) Resolve the static channel/PDO topology from the ENI-derived process image. |
| virtual void | readInputs(const ProcessImage & image, bool wkc_valid, bool operational) Read input PDO values captured this cycle. |
| virtual void | primeOutputs(ProcessImage & image) Prime output PDO bytes to safe values immediately before the bus enters SAFE_OP (outputs start being transmitted). |
| virtual std::string | prepareSafeOp(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::string | configurePreOp(ISlaveServices & svc, ProcessImage & image) Perform CoE / SDO configuration while the slave is in PRE_OP (bus not cycling). |
| virtual void | captureExitDiagnostics(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 void | setDigitalOutput(std::size_t channel, bool value) =0 Command a digital output channel; out-of-range is a no-op. |
| virtual void | setAnalogOutput(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_t | digitalOutputCount() const =0 |
| virtual bool | digitalOutput(std::size_t channel) const =0 |
| virtual std::size_t | digitalInputCount() const =0 |
| virtual bool | digitalInput(std::size_t channel) const =0 Read a digital input/output channel; out-of-range returns false. |
| virtual std::size_t | analogOutputCount() const =0 |
| virtual std::int32_t | analogOutput(std::size_t channel) const =0 |
| virtual std::size_t | analogInputCount() const =0 |
| virtual std::int32_t | analogInput(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