* esp-radio: Rename Config to WifiApStaConfigi and WifiConfig to Config
* mg
* changelog
* build error
* remove WifiConfig entries from MG and changelog
* C2: Set actually configured defaults
* Allow configuring maximum number of connections
* Allow configuring QA test mode
* Allow configuring advertising filter cache size
* Small tweaks
* Complete ESP32 options
* Allow configuring antennas and tx power
* More S3/C3 opions
* Use constants for NPL version/magic
* More C2 config options
* Fixups
* Add max_connections to C3/S3 config
* Fix range of scan_duplicate_refresh_period
* Rename field
* Update docs, ranges, add missing H2 validation rules
* Apply suggestion from @bugadani
* Integrate embassy bits, delete eh-embassy
* I2C: Check for errors when everything is done
* Fix multicore examples
* Prevent deleting a task that is currently running on another cpu
* Save some memory on wait queues
* Remove the yield event concept
* Modify pins to let the example run on ESP32
* Clean up
* Make sure a task does not execute instructions after deleting itself
* fix: use version of bt-hci with command complete fix
* Use a version of bt-hci that properly parses command complete event.
* Remove workaround in esp-radio ble controller
* Update esp-radio/CHANGELOG.md
Co-authored-by: Dániel Buga <bugadani@gmail.com>
* fix: use trouble-host supporting newer bt-hci
---------
Co-authored-by: Dániel Buga <bugadani@gmail.com>
* OTA Fixes
- Support up to 16 OTA app partitions
- Fixed some bugs and shortcomings
- Added an OTA helper
* Changelog
* CHANGELOG.md
* Fix
* Constants
* Code comments
* Make code more readable
* Fix auto-complete's sins
* chore: update bt-hci version
* chore: use released version of trouble-host
* Make sure clippy fails, fix warning
---------
Co-authored-by: Dániel Buga <bugadani@gmail.com>
* Make a singleton form FlashStorage constructor, removed Default
* changelog
* Simplify, don't need the Singleton
* changelog
* reviews and build errors
* fix dead links
* fmt
* Use cargo-batch
* Run CI on mac runner
* Rely on MSRV and nightly jobs to lint
* Build docs separately
* Don't copy examples - fix builds on stable
* Run everything by default, set CI env var in ci command
* Run batched commands with RUSTC_BOOTSTRAP enabled
* Force cargo-batch to correctly ignore unstable option
* Test with nightly
* Use a persistent target folder, remove cache
* Don't delete the lp examples
* Restore target dir
* Build with stable again
* Fix rebase fail
* Remove handling tests
* Remove redundant code
* Restore repeated test run option
* Add simpler cargo check
* Introduce check-packages
* Remove stabilized -Zdoctest-xcompile
* Clean up commented code
* Remove more stuff
* Fix uart_uhci test
* No badger for us
* Turn country code and default power mode into runtime configs
* Move G_CONFIG setup to wifi::new
* Turn most configs into runtime options
* Set core ID to current one
* Mark most options unstable
* Add a CI workflow for checking links in .rs, .md, and .toml files accross esp-hal workspace
fix dead links
* exclude unpublished crate documentation's links
* Add .lycheeignore with excluded links
* play with patterns
* don't forget to remove
- Update example commands to use the new `--chip` argument format for `build examples` and `run example` subcommands.
- Improve clarity by showing explicit argument order and usage.
- Reflect recent changes in xtask interface for building and running examples.
Signed-off-by: Alexei Pastuchov <info@maximka.de>
* RMT: add HIL test that exercises all channels
to ensure that there are no issues with channel/register indexing; see
also the code comments.
no user-facing changes
* RMT: store ch_idx instead of channel number
`ConstChannelAccess` and `DynChannelAccess` used to store the channel number
and have a `Direction` generic parameter.
However, there are invalid combinations of `Direction` and the channel
number on some chips (e.g. on esp32c3, there is no channel with (Tx, 2),
because channel 2 and 3 only support Rx).
In constrast, the tuple `(Dir, ch_idx)` also uniquely identifies a
channel and its configuration, and any combination of it is valid as long as the
channel index is in bounds.
This makes it somewhat easier to work with; in particular, it will allow
removing bounds checks on ch_idx in a later commit by replacing
`ch_idx: u8` with an enum type.
This also refactors the `async_interrupt_handler` accordingly.
This is user-visible via the `ConstChannelAccess` type, however a later
commit in this PR will remove that entirely.
* RMT: elide bounds checks via ChannelIndex enum
If the channel index is not known at compile time in a given function,
the compiler will insert bounds checks on
- indexing the STATE global
- register access via the PAC
The compiler seems to be able to deduplicate them since low-level
functions are mostly inlined, but each function will retain at least one
bounds check.
This change helps the compiler to elide these checks by using a custom
type for channel indices that can only take values for which a channel
exists.
Specifically, this uses an enum to serve as a refinement of u8 to help
the compiler restrict value ranges. Due to inlining, this restricted
value range is propagated by the compiler until the potential bounds checks,
even if there's intermediate cast to u8,
cf. https://github.com/rust-lang/rust/issues/109958
There are no user-facing changes. (`ChannelIndex` is `pub` because it
appears in a `[doc(hidden)]` trait member.)
* RMT: always type-erase channels
- remove the `Raw` generic on `Channel`: This simplifies the types,
should have negligible performance impact (helped by elided bounds
checks via the recently introduced `ChannelIndex` enum), and greatly
reduce code size if several channels are used (by avoiding
monomorphization per channel)
- this also changed the arguments to configure_(tx,rx)_channel such that
they don't contain generics, again avoiding code bloat due to
monomorphization
This requires user code to change type annotations for channels and
transactions, and remove any manual type erasure (via `channel.degrade()`).
* RMT: impl blocking tx/rx methods directly on Channel
There's now only a single type that should implement these methods due
to erasing the channel index const generic, so the indirection via a
trait serves no purpose. Implementing methods directly on the channel
probably also helps to make the docs more discoverable.
This requires user code to remove the `TxChannel` and `RxChannel`
imports.
* RMT: impl async tx/rx methods directly on Channel
There's now only a single type that should implement these methods due
to erasing the channel index const generic, so the indirection via a
trait serves no purpose. Implementing methods directly on the channel
probably also helps to make the docs more discoverable.
This requires user code to remove the `TxChannelAsync` and `RxChannelAsync`
imports.
* RMT: impl *ChannelInternal traits only on DynChannelAccess
rather than as a blanket impl for RawChannelAccess, which includes
ConstChannelAccess: We don't intend to perform any accesses via
ConstChannelAccess anymore, so enforce that.
We could also get rid of the traits entirely and directly impl their
methods for DynChannelAccess, but it seems somewhat useful to keep them
around to guarantee that the interfaces in both chip_specific modules
are consistent.
There are no user-facing changes here.
* RMT: remove `pub` on various internal types
that used to be visible somewhere in the API's trait bounds, but are not
part of the API themselves
This is user-visible, but user code should not have used these types in
the first place.
* RMT: rm ConstChannelAccess, RawChannelAccess, private DynChannelAccess
now that Channel has no `Raw: RawChannelAccess` type parameter:
- we don't need low-level channel methods to be implemented for
ConstChannelAccess, since all accesses go through DynChannelAccess.
Thus, remove the *ChannelInternal traits and implement their methods directly
on DynChannelAccess
- none of these types need to be public (although one might consider
actually making them public with an unsafe constructor to provide an
unsafe low-level interface to the hardware)
This is user-visible (imports need to be removed; they're not used
anymore since the previous commit that always type-erased the `Raw`
parameter of `Channel`)
* RMT: changelog and migration guide for type-erased channels
* RMT: (review) remove stray comment
* RMT: (review) remove is_tx() from Direction trait
we can simply use the const item directly
* feat(example): Add SNTP example to show how to update Rtc
* Bump embassy-net to 0.7.0 for compatibility
* Revert back to task-arena to build on stable.
* Move `embassy_wifi_bench`, `wifi_bench`, and `wifi_csi` examples to `qa-test` package
* Remove blocking BLE example, replace Embassy example with trouble-based scanner
* Add BLE `bas_peripheral` example
* Split wifi feature into wifi-ap, wifi-sta and wifi-eap
* changelog
* Revert most of the changes, keep wifi and wifi-eap features only
* wifi-eap is unstable, include this feature into CI tests and documentation
* More consistent naming of interrupt-related functions
* MG entry
* changelog
* use correct package for MG
* fix hil
* other drivers
* address review comments