Skip to content

Releases: ethercrab-rs/ethercrab

ethercrab-v0.4.4

03 Oct 17:26
Compare
Choose a tag to compare

Added

  • #239 Add
    MailboxError::Emergency { error_code, error_register } variant to surface EMERGENCY responses
    from CoE transactions.

Changed

  • (breaking) #230 Increase MSRV from 1.77
    to 1.79.
  • #241 (@david-boles) During init, SMs and
    FMMUs are reset one-by-one instead of the entire block being written to.
  • #239 Mailbox emergency responses now return
    Error::Mailbox(MailboxError::Emergency) instead of being ignored.

ethercrab-wire-v0.2.0

28 Jul 09:54
Compare
Choose a tag to compare

Changed

  • (breaking) #218 Removed expected and
    got fields from WireError::{Read,Write}BufferTooShort.
  • (breaking) #218 Increase MSRV from 1.75
    to 1.77.

ethercrab-v0.5.0

28 Jul 09:53
Compare
Choose a tag to compare

Changed

  • #216 PDU retries now use the same PDU index
    instead of allocating a new frame for every resend.

  • #217 EEPROM strings must now be valid ASCII
    as per the EtherCAT specification. UTF-8 strings will return an error when read.

  • (breaking) #218 Removed expected and
    got fields from Error::Wire(WireError::{Read,Write}BufferTooShort).

  • (breaking) #218 Increase MSRV from 1.75
    to 1.77.

  • (breaking) #227 Renamed many public
    items to use the newer EtherCAT terminology MainDevice and SubDevice for master/slave
    respectively.

    Type Old New
    enum SlaveState SubDeviceState
    fn Client::num_slaves() MainDevice::num_subdevices()
    fn Ds402::slave() Ds402::subdevice()
    fn SlaveGroup::slave() SubDeviceGroup::subdevice()
    mod ethercrab::slave_group ethercrab::subdevice_group
    struct Client MainDevice
    struct ClientConfig MainDeviceConfig
    struct GroupSlaveIterator GroupSubDeviceIterator
    struct Slave SubDevice
    struct SlaveGroup SubDeviceGroup
    struct SlaveGroupRef SubDeviceGroupRef
    struct SlaveIdentity SubDeviceIdentity
    struct SlavePdi SubDevicePdi
    struct SlaveRef SubDeviceRef
    variant AlStatusCode::SlaveNeedsColdStart AlStatusCode::SubDeviceNeedsColdStart
    variant AlStatusCode::SlaveNeedsInit AlStatusCode::SubDeviceNeedsInit
    variant AlStatusCode::SlaveNeedsPreop AlStatusCode::SubDeviceNeedsPreop
    variant AlStatusCode::SlaveNeedsRestartedLocally AlStatusCode::SubDeviceNeedsRestartedLocally
    variant AlStatusCode::SlaveNeedsSafeop AlStatusCode::SubDeviceNeedsSafeop
    variant Error::UnknownSlave Error::UnknownSubDevice

Added

  • #162 Add support for FreeBSD and NetBSD
    using BPF.

ethercrab-v0.4.2

08 Jun 10:48
Compare
Choose a tag to compare

Added

  • #213 (@jbbjarnason) Add alias_address
    method to Slave and SlaveRef to get a SubDevice's alias address.

ethercrab-v0.4.1

19 Apr 09:26
Compare
Choose a tag to compare

Fixed

  • #208 Expose DcSupport enum at the crate
    root so it can be used by everyone.

ethercrab-wire-derive-v0.1.4

19 Apr 09:27
Compare
Choose a tag to compare

Fixed

  • #207 Generate EtherCrabWireSized for
    write-only enums.

ethercrab-v0.4.0

03 Apr 08:59
Compare
Choose a tag to compare

