Releases: ethercrab-rs/ethercrab
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
expectedand
gotfields 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 terminologyMainDeviceandSubDevicefor master/slave
respectively.Type Old New enumSlaveStateSubDeviceStatefnClient::num_slaves()MainDevice::num_subdevices()fnDs402::slave()Ds402::subdevice()fnSlaveGroup::slave()SubDeviceGroup::subdevice()modethercrab::slave_groupethercrab::subdevice_groupstructClientMainDevicestructClientConfigMainDeviceConfigstructGroupSlaveIteratorGroupSubDeviceIteratorstructSlaveSubDevicestructSlaveGroupSubDeviceGroupstructSlaveGroupRefSubDeviceGroupRefstructSlaveIdentitySubDeviceIdentitystructSlavePdiSubDevicePdistructSlaveRefSubDeviceRefvariantAlStatusCode::SlaveNeedsColdStartAlStatusCode::SubDeviceNeedsColdStartvariantAlStatusCode::SlaveNeedsInitAlStatusCode::SubDeviceNeedsInitvariantAlStatusCode::SlaveNeedsPreopAlStatusCode::SubDeviceNeedsPreopvariantAlStatusCode::SlaveNeedsRestartedLocallyAlStatusCode::SubDeviceNeedsRestartedLocallyvariantAlStatusCode::SlaveNeedsSafeopAlStatusCode::SubDeviceNeedsSafeopvariantError::UnknownSlaveError::UnknownSubDevice
Added
- #162 Add support for FreeBSD and NetBSD
using BPF.
ethercrab-v0.4.2
Added
- #213 (@jbbjarnason) Add
alias_address
method toSlaveandSlaveRefto get a SubDevice's alias address.
ethercrab-v0.4.1
Fixed
- #208 Expose
DcSupportenum at the crate
root so it can be used by everyone.
ethercrab-wire-derive-v0.1.4
Fixed
- #207 Generate
EtherCrabWireSizedfor
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
PduReadand
PduDatatraits. These are replaced withEtherCrabWireReadandEtherCrabWireReadWritetraits
respectively, along withEtherCrabWireReadWritefor write-only items.Some pertinent trait bounds changes in the public API:
SlaveRef::sdo_readfromPduDatatoEtherCrabWireWriteSlaveRef::sdo_writefromPduDatatoEtherCrabWireReadSizedSlaveRef::register_readfromPduDatatoEtherCrabWireWriteSlaveRef::register_writefromPduDatatoEtherCrabWireReadWrite
-
(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-timefrom 0.2.0 to
0.3.0. -
#181
PduStoragenow 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_sizemethod to calculate element sizes based on a given maximum PDU payload
value.
Added
-
#141 Added the
ethercat-wireand
ethercat-wire-derivecrates.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-wirefor dealing with packing/unpacking data:EtherCrabWireReadEtherCrabWireReadSizedEtherCrabWireReadWriteEtherCrabWireSizedEtherCrabWireWrite
-
#151 Add
EepromError::ClearErrorsvariant. -
#152 Expose
error::CoeAbortCodefor
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::SubDeviceto get a
subdevice status code on failure. -
#180 Add
PreOpPdistate, 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
SlaveGroupmethods to
facilitate graceful shutdown:SlaveGroup<Op>::into_safe_opSlaveGroup<SafeOp>::into_pre_opSlaveGroup<PreOp>::into_init
The
ek1100example shows these methods in use. -
#195 Add
Register::DcCyclicUnitControl
(0x0980). -
#193 Add
SlaveGroup::<PreOp>::request_into_opto request all SubDevices in a group transition to OP, but
does not wait for them to transition. Also addSlaveGroup::<Op>::all_opto check if all
SubDevices in the group have reached OP state. -
#198 Add
Error::DistributedClock(_)and
DistributedClockErrorerror variant and type to communicate DC errors. -
#198 Add
SlaveGroup::tx_rx_sync_system_time,SlaveGroup::tx_rx_dc,SlaveRef::set_dc_syncand
SlaveGroup::configure_dc_syncto support EtherCAT Distributed Clocks.
Fixed
- (breaking) (technically) #143 Fix typo
in nameAlStatusCode::ApplicationControllerAvailableI->
AlStatusCode::ApplicationControllerAvailable - #152 CoE errors are not reported correctly
fromsdo_readandsdo_write. - #194
SlaveGroup<PreOp>::into_opnow
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_blockinginstead. - #197 Remove
SlaveGroupStatetrait. 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