Flatten Uart module, remove unnecessary data, replace methods with apply_config (#2449)

* Flatten uart config

* Do not remember at_command config

* Don't save config values in memory

* Move config implementations to Info

* Changelog

* Remove unused methods

* apply_config, SetConfig

* Fix test

* simplify futures

* Update esp-hal/CHANGELOG.md

Co-authored-by: Sergio Gasquez Arcos <sergio.gasquez@gmail.com>

---------

Co-authored-by: Sergio Gasquez Arcos <sergio.gasquez@gmail.com>
This commit is contained in:
Dániel Buga 2024-11-05 10:56:14 +01:00 committed by GitHub
parent ed7960ce8b
commit 665fb0e278
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 647 additions and 589 deletions

View File

@ -29,6 +29,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `gpio::{GpioPin, AnyPin, Flex, Output, OutputOpenDrain}::split()` to obtain peripheral interconnect signals. (#2418)
- `gpio::Input::{split(), into_peripheral_output()}` when used with output pins. (#2418)
- `gpio::Output::peripheral_input()` (#2418)
- `{Uart, UartRx, UartTx}::apply_config()` (#2449)
- `{Uart, UartRx, UartTx}` now implement `embassy_embedded_hal::SetConfig` (#2449)
### Changed
@ -46,6 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Allow users to create DMA `Preparation`s (#2455)
- The `rmt::asynch::RxChannelAsync` and `rmt::asynch::TxChannelAsync` traits have been moved to `rmt` (#2430)
- Calling `AnyPin::output_signals` on an input-only pin (ESP32 GPIO 34-39) will now result in a panic. (#2418)
- UART configuration types have been moved to `esp_hal::uart` (#2449)
### Fixed
@ -74,6 +77,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Removed the pin type parameters from `lcd_cam::cam::{RxEightBits, RxSixteenBits}` (#2388)
- Most of the async-specific constructors (`new_async`, `new_async_no_transceiver`) have been removed. (#2430)
- The `configure_for_async` DMA functions have been removed (#2430)
- The `Uart::{change_baud, change_stop_bits}` functions have been removed (#2449)
## [0.21.1]

View File

@ -25,6 +25,7 @@ defmt = { version = "0.3.8", optional = true }
delegate = "0.12.0"
digest = { version = "0.10.7", default-features = false, optional = true }
document-features = "0.2.10"
embassy-embedded-hal = "0.2.0"
embassy-futures = "0.1.1"
embassy-sync = "0.6.0"
embassy-usb-driver = { version = "0.1.0", optional = true }

View File

@ -230,3 +230,17 @@ The previous signal function have been replaced by `split`. This change affects
`into_peripheral_output`, `split` (for output pins only) and `peripheral_input` have been added to
the GPIO drivers (`Input`, `Output`, `OutputOpenDrain` and `Flex`) instead.
## Changes to peripheral configuration
### The `uart::config` module has been removed
The module's contents have been moved into `uart`.
```diff
-use esp_hal::uart::config::Config;
+use esp_hal::uart::Config;
```
If you work with multiple configurable peripherals, you may want to import the `uart` module and
refer to the `Config` struct as `uart::Config`.

File diff suppressed because it is too large Load Diff

View File

@ -15,12 +15,7 @@ use esp_backtrace as _;
use esp_hal::{
gpio::Io,
timer::timg::TimerGroup,
uart::{
config::{AtCmdConfig, Config},
Uart,
UartRx,
UartTx,
},
uart::{AtCmdConfig, Config, Uart, UartRx, UartTx},
Async,
};
use static_cell::StaticCell;

View File

@ -22,7 +22,7 @@ use esp_hal::{
},
lp_core::{LpCore, LpCoreWakeupSource},
prelude::*,
uart::{config::Config, lp_uart::LpUart, Uart},
uart::{lp_uart::LpUart, Config, Uart},
};
use esp_println::println;

View File

@ -15,11 +15,7 @@ use esp_hal::{
delay::Delay,
gpio::Io,
prelude::*,
uart::{
config::{AtCmdConfig, Config},
Uart,
UartInterrupt,
},
uart::{AtCmdConfig, Config, Uart, UartInterrupt},
Blocking,
};

View File

@ -9,7 +9,7 @@ use embedded_hal_02::serial::{Read, Write};
use esp_hal::{
gpio::Io,
prelude::*,
uart::{ClockSource, Uart},
uart::{self, ClockSource, Uart},
Blocking,
};
use hil_test as _;
@ -91,8 +91,14 @@ mod tests {
];
let mut byte_to_write = 0xA5;
for (baud, clock_source) in &configs {
ctx.uart.change_baud(*baud, *clock_source);
for (baudrate, clock_source) in configs {
ctx.uart
.apply_config(&uart::Config {
baudrate,
clock_source,
..Default::default()
})
.unwrap();
ctx.uart.write(byte_to_write).ok();
let read = block!(ctx.uart.read());
assert_eq!(read, Ok(byte_to_write));