Releases: ethercrab-rs/ethercrab
ethercrab-v0.4.4
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
ethercrab-v0.5.0
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 fromError::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 terminologyMainDevice
andSubDevice
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
Added
- #213 (@jbbjarnason) Add
alias_address
method toSlave
andSlaveRef
to get a SubDevice's alias address.
ethercrab-v0.4.1
Fixed
- #208 Expose
DcSupport
enum at the crate
root so it can be used by everyone.
ethercrab-wire-derive-v0.1.4
Fixed
- #207 Generate
EtherCrabWireSized
for
write-only enums.
ethercrab-v0.4.0
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 withEtherCrabWireRead
andEtherCrabWireReadWrite
traits
respectively, along withEtherCrabWireReadWrite
for write-only items.Some pertinent trait bounds changes in the public API:
SlaveRef::sdo_read
fromPduData
toEtherCrabWireWrite
SlaveRef::sdo_write
fromPduData
toEtherCrabWireReadSized
SlaveRef::register_read
fromPduData
toEtherCrabWireWrite
SlaveRef::register_write
fromPduData
toEtherCrabWireReadWrite
-
(breaking) #144
PduError::InvalidIndex(usize)
is now aPduError::InvalidIndex(u8)
as the EtherCAT index field
is itself onl au8
. -
#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 inPRE-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 addSlaveGroup::<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 nameAlStatusCode::ApplicationControllerAvailableI
->
AlStatusCode::ApplicationControllerAvailable
- #152 CoE errors are not reported correctly
fromsdo_read
andsdo_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 fromError::WorkingCounter
. The output from EtherCrab's error logging should be used
instead. - (breaking) #181 Remove async
SendableFrame::send
. UseSendableFrame::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
Added
- #183 Add support for encoding/decoding tuples up to 16 items long.
ethercrab-wire-derive-v0.1.3
No user-facing changes, just some internal improvements.
ethercrab-v0.4.0-rc.2
Release ethercrab v0.4.0-rc.2