* Recover from I2C errors (the hard way)
* Adjust test to cover the problematic case
* Replace macro-usage
* CHANGELOG.md entry
* Appease Clippy
* TIL: `Result::inspect_err` exists
* Turn public `recover` into private `internal_recover`
* Allow accessing signal list via ErasedPin
* Replace AnyPin with more flexible signal config
* Update tests and examples
* Fix enable_from_gpio value
* Access signals from pin drivers
* DummyPin is not a pin
* Remove redundant public fns
* Various fixes, rename ErasedPin
* Changelog
* rustfmt
* Update i8080
* Typos and endless recursion
* Drop Pin suffix from traits
* Extract AF conversion
* Touch up changelog
* Clean up spi tests
* Refactor pull resistor handling
* Don't disable configured output functionality
* Clean up TODO
* Tweak docs
* Clean up examples
* Remove type erased gpio structs
* Implement Peripheral for ErasedPin
* Simpler type erasing, accept ErasedPin in pin drivers, remove type erased drivers
* Reformulate pin drivers using Flex
* Erase gpio types by default
* Accept any pin in AnyPin
* Add changelog and migration guide
* Fix tests and examples
* Undo rename of clone_unchecked
* i2c hil test
* pin
* fmt
* Test
* WIP (gpio test left)
* Finalize the CODE part (to be cleaned up)
fmt
* Smaller cleanup
* cleanup
* rebase
* fix
* getting last chips ready
* Addressing reviews
* Rework hal initialization
* Turn sw interrupt control into a virtual peripheral
* Return a tuple instead of a named struct
* Fix docs
* Remove SystemClockControl
* Move software interrupts under interrupt
* Re-document what's left in system
* Update time docs
* Update sw int docs
* Introduce Config
* Fix tests
* Remove redundant inits
* Doc
* Clean up examples&tests
* Update tests
* Add changelog entry
* Start migration guide
* Restore some convenience-imports
* Remove Config from prelude
* RSA cleanup & API consistency change, part 2
* RSA cleanup & API consistency change, part 3
* Add async tests
* Fix async for ESP32
* Merge impl blocks
* Backtrack on some mutability changes
* Use Acquire/Release ordering
* Fwd to write_multi_start instead of duplicating impl
* use `State` for both blocking and async operations, remove async version of SpiDmaBus in favour of being generic over the mode
* reuse wait_for_idle more
* changelog
* rename generic params for consistency
* Add duplex mode to SpiDmaBus
* implement HalfDuplexReadWrite for SpiDmaBus
* Docs on new async APIs
* Limit half duplex transfers to the capacity of the DmaBuf
* docs
* rebase tests
* address review comments
* remove duplex traits from spi
* fix tests
* spi docs rejig
* s/InUse/TemporarilyRemoved/g
Making these available straight from `gpio` aligns it with other Embassy
implementations (mainly nrf and stm32).
Signed-off-by: Priit Laes <plaes@plaes.org>
* feat(SHA): Refactor SHA to use trait. Implement Digest traits for SHA
* Fix CI. Fix wrong sha mode for esp32
* Save hash register for interleaving operation
An example (wip) `sha_fuzz.rs` was added to test different functionalities of the SHA driver and to ensure proper functionning under all cases.
* Use random data when testing SHA
* fix(SHA): Buffer words until a full block before writing to memory
This fixes interleaving operations by buffering words into the SHA context until a full block can be processed.
* Fix(SHA): Use correct length padding for SHA384 and SHA512.
- This fixes a long running issue with SHA384 and SHA512, where some digest of specific sizes wouldn't compute correctly, by changing the padding length of the size field.
* Re-export digest for convenience
* Remove completed TODO
* Remove SHA peripheral requirement.
- Document safety of the SHA driver.
---------
Co-authored-by: Scott Mabin <scott@mabez.dev>
* Add more SPI DMA HIL tests (blocking and async)
* move test repetitions into loops instead, add a description about why PCNT is used, import embedded_hal_async::spi
* clean up
* Fix typos
* Add a function to detect debugger connection
* Do not reset USB peripheral
* Changelog
* Fix different register names
* Reuse xtensa_lx::is_debugger_attached
* Further clean up embassy_timers_executors
* Do not delay for so long
* Print timer values on assert failure
* Clean up some more
* Retry test a few times to counteract probe-rs halting us
* Fix formatting
* Update probe-rs
* Differentiate jobs
* Explicitly print that probe-rs's execution failed
* Do not capture stdin/stderr
* Pre-build xtask binary
* Use current_directory
* Print more info when a file can't be read
* Do not erase flash after a failure
* get_time: fail faster
* Make xtask runnable
* Add failing test
Fix the name of the test fn
* Fix interrupt executor looping
* Fix formatting
* Fix changelog reference
* Move changelog to the right crate
* Remove dead code
* implement async for lcd_cam i8080
* lcd_cam: implement InterruptConfigurable for blocking and improve async
* lcd_cam: use new async interrupt semantics from #1835
* lcd_cam: move interrupt handler binding into `new_async()`
* lcd_cam: Instance::is_listening_lcd_done not used
* i8080: no need for seperate `new_async()`
* i8080: don't use DmaTxFuture, just test for dma error after complete
* add HIL tests for LCD_CAM i8080 in blocking and async.
* lcd_cam_i8080: test channels configured for async as well since teh compiler can't prevent it for now
* fmt :-/
* lcd_cam fix comment
* changelog
* lcd_cam async: no need to enable interrupts until polled
* lcd_cam: i8080 update for ReadBuffer changes
* Use the peripheral ref pattern for `OneShotTimer` and `PeriodicTimer`
* Update tests and examples to reflect changes in timer API
* Update `CHANGELOG.md`
* support dma chunk sizes other than 4092
* fmt
* update CHANGELOG
* fix 0 size static assert
* review changes:
- `.div_ceil()`
- return errors for bad chunk size and buffer sizes in Mem2Mem constructors
- correct 0 chunk size check in descripter macros
* dma: clear the mem2mem bit when channel is configured instead of in Drop
* Build HIL tests for ESP32 in CI, fix resulting build errors
* Fix some warnings in the `hil-test` package
* Fix warnings in examples
* Remove "esp_" prefix from Wi-Fi example file names
* Resolve the last of the known warnings
* dma: add Mem2Mem to support memory to memory transfer
* fmt
* update CHANGELOG
* removed some debugging
* use "gdma" as the selector for support
* fix empty else
* clippy
* Mem2Mem::new now accepts the peripheral to use
* mark Mem2Mem::new() unsafe
* fmt :-/
* add Mem2MemN values for gdma on non-esp32s3
tested on esp32c3,esp32c6 (will have an esp32h2 in a few days)
* support the esp32c2 (esp8684)
* DmaEligible trait providing dma peripheral value & safe constructor for Mem2Mem dma.
* added hil-test for Mem2Mem
* fmt dma_mem2mem test
* remove `debug!()`
* reset the mem2mem bit (mem_trans_en) in in_conf0 on drop
* Improve DMA `pop` implementation
* CHANGELOG.md
* Minor Fixes
* Cover more edge-cases in DMA pop, make sure the test is testing these
* Fixes
* Working available/pop
* Remove misleading `last_in_dscr_address`
* Remove unnecessary check from `available`
* Remove now-unused function
* Remove duplicate change-log entry
* Extract embassy support into `esp-hal-embassy` package
* Update relevant packages/examples/tests to get CI green again
* Add back `defmt` support
* Re-export `Executor` and `InterruptExecutor` rather than making `executor` module public
* Document the `esp-hal-embassy` package
* Update `CHANGELOG.md`
* Hack together a "fix" for the `SYSTIMER` time driver
* Make `clippy` shut up
* Remove interrupt and thread executor embassy features
* Reserve sw interrupt 3 (4) instead of 0 for multicore systems with the embassy feature enabled
* Remove uneeded #[feature()] from examples
* Fix HIL tests
* Add thread mode context id and fix up examples
* improve embassy module docs
* changelog
* fixup hil tests
* Fixup usb examples
* Convert `SoftwareInterrupt` to a unit struct
* Remove the `SystemExt` trait and rename `SystemParts` to `SystemControl`
* Update all examples an HIL tests to reflect previous API changes
* Clean up imports in `hil-test` package, address `clippy` lint warnings
* Update `CHANGELOG.md`
* Support 192 and 256-bit keys for AES
* quick fix
* Not `panic`ing on wrong key length
* fmt + hil
Update comment
* Add more doc comments
* Use `Key` enum for DMA mode
fix
* API fix: make some critical functions private
* Use `Into<Key>` instead of forcing users to call funcs with `key.into()`
* tests: Add clock_monitor HIL test
* feat: Adjust accepted freq ranges
* fix: Get the estimate a second time if its very off
* test: Update ranges and check
* test: Initial AES DMA HIL tests
* test: Cover all the AES modes
* feat: Reset aes at the end of the tests to avoid errors in `aes` test
* feat: Reset the interrupt state when finishing the transform
* docs: Document new xtask features
* style: format deps
* feat: enable all the aliases
* feat: Update embedded-tests executors
* feat: Enable running only one test
* feat: Exit if a test fails
* docs: Fix typo in command
* build: Enable xtensa-semihosting in xtensa targets
* feat: Handle probe-rs esp32 chip name
* style: Clippy lints
* revert: Exit if a test fails
* chore: Remove aliases
* feat: Remove unnecesary toogle
* feat: Error if a test fails and print failed tests
* Provide native APIs for SPI functionality currently handled by `embedded-hal` traits
* Provide APIs for I2C functionality currently handled by `embedded-hal` traits
* Rebase and update HIL test for SPI to get it building again
* Refactor testing, add defmt, add async gpio test
* Add test to ensure the some edge case pins can be used in async mode
* Add test for pin0
* clippy
* update test to use constants extracted from esp-idf's soc module
* address review comments
* simplify test to just initialize one pin as async
* changelog
* uart: allow driver to init as blocking or async
* adds a mode type param to Uart types
* remove #[interrupt] usage
* add constructor for blocking and async modes
* blocking constructor takes optional interrupt
* async chooses the correct handler to bind at runtime
* moves interrupt enable for uart into the driver
* changelog