All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Upgraded to
rp2040-hal
version 0.10.
- Slot information is now parsed correctly.
- The
max_modules
field is now forced to the correct value1
for compact stations in all situations.
gsdtool
now uses slot information to preselect modules and filter the module list for each slot so only allowed modules can be selected. This should make it easier to generate correct configurations.gsdtool
now automatically selects the module for compact stations.
0.5.1 - 2025-01-17
SerialPortPhy
now automatically configures low-latency mode for USB-serial adapters on Linux. This is especially necessary for FTDI-based devices as those come with a high latency configured by default.
- Fixed a regression from
v0.5.0
whereno_std
builds of profirust were no longer possible. They would fail with errors like the following one:error[E0277]: the trait bound `ManagedSlice<'_, u8>: From<[_; 0]>` is not satisfied
0.5.0 - 2024-12-20
- Added a
SerialPortPhy
implementation (featurephy-serial
) which uses an arbitrary OS serial device. This is a portable PHY for using USB-RS485 converters on any platform. - Added a
debug-measure-roundtrip
feature to enable debug-logging for DP data-exchange communication roundtrip times. This is useful for finding out the communication delays in a hardware setup. - Added a
debug-measure-dp-cycle
feature to enable debug-logging of the DP cycle times. That is the time between each report ofcycle_completed
, so one data-exchange with each peripheral attached to this DP master.
- BREAKING Buffers in the
dp::Peripheral
are now stored inmanaged::ManagedSlice
containers. This allows using owned buffers on platforms with an allocator. You may need to explicitly cast buffers into slices now, to avoid a compiler error:dp::Peripheral::new( ENCODER_ADDRESS, options, - &mut buffer_inputs, - &mut buffer_outputs, + &mut buffer_inputs[..], + &mut buffer_outputs[..], ) -.with_diag_buffer(&mut buffer_diagnostics), +.with_diag_buffer(&mut buffer_diagnostics[..])
- BREAKING The
phy-linux
feature is no longer enabled by default. - Dropped unnecessary lifetime from the
LinuxRs485Phy
. - Changed all examples to use the new
SerialPortPhy
so they are now all platform-independent!
- Fixed a crash of the active station when receiving a token telegram with invalid addresses.
- Fixed not tracking partially-received telegrams correctly. This would show up as "# bytes in the receive buffer and we go into transmission?" warnings in some setups.
- Fixed profirust not immediately processing all received telegrams at once. This lead to very slow performance in some multi-master environments.
- Fixed consecutive newlines in some places tripping up the parser.
- Fixed gsdtool failing to generate an appropriate configuration for DP compact stations (compact stations are non-modular stations).
0.4.0 - 2024-11-15
- Reimplemented the FDL layer for correct multi-master operation.
- Added more checks to the Linux PHY implementation to catch serial devices that did not accept the required configuration.
- Added a "live-list" application (
fdl::live_list::LiveList
) which replaces the old built-in live-list. - Added a "DP scanner" application (
dp::scan::DpScanner
) which scans the bus for any DP peripherals. - Added support for running multiple applications ontop of a single FDL active station.
- BREAKING The FDL layer driver is now called
FdlActiveStation
instead ofFdlMaster
. - BREAKING In the DP diagnostics, the
master_address
is now of typeOption<Address>
. It isNone
when a peripheral is not yet tied to a specific master (previously, 255 was returned). - BREAKING The
fdl.poll()
no longer returns the application events. These are now accessed via a specific method on the application types, e.g.DpMaster::take_last_events()
. In code, this requires a change like this:- let events = fdl.poll(now, &mut phy, &mut dp_master); + fdl.poll(now, &mut phy, &mut dp_master); + let events = dp_master.take_last_events();
- BREAKING Removed the live-list that was built into the FDL layer driver.
0.3.0 - 2024-10-31
- Fixed compiler warnings due to superfluous
#[cfg]
gates.
- Fixed a lot of panics caused by invalid input. Instead, gsd-parser now propagates an error for the caller to handle.
0.2.1 - 2024-05-09
- Fixed
gsdtool
not using the correct dependency version ofgsd-parser
.
0.2.0 - 2024-05-09
- The live-list now correctly mirrors the state of all stations on the bus, not just the ones in our own GAP range.
- Improve robustness of the FDL layer against unexpected situations.
- Added support in
gsd-parser
for the olderUser_Prm_Data
/User_Prm_Data_Len
fields when noExt_User_Prm_*
data is present. gsd-parser
now supports theChangeable
andVisible
settings for ExtUserPrmData.gsdtool
also honors these settings now.- Added more prompting variants to
gsdtool
to prompt for even more possible settings.
- Made
gsd-parser
parse more GSD files correctly, ignoring a few more constructs that it currently does not care about. - Fixed
gsd-parser
not being case-insensitive for some keywords. - Fixed
gsd-parser
not parsing negative numbers correctly.
0.1.1 - 2023-12-28
- Fix some cargo metadata.
0.1.0 - 2023-12-28
Initial Release.