-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCHANGELOG
132 lines (108 loc) · 7.08 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Unreleased
- [major][change] Renamed `Bus` to `Client` to better show the difference between `Client` and `Device.
- [minor][add] Added a `Device` struct to implement the device side of the communication protocol.
- [major][add] Added `Transport` trait. Used to abstract the serial port.
- [major][add] Added `Serial2Port` struct, implementing the `Transport` trait for the `serial2` crate.
- [major][add] Added `std` and `serial2` as default features
- [major][add] Added `alloc` as a feature.
- [major][add] Added feature gates for `std`, `alloc` and `serial2`.
- [major][change] Changed `Bus` to be generic over `Transport`
- [major][change] Changed errors types to be generic over `Transport::Error`
- [major][change] Moved `crate::serial2` re-export to `crate::transport::serial2::serial2`.
- [minor][change] Changed `Bus::read_status_response_deadline()` to `Bus::read_status_response_timeout()`, which takes a `Duration` instead of an `Instant`.
- [major][add] Added `Packet` trait for shared functionality between `InstructionPacket` and `StatusPacket`.
- [major][add] Added `messaging::Messenger` struct to handle low level communication.
- [major][change] Changed `Bus` to use `Messenger` for low level communication.
- [major][add] Added `MockSerialPort` and integration tests between `Bus` and `Device`.
- [major][add] Added `Instruction` struct and `Instructions` enum for parsing received `InstructionPacket`s into.
- [major][add] Added `ExpectedCount::Min` to check for a minimum number of parameters in a packet.
# Version 0.9.1 - 2024-07-31
- [minor][add] Add missing `Error` impl for `InitializeError`.
# Version 0.9.0 - 2024-06-17
- [minor][add] Allow direct access to the underlying serial port.
- [minor][add] Allow changing the baud rate of the underlying serial port.
- [minor][add] Automatically calculate the correct read timeout for instructions.
- [minor][add] Add a `rs4xx` feature that enables the `rs4xx` support in the `serial2` crate.
- [minor][fix] Set the read timeout of the underlying serial port to avoid blocking longer than intended.
- [major][change] Change `bulk_write()` to take an iterator instead of a slice.
- [major][change] Change `sync_read()` to accept any buffer type that implements `AsRef<[u8]>`.
- [major][change] Remove the `read_timeout` parameter from `Bus` constructors.
- [major][change] `Bus::new()` and `Buf::with_buffers()` can now return a `InitializeError` if it fails to determine the baud rate of the serial port.
- [major][change] `Bus::read_status_response()` now takes the expected number of parameters to automatically calculate the read timeout.
- [major][change] Replace the `PingResponse` struct with `Response<Ping>`.
# Version 0.8.0 - 2024-04-15
- [major][change] Remove `ReadBuffer` and `WriteBuffer` generic arguments from `StatusPacket`.
- [major][add] Add `WriteError::BufferTooSmall` and `ReadError::BufferTooSmall` variants.
- [minor][change] Report too small buffers as `BufferTooSmall` instead of panicking.
- [minor][add] Allow using the broadcast ID with the `write()`, `write_u8()`, `write_u16` and `write_u32` functions.
- [minor][add] Allow using the broadcast ID with the `reg_write()`, `reg_write_u8()`, `reg_write_u16` and `reg_write_u32` functions.
- [minor][add] Allow using the broadcast ID with the `action()` function.
- [minor][add] Allow using the broadcast ID with the `clear_revolution_counter()` function.
- [minor][add] Allow using the broadcast ID with the `factory_reset()` function.
- [minor][add] Allow using the broadcast ID with the `reboot()` function.
# Version 0.7.2 - 2024-03-24
- [minor][add] Expose `ExpectedCount` publically.
- [minor][add] Implement `Debug` for `Bus`.
- [patch][doc] Add missing doc comments.
# Version 0.7.1 - 2024-03-24
- [minor][add] Re-export the `serial2` crate to allow easier serial port configuration.
- [minor][add] Derive `Debug`, `Clone`, `Eq` and `PartialEq` for many response types.
# Version 0.7.0 - 2023-12-17
- [major][change] Pass `Response<&[u8]>` to read callbacks instead of `Response<Vec<u8>>`.
# Version 0.6.1 - 2023-12-16
- [minor][add] Add `StatusPacket::error_number()`.
- [minor][add] Add `MotorError::error_number()`.
- [minor][add] Add `MotorError::alert()`.
- [patch][change] Fix documentation fo `StatusPacket::alert()`.
# Version 0.6.0 - 2023-12-16
- [major][change] Do not return `Err()` when the `alert` bit is set in a status packet from a motor.
- [major][change] Report the `alert` bit in the returned values from commands in a new `Response` struct.
- [major][change] Pass original `BulkReadData` command to user callback in `bulk_read_cb()`.
- [minor][fix] Fix amount of data read in `sync_read_u16` and `sync_read_u16_cb`.
# Version 0.5.1 - 2023-12-07
- [minor][fix] Parse all status messages when more than on has been read in a single `read()`.
# Version 0.5.0 - 2023-12-02
- [major][change] Update `serial2` to `v0.2`.
# Version 0.4.2 - 2023-12-02
- [minor][fix] Remove unused generic parameter from `sync_read_*` functions.
# Version 0.4.1 - 2022-12-12
- [minor][fix] Fix the instruction ID used by the bulk read/write commands.
# Version 0.4.0 - 2022-12-12
- [major][change] Use `Borrow` trait instead of `AsRef` in `Bus::bulk_write()`.
# Version 0.3.1 - 2021-11-14
- [patch][change] Update documentation.
# Version 0.3.0 - 2021-11-13
- [major][change] Switch to `serial2` for serial communication.
- [major][remove] Remove `Bus::with_buffer_sizes()` constructor.
- [minor][change] Discard input buffer right before writing instructions.
# Version 0.2.3 - 2021-06-30
- [minor][change] Clear the read buffer when sending an instruction.
- [minor][add] Add trace log for discarded partial messages after a timeout.
# Version 0.2.2 - 2021-06-30
- [minor][add] Add debug and trace logs for skipped noise bytes.
# Version 0.2.1 - 2021-05-08
- [minor][change] Change error type of sync write functions to reflect lack of read phase.
- [minor][add] Add support for the bulk read and write instructions.
# Version 0.2.0 - 2021-05-06
- [major][change] Rewrite API to a `Bus` struct with functions for the instructions.
- [minor][change] Ignore noise before message headers.
# Version 0.1.4 - 2021-04-22
- [minor][add] Fix visibility of `WriteData` struct for `SyncWrite` intstructions.
# Version 0.1.3 - 2020-10-16
- [minor][add] Add support for the `reg_write` and `action` instructions.
- [minor][add] Add support for the `factory_reset` instruction.
- [minor][add] Add support for the `clear` instruction.
- [minor][add] Add support for the `sync_read` and `sync_write` instructions.
- [minor][add] Add support for custom raw instructions.
- [patch][change] Include correct license file.
# Version 0.1.2 - 2020-06-18
- [minor][fix] Fix `write_u32_le()` to actually write in little endian.
# Version 0.1.1 - 2020-06-18
- [minor][fix] Fix encoding of `WriteU8` instruction parameters.
# Version 0.1.0 - 2020-06-18
- [minor][add] Initial release.
- [minor][add] Implemented instructions: `ping`, `read`, `write`, `reboot`.
- [minor][add] Add function to write a single instruction.
- [minor][add] Add function to read a single response.
- [minor][add] Add function to execute unicast intstructions.
- [minor][add] Add function to scan a bus for motors.