# 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.