Changed

  • (breaking) #134 Bump MSRV to 1.75.0

  • #134 Refactor sub device EEPROM reader to be
    more efficient when skipping sections of the device EEPROM map.

  • (breaking) #142 Remove PduRead and
    PduData traits. These are replaced with EtherCrabWireRead and EtherCrabWireReadWrite traits
    respectively, along with EtherCrabWireReadWrite for write-only items.

    Some pertinent trait bounds changes in the public API:

    • SlaveRef::sdo_read from PduData to EtherCrabWireWrite
    • SlaveRef::sdo_write from PduData to EtherCrabWireReadSized
    • SlaveRef::register_read from PduData to EtherCrabWireWrite
    • SlaveRef::register_write from PduData to EtherCrabWireReadWrite
  • (breaking) #144
    PduError::InvalidIndex(usize) is now a PduError::InvalidIndex(u8) as the EtherCAT index field
    is itself onl a u8.

  • #151 Reduced overhead for EEPROM reads. Each
    chunk reader now only checks for and (attempt to) clear device errors once before reading a chunk
    of data, not for every chunk.

  • #156 Update embassy-time from 0.2.0 to
    0.3.0.

  • #181 PduStorage now stores complete
    Ethernet frames instead of building them on the fly. This adds a little more overhead to each
    slot, so the reserved data const parameter must be larger to compensate. Use the new
    PduStorage::element_size method to calculate element sizes based on a given maximum PDU payload
    value.

Added

  • #141 Added the ethercat-wire and
    ethercat-wire-derive crates.

    These crates are EXPERIMENTAL. They may be improved for public use in the future but are
    currently designed around EtherCrab's internal needs and may be rough and/or buggy. Use with
    caution, and expect breaking changes.

  • #141 Re-export the following traits from
    ethercrab-wire for dealing with packing/unpacking data:

    • EtherCrabWireRead
    • EtherCrabWireReadSized
    • EtherCrabWireReadWrite
    • EtherCrabWireSized
    • EtherCrabWireWrite
  • #151 Add EepromError::ClearErrors variant.

  • #152 Expose error::CoeAbortCode for
    matching on CoE transfer errors.

  • #169 Linux only: add io_uring-based
    blocking TX/RX loop for better performance.

  • #173 Add MUSL libc support.

  • #178 Add Error::SubDevice to get a
    subdevice status code on failure.

  • #180 Add PreOpPdi state, allowing access
    to a group's PDI whilst in PRE-OP.

  • #180 Add ethercrab::std::ethercat_now
    function to get the current time in nanoseconds from the EtherCAT epoch of 2000-01-01.

  • #194 Added SlaveGroup methods to
    facilitate graceful shutdown:

    • SlaveGroup<Op>::into_safe_op
    • SlaveGroup<SafeOp>::into_pre_op
    • SlaveGroup<PreOp>::into_init

    The ek1100 example shows these methods in use.

  • #195 Add Register::DcCyclicUnitControl
    (0x0980).

  • #193 Add
    SlaveGroup::<PreOp>::request_into_op to request all SubDevices in a group transition to OP, but
    does not wait for them to transition. Also add SlaveGroup::<Op>::all_op to check if all
    SubDevices in the group have reached OP state.

  • #198 Add Error::DistributedClock(_) and
    DistributedClockError error variant and type to communicate DC errors.

  • #198 Add
    SlaveGroup::tx_rx_sync_system_time, SlaveGroup::tx_rx_dc, SlaveRef::set_dc_sync and
    SlaveGroup::configure_dc_sync to support EtherCAT Distributed Clocks.

Fixed

  • (breaking) (technically) #143 Fix typo
    in name AlStatusCode::ApplicationControllerAvailableI ->
    AlStatusCode::ApplicationControllerAvailable
  • #152 CoE errors are not reported correctly
    from sdo_read and sdo_write.
  • #194 SlaveGroup<PreOp>::into_op now
    transitions through SAFE-OP instead of illegally transitioning straight into OP.

Removed

  • (breaking) #145 Remove the context
    field from Error::WorkingCounter. The output from EtherCrab's error logging should be used
    instead.
  • (breaking) #181 Remove async
    SendableFrame::send. Use SendableFrame::send_blocking instead.
  • #197 Remove SlaveGroupState trait. It is
    no longer required, but the same methods are available so migration should be as simple as just
    removing the import.

ethercrab-wire-v0.1.3

27 Mar 14:08
Compare
Choose a tag to compare

Added

  • #183 Add support for encoding/decoding tuples up to 16 items long.

ethercrab-wire-derive-v0.1.3

27 Mar 14:09
Compare
Choose a tag to compare

No user-facing changes, just some internal improvements.

ethercrab-v0.4.0-rc.2

27 Mar 14:14
Compare
Choose a tag to compare
ethercrab-v0.4.0-rc.2 Pre-release
Pre-release
Release ethercrab v0.4.0-rc.2