Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
415b15f
RMT: avoid dropping/recreating peripheral guards in into_async
wisp3rwind Oct 8, 2025
954b18f
RMT: CHANNEL_INDEX_COUNT -> ChannelIndex::MAX
wisp3rwind Oct 8, 2025
5c3491e
RMT: rename RmtTxFuture, RmtRxFuture -> TxFuture, RxFuture
wisp3rwind Oct 8, 2025
d3b3b06
RMT: rename SingleShotTxTransaction -> TxTransaction
wisp3rwind Oct 8, 2025
92210de
RMT: more consistent code formatting in low-level methods
wisp3rwind Sep 25, 2025
53848b5
RMT: merge two register modifications
wisp3rwind Oct 8, 2025
6dda6d8
RMT: consistently inline(always) low-level methods
wisp3rwind Oct 8, 2025
c9c0ec3
RMT: change method receivers for DynChannelAccess from &self to self
wisp3rwind Oct 10, 2025
a98c03e
RMT: Ensure that all pub types derive Debug
wisp3rwind Oct 8, 2025
9921317
RMT: rename set_generate_repeat_interrupt -> set_loopmode
wisp3rwind Oct 8, 2025
cfaa852
RMT: Channel configuration returns channel and pin on failure
wisp3rwind Oct 2, 2025
71a6de3
RMT: ensure that all rx/tx methods return the channel on error
wisp3rwind Oct 8, 2025
9612451
RMT: Update HIL tests to account for return type changes
wisp3rwind Oct 9, 2025
53de1f7
RMT: With place_rmt_driver_in_ram, also place the interrupt handler i…
wisp3rwind Oct 9, 2025
630a07a
RMT: Merge interrupt flag reset methods into clear_?x_interrupts
wisp3rwind Oct 9, 2025
a44daf7
RMT: also #[inline(always)] closures for PAC modify and write calls
wisp3rwind Oct 10, 2025
1d379a5
RMT: rewrite clear_*x_interrupt in obviously branch-free manner
wisp3rwind Oct 10, 2025
1cf131a
RMT: refactor channel configuration
wisp3rwind Oct 10, 2025
37b3410
RMT: changelog and migration guide
wisp3rwind Nov 7, 2025
14e0d6b
fixup! RMT: With place_rmt_driver_in_ram, also place the interrupt ha…
wisp3rwind Nov 7, 2025
d8ef031
RMT: also implement defmt::Format for Debug types
wisp3rwind Oct 28, 2025
bcc475c
Partially revert "RMT: also #[inline(always)] closures for PAC modify…
wisp3rwind Oct 28, 2025
00a02c7
Partially revert "RMT: consistently inline(always) low-level methods"
wisp3rwind Oct 28, 2025
d14bf6b
RMT: don't rely on inlining to eliminate dead code
wisp3rwind Oct 30, 2025
7ed0746
RMT: split pin assignment out of configure_*x methods
wisp3rwind Oct 28, 2025
b68e0e6
RMT: add PinGuard
wisp3rwind Oct 30, 2025
0cebd4b
RMT: be sure that there's no extraneous pulse when connecting a pin
wisp3rwind Oct 30, 2025
e637a0d
RMT: validate idle_threshold in RxChannelConfig setter
wisp3rwind Oct 21, 2025
38f3536
RMT: make zero loopcount test more reliable
wisp3rwind Nov 7, 2025
611f1ff
RMT: update changelog & migration guide
wisp3rwind Nov 9, 2025
66cf8de
RMT: Revert idle_threshold changes; add apply_config instead
wisp3rwind Nov 12, 2025
dca6adb
RMT: update changelog + migration guide
wisp3rwind Nov 12, 2025
3866758
doc + migration guide fixes
wisp3rwind Nov 13, 2025
bbda1c3
remove unnecessary trait bound
wisp3rwind Nov 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions esp-hal/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]

### Added
- RMT: All public types now derive `Debug` and `defmt::Format`. (#4302)
- RMT: `Channel::apply_config` has been added. (#4302)


### Changed
- RMT: `SingleShotTxTransaction` has been renamed to `TxTransaction`. (#4302)
- RMT: `ChannelCreator::configure_tx` and `ChannelCreator::configure_rx` now take the configuration by reference. (#4302)
- RMT: `ChannelCreator::configure_tx` and `ChannelCreator::configure_rx` don't take a pin anymore, instead `Channel::with_pin` has been added. (#4302)


### Fixed

- ESP32: ADC1 readings are no longer inverted (#4423)
- RMT: All blocking methods now return the channel on failure. (#4302)
- RMT: the `place_rmt_driver_in_ram` option now also places the async interrupt handler in RAM. (#4302)
- RMT: When dropping a Tx channel, the driver now disconnects the output pin from the peripheral. (#4302)

### Removed

Expand All @@ -31,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `work_queue` is no longer public (#4357)
- UART memory is now powered down when the driver is no longer in use. (#4354)


### Removed

- The `WatchdogConfig` enum and watchdog timer configuration from `esp_hal::init` (#4377)
Expand Down
62 changes: 62 additions & 0 deletions esp-hal/MIGRATING-1.0.0.md
Original file line number Diff line number Diff line change
@@ -1 +1,63 @@
# Migration Guide from 1.0.0 to {{currentVersion}}

## RMT Changes

`ChannelCreator::configure_tx` and `ChannelCreator::configure_rx` have changed in a few ways:
- both methods now take the configuration by reference,
- the pin argument has been removed in favor of `Channel::with_pin`, which is infallible and avoids consuming the pin on error.

```diff
let tx_config = TxChannelConfig::default();
let rx_config = RxChannelConfig::default();

let tx = rmt.channel0
- .configure_tx(tx_pin, tx_config)
- .unwrap();
+ .configure_tx(&tx_config)
+ .unwrap()
+ .with_pin(tx_pin);

let rx = rmt.channel2
- .configure_rx(rx_pin, rx_config)
- .unwrap();
+ .configure_rx(&rx_config)
+ .unwrap()
+ .with_pin(rx_pin);
```

`SingleShotTxTransaction` has been renamed to `TxTransaction`:

```diff
-let txn: SingleShotTxTransaction<'_, '_, PulseCode> = tx_channel.transmit(&data)?;
+let txn: TxTransaction<'_, '_, PulseCode> = tx_channel.transmit(&data)?;
```

Some blocking `Channel` methods that previously consumed the channel on error now return it in all cases:

```diff
let mut channel = todo!("set up tx channel");

channel = match tx_channel.transmit(&data) {
Ok(txn) => {
match txn.wait() {
Ok(c) => c,
Err((e, c)) => {
// TODO: Handle the error
c
}
}
}
- Err(e) => {
- // Channel cannot be re-used here (if it had the 'static lifetime)
- panic!();
+ Err((e, c)) => {
+ // TODO: Handle the error
+ c
}
}
```

This applies to
- `Channel<'_, Blocking, Tx>::transmit`,
- `Channel<'_, Blocking, Tx>::transmit_continuously`,
- `Channel<'_, Blocking, Rx>::receive`.
Loading
Loading