esp-rs/esp-hal repo issues and pull requests
UART: The calling order of `with_tx()` and `with_rx()` builder functions might matter #2911 [JurajSadel] bug peripheral:uart status:needs-attention
let uart = Uart::new(peripherals.UART1, uart::Config::default()) .unwrap() .with_tx(tx) ...
Document that UART TX should be set up first #2914 [bugadani] skip-changelog
Resolves #2911 by changing the documentation. The issue is caused by the loopback setup in our tests. When you...
GPIO Pin Hold is not supported #2705 [bugadani] peripheral:gpio 1.0 non-breaking
Always type erase drivers #2572 [MabezDev] 1.0-blocker
For our drivers we have the option of opting into the new_typed method to create a driver without type erasure, i.e...
Missing `read_byte` that doesn't use `nb` #2729 [MabezDev] peripheral:uart 1.0-blocker
Remove peripheral instance types #2907 [bugadani] skip-changelog
Closes #2572 Skip-changelog applied because wifi/embassy previously spelled out AnyTimer.
Should split halves have individual constructors? #2727 [MabezDev] peripheral:uart 1.0 non-breaking
GPIO: Prefer compile-time checks over runtime checks where possible, prefer a fallible API over panics. #2710 [bugadani] peripheral:gpio 1.0-blocker
AnyPin operations panic when the underlying pin is incompatible. listen_with_options panics with some parameter combinations
GPIO: wakeup_enable: Return error instead of panic #2916 [bugadani]
Closes #2710 I guess
Test all feature sets #2901 [bugadani] skip-changelog
Previously, when a test has multiple //% FEATURES: lines, only one was used. This PR assigns a name to each of those...
Cache bus clock register and support clock source #2897 [bugadani]
Rough draft of my idea to resolve (eventually) #1666 and #1668 The main idea is to handle clock source and clock...
Remove more enum prefixes #2922 [bugadani]
GPIO unstable items #2693 [MabezDev] peripheral:gpio 1.0-blocker
We need to mark the following as unstable Unstable modules etm lp_io rtc_io interconnect based on #2492...
Mark Flex methods as unstable #2917 [bugadani] skip-changelog
Closes #2693
[RFC] A time/rate solution #2923 [MabezDev] RFC api 1.0-blocker
We currently use fugit, which has served us well, and works nicely overall. I do see a few issues with it...
Do not DerefMut into PAC register blocks #2918 [bugadani] skip-changelog
This PR is a part of #2661 although that issue needs more work. In the mean time, this PR removes the virtualness...
Add `AcknowledgeCheckFailedReason` #2862 [bjoernQ]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
We do not distinguish NACK sources (address/data) which embedded-hal supports. Adding this would change the Error type, most likely renaming the `AckCheckFailed` variant. #2814 [bugadani] peripheral:i2c 1.0-blocker
Fix naming violations for SPI `Address` and `Command` enums #2906 [jessebraham]
There are still a handful of enums which violate this rule, but they are not in drivers which are being stabilized,...
Restore explicit stdin inherit #2927 [bugadani] skip-changelog
Command::output opens a pipe for stdin, which macOS can't seem to handle and running examples fail.
GPIO: The author must to use `crate::any_peripheral` to define the "any" peripheral instance type. #2707 [bugadani] peripheral:gpio
Fix thread-mode executor on core1 not waking up #2924 [bugadani]
Found while testing #2701 - apparently this is an unrelated issue :) Bug was caused by...
support embassy-net with simplified lifetimes/generics #2385 [jsprog] status:blocked upstream
Motivations embassy-net simplified lifetimes/generics since be0d977 (Sep 16, 2024). Sooner or later, esp-hal need to...
I2C: If your driver provides a way to listen for interrupts, the interrupts should be listed in a `derive(EnumSetType)` enum as opposed to one function per interrupt flag. #2768 [bugadani] peripheral:i2c 1.0 non-breaking
It does not, but it should, so I'm marking this as an omission.
I2C: allow listening for interrupts #2600 [bugadani] peripheral:i2c 1.0-blocker
While we can bind an interrupt handler, we don't currently provide a way to actually listen for interrupts.
C-QUESTION-MARK: Examples use ?, not try!, not unwrap #2811 [bugadani] peripheral:uart 1.0 non-breaking
Stable driver: UART #2495 [MabezDev] peripheral:uart api 1.0-blocker
As part of #2491, which has more details on driver analysis. esp-hal API-GUIDELINE omissions #2632 #2633 #2634 ...
GPIO documentation issue: `C-QUESTION-MARK` #2714 [bugadani] documentation peripheral:gpio 1.0-blocker
UART driver does not support autobaud functionality #2641 [jessebraham] peripheral:uart 1.0 non-breaking
Legalize `C-QUESTION-MARK` violation #2929 [playfulFence] skip-changelog
as per #2811 (comment)
Mark unstable modules, make `macros` private #2900 [playfulFence] skip-changelog
Description closes #2499 potentially closes #2921 Marked the rest of unstable modules. Makes macros module private...
Mark unstable APIs #2499 [MabezDev] api beta-blocker
We need to mark APIs we're not stabilizing as such. These are all APIs except...
Mark procmacros as unstable #2921 [MabezDev] beta-blocker
See the discussion here #2900 (comment) The exception to this, will be the main macro, once added in #2920
Make `set_interrupt` panic free #2760 [bjoernQ] peripheral:interrupt
set_interrupt implementations can panic because Priority contains the None variant. IIRC we use it internally for...
Remove the single byte read/write inherent functions #2808 [bjoernQ] peripheral:spi 1.0-blocker
Stable driver: SPI master #2494 [MabezDev] peripheral:spi api 1.0-blocker
As part of #2491, which has more details on driver analysis. Note: we are not stabilizing DMA support right...
Remove the single byte read/write inherent functions #2915 [JurajSadel]
closes #2808 cc #2882
SergioGasquez: Thanks for working on this, left some nitpicks, some of them can be ignored, I guess
SergioGasquez: We should also remove the read_byte method from UartRx and write_byte from UartTx
bjoernQ: nitpick but buff is a bit uncommon - I'd prefer bufor buffer
SergioGasquez: I guess this should be resolved in #2882 which is a bit stalled due to this PR
bugadani: Please elaborate how it will be resolved, that PR still has a non-blocking pub fn...
bjoernQ: A little bit more documentation wouldn't hurt probably. "Read bytes from SPI" is very brief
JurajSadel: A little bit more documentation wouldn't hurt probably. "Read bytes from SPI" is very...
Expose SPI sio() setting #1826 [ElDonad] peripheral:spi 1.0 non-breaking
Hello, I was trying to setup three wires SPI for my application using an ESP32-S3, and it appears that the esp-hal...
GPIO: If a common Instance trait is used for multiple peripherals, those traits should not have any logic implemented in them. #2713 [bugadani] peripheral:gpio 1.0-blocker
This mostly covers the different Pin traits, I believe.
C-VALIDATE #2787 [bugadani] peripheral:i2c 1.0-blocker
write, read, write_read and transaction do not validate the address
I2C: Generally, follow common "good practices" and idiomatic Rust style #2770 [bugadani] peripheral:i2c 1.0 non-breaking
We have commented-out code, at least one FIXME and TODO in the codebase.
Expose all the CS signals (The SPI hardware can take multiple CS pins and turn them on/off for each transfer. Software CS shouldn't be the long term solution for shared buses) #2795 [bjoernQ] peripheral:spi 1.0 non-breaking
`AtCmdConfig` should be a part of `Config` #2732 [MabezDev] peripheral:uart 1.0 non-breaking
Using multiple GPIO interrupts is not supported yet (e.g. 4 on P4) #2650 [bjoernQ] peripheral:gpio
GPIO `C-HIDDEN` violations #2697 [MabezDev] peripheral:gpio 1.0-blocker
Things to make private or doc-hidden AlternateFunction Pin trait (anything but number,mask,degrade cannot be called...
Remove logic from InputPin and OutputPin #2926 [bugadani] skip-changelog
I'd say this closes #2713 Pin's number and degrade remain public. input_signals and output_signals remain "private"....
C-INTERMEDIATE #2784 [bugadani] peripheral:i2c 1.0-blocker
Should write, read, write_read return the number of transmitted/received bytes on error? Should transaction return...
i2s: fix pin offset for 8bit parallel on i2s1 #2886 [liebman]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Support 3-wire-SPI #2919 [bjoernQ]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
De-allocate memory used by timers on removal #2936 [bjoernQ]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Debug and re-enable I2S tests on ESP32 #2440 [bugadani] CI tests peripheral:i2s chip:esp32
Disabled in #2439 due to noise.
I2C: Prefer `cfg_if!` over multiple exclusive `#[cfg]` attributes. #2771 [bugadani] peripheral:i2c maintainability
We are good here, although multiple versions of the same function exist which violates this rule. The solution,...
Stable driver: GPIO #2492 [MabezDev] peripheral:gpio api 1.0-blocker
As part of #2491, which has more details on driver analysis. esp-hal API-GUIDELINE omissions Revisit: Private...
Prepare 1.0 road map dev portal blog post #2502 [MabezDev] documentation beta-blocker
This shouldn't really be tracked here under esp-hal, but for now it's the best place to ensure we don't forget about...
Possible interrupt footgun on multicore systems #1525 [MabezDev] beta-blocker
Now that the interrupt is handled internally by the peripheral driver, the interrupt is configured for the core the...
Should we get rid of nb::Result for inherent functions? #2807 [bjoernQ] peripheral:spi beta-blocker
Should be a general decision - not just for SPI. If we don't want that - what about embedded-hal-nb?
SPI: one of the half-duplex modes is not supported #2687 [bugadani] peripheral:spi beta-blocker
I can't actually tell whether the half-duplex mode we support is 3 or 4-wire single-bit. Our data modes are defined...
Evaluate the `Peripheral` and `Peripheral` ref module #2661 [MabezDev] api 1.0-blocker
For various issues, documentation and soundness issue, for example are we affected by embassy-rs/embassy#2919
RFC: Provide consistent APIs for configuring clock sources for peripheral drivers #1668 [jessebraham] RFC 1.0-blocker investigation
From this project's inception we've just been hard-coding the clock source for peripheral drivers (usually just...
GPIO: The driver's constructor should take the config struct by value, and it should return `Result<Self, ConfigError>` #2708 [bugadani] peripheral:gpio beta-blocker
In case the driver's configuration is infallible (all possible combinations of options are supported by the...
Updated PACs and made the Wi-Fi peripheral non virtual on the ESP32-S2. #2942 [Frostie314159]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Remove Pin trait impls from Flex #2938 [bugadani]
The sleep APIs are unstable and these traits are also marked as "unfortunate implementation details" (by me...) so I...
Make Uart::read_bytes blocking #2935 [bugadani]
Hopefully this is right, errors and expectations around them are tricky when one doesn't get enough sleep.
Update Xtensa Rust version #2940 [SergioGasquez] skip-changelog
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Remove internal_pull_in_sleep_mode #2937 [bugadani] skip-changelog
These functions are only available on the interconnect types, and even there they are hidden. We'll have to come...
Expose the KEEP_CS_ACTIVE option (This is important for chunked transfers in a single transaction) #2797 [bjoernQ] peripheral:spi 1.0 non-breaking
Main macro #2941 [bjoernQ] skip-changelog
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
macros: Add `#[main]` macro #2920 [MabezDev] beta-blocker
Description of work required is available here: #2900 (comment)
i2c_master: Add interrupt APIs #2944 [JurajSadel]
closes #2905 Adds i2c interrupts API, mark interrupt API as unstable in drivers we are stabilizing.
Add inherent `set_interrupt_handler` method to drivers #2905 [MabezDev] api 1.0 non-breaking
We currently only implement the trait, which isn't be stabilized. We have also discussed removing the trait as it's...
esp_wifi eventually uses up all available memory and stops working #2892 [Mossop] bug package:esp-wifi
Bug description I have a project I'm playing with on an ESP32C6 board to publish sensor readings to mqtt. I have...
ESP32-S3: Fix PSRAM start address calculation #2880 [bjoernQ] skip-changelog
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Avoid using nb::Result as a retrurn type #2882 [SergioGasquez]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Avoid public API changes due to config options. #2945 [playfulFence]
Pull Request Details 📖 Description closes #2509 This PR converts csi_enabled config option to esp-wifi crate...
Config options should not affect the public API #2509 [MabezDev] package:esp-config beta-blocker
Continuing the discussion from #2422 (comment) We need to answer this question and then write the appropriate...
AnyTouchPin, type erased GPIO pin that implements TouchPin #2948 [Bahex] peripheral:gpio peripheral:touch
Motivations Statically allocating space for multiple gpio pins is easy with AnyPin, but there is currently no...
Investigate C-INTERMEDIATE for all stabilized drivers #2820 [bugadani] 1.0-blocker investigation:done
cc #2784
Consider making the MSRV of each package consistent #2949 [jessebraham] CI
Currently each package has a unique MSRV, based purely on the requirements of the given package. This is usually...
MSRV policy going forward #2736 [MabezDev] 1.0-blocker
With #2615 we ourselves in a situation where we have to bump the MSRV even though we're not using any new compiler...
Bump MSRV of all packages to 1.84, add MSRV policy to each `README.md` #2951 [jessebraham]
Closes #2949 Closes #2736
Use `timer_queue` #2952 [bjoernQ] skip-changelog
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Minor pre-release cleanup #2950 [bugadani] skip-changelog
I propose enabling the stable feature by default while we're still not in beta. While it's easy to opt-in, I want to...
Explore how private dependencies with `links = ` affect esp-hal #2589 [MabezDev] RFC 1.0-blocker investigation
I'm slightly concerned that when we release 1.0 some of our deps may in inadvertently break esp-hal builds by...
Uart: mark AT related functionality as unstable #2930 [MabezDev] beta-blocker
Due to unresolved concerns in #2732
Unstabilize AtCmdConfig #2953 [bugadani] skip-changelog
Closes #2930
I2C: support 10-bit addressing #2507 [bugadani] peripheral:i2c api 1.0 non-breaking
As noted by #2493 (comment) We have a few options to support 10-bit addressing in inherent methods: Create separate...
Support switching SPI pins for difference devices with same SPI peripheral #2876 [ProfFan] status:blocked peripheral:spi
Motivations The ESP32 series has very limited number of SPI peripherals (only SPI2/3). It is possible to use CS pins...
I2c addr #2864 [bjoernQ]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
MabezDev: So with this way of doing things, when we add 10bit support, won't this break code like...
bugadani: If you convert the address first, we don't need the Copy bound.
MabezDev: Just the timeout enum rename, and this will be good to go!
C-CUSTOM-TYPE: these may be okay but we should be mindful of future changes (device-specific timeout options, 10-bit addresses) #2786 [bugadani] peripheral:i2c beta-blocker
timeout field in Config is an Option address parameter in write, read, write_read and transaction is a u8
I2C: more granular timeout configuration on later chips #2602 [bugadani] peripheral:i2c 1.0 non-breaking
cc #2493
CS timings #2796 [bjoernQ] peripheral:spi 1.0 non-breaking
I2C: Drivers must have a implementation resetting the peripheral to idle state. #2774 [bugadani] peripheral:i2c 1.0-blocker
Is it an exception? For now, I can't see any reason why not to do a Drop implementation for this. IDF also has some...
Stable driver: I2C master #2493 [MabezDev] peripheral:i2c api 1.0-blocker
As part of #2491, which has more details on driver analysis. esp-hal API-GUIDELINE omissions #2763 #2764 #2765 ...
Program reading PWM signals with GPIO interrupts weird behavior #2932 [tommasoclini] bug
Bug description This is the project. The goal is to read the TON of two (possibly more than two) PWM signals coming...
Reconnecting an output signal to a different pin does not clear previous connections #2928 [bugadani] bug peripheral:gpio 1.0-blocker
An example where this matters is SPI hardware chip select. Due to how the IO_MUX works, connecting a new output to...
Update our time driver for upcoming embassy changes #2701 [bugadani] skip-changelog
Update esp-hal-embassy for the new embassy-time-driver version. We now manage our own timer queues, which means...
C-GENERIC: `write`, `read`, `write_read` should accept `impl AsRef<[u8]>` and `AsMut` #2785 [bugadani] peripheral:i2c 1.0-blocker
ADC: Add async support for oneshot reads for esp32c3 and esp32c6 #2925 [davoclavo]
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Ensure the PAC crates and other private crates are never exposed publicly #2525 [MabezDev] api 1.0-blocker
The PACs will probably never be 1.0, therefore we need to keep it out of the public API in esp-hal. This is...
esp-wifi: Examples broken #2883 [bjoernQ] package:esp-wifi
On current main wifi_embassy_access_point: DHCP server is not working anymore Enterprise wifi connect seems to be...
`interconnect` is (probably) unsound and unclear #2954 [bugadani] bug peripheral:gpio status:needs-attention
Because InputConnection is Clone, Send and Sync, (and to a lesser extent, OutputConnection is a superset of...
Full-duplex mode of I2S is not working/implemented yet. #2939 [foldingbeauty] peripheral:i2s
Bug description I'm writing a driver for the SGTL5000 audio codec chip and during testing I found out I can't read...
Remove Deref from peripheral singletons #2956 [bugadani] skip-changelog
This PR removes the Deref implementation from peripheral singletons. Instead, a register_block(&self) and a regs()...
Create newtypes for all PAC peripherals, mark unstable peripheral singletons #2957 [bugadani] skip-changelog
Trying to break up #2956 into more manageable pieces :) This change wraps all PAC types we use as peripherals in a...
Define a stable set of SPI tests #2934 [bugadani] skip-changelog
Rmt: Improve codegen for enable_listen_interrupt #2960 [wisp3rwind] skip-changelog
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Peripherals that can be split, should have their config split accordingly #2931 [MabezDev] peripheral:uart beta-blocker
See #1668 (comment) for context. I think this only affects Uart, from the stabilized driver list. With this setup,...
New package releases #2959 [jessebraham] skip-changelog
docs: RMT_CHANNEL_RAM_SIZE counts pulse codes, not bytes #2955 [wisp3rwind] skip-changelog
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Remove extraneous keyword from `esp-alloc` Cargo manifest #2962 [jessebraham] skip-changelog
Can't publish this package otherwise.
GPIO filter is not supported yet #2647 [bjoernQ] peripheral:gpio 1.0-blocker investigation
Glitch filter is not supported yet #2648 [bjoernQ] peripheral:gpio 1.0-blocker investigation
Data registers should not be represented with `usize` #2963 [ROMemories] bug status:needs-attention
Bug description It seems that usize is currently used to represent registers (e.g., in TrapFrame) on some MCUs...
Expose Double Transfer Rate where supported #2803 [bjoernQ] peripheral:spi 1.0-blocker investigation
Add linker scripts (and any additional required code) to support `mcuboot` #2479 [jessebraham] linker scripts 1.0-blocker
Build environment for the bootloader can be found here: https://github.com/jessebraham/espressif-mcuboot-docker
Add separate config for `Rx` and `Tx` (UART) #2965 [playfulFence]
Description related to #2931 DRAFT: The work is not done here, I'll need to address #2931 (comment) but posting that...
Fix priority locks on RISC-V #2964 [bugadani]
Because we need to increment the level by one that we write into cpu_int_thresh, the value for Priority::max()...
Do not rerun HIL tests when a PR is marked ready #2958 [bugadani] skip-changelog
Currently, when a draft PR is updated, we run CI. Then, if that PR is marked ready for review, we run HIL tests...
Self-host documentation for all packages #2967 [jessebraham] documentation 1.0 non-breaking
Enable self-hosting of multiple versions of documentation for any given package #2968 [jessebraham] documentation 1.0 non-breaking
SPI: Expose timing delays #2801 [bjoernQ] peripheral:spi 1.0-blocker investigation
MISO dummy delay dummy delay These are derived from a number of input params, including the expected bus speed etc...
Fix warnings & clean up #2961 [bugadani] skip-changelog
Nightly CI has been yelling at us for some time now about these...
Allow splitting the SPI FiFo into two halves (All chips support doing this, and it allows for double buffering without DMA) #2798 [bjoernQ] peripheral:spi 1.0-blocker investigation
Prepare for esp-hal@0.23.1 #2966 [MabezDev] skip-changelog
Thank you for your contribution! We appreciate the time and effort you've put into this pull request. To help us...
Re-evaluate our current approach to CI #2969 [jessebraham] CI
There are presently a number of issues with our current CI pipeline(s), many of which resulted naturally as a result...
Confusion about usage of I2S as DAC DMA unit #1356 [Slamy] peripheral:dma peripheral:dac peripheral:i2s
Howdy! I would like to use the DAC of the ESP32 in DMA mode. The dac.rs itself only supports direct writing to it...
Need a mechanism to test different esp-config configurations #2971 [bugadani] CI status:needs-attention
esp-hal-embassy low_power_wait cannot be disabled #2970 [relufi] bug status:needs-attention
Bug description Failed to compile after low power wait = false To...
(Somewhat) clean up wifi timer queue #2943 [bugadani] skip-changelog
A bit heavy-handed maybe, but malloc tends to screw up alignment by the 4-byte offsetting it does, so I needed a...
implement EspWifiRngSource for mut refs #2972 [flippette]
EspWifiRngSource is essentially RngCore, and all RngCore methods only take a mutable reference, and there's already...
bjoernQ: Thanks - makes sense
JurajSadel: Thanks!