Replace the radio module with peripheral singleton structs (#852)

* Replace the `radio` module with peripheral singleton structs

* Update `CHANGELOG.md`
This commit is contained in:
Jesse Braham 2023-10-20 03:11:32 -07:00 committed by GitHub
parent d41e306504
commit 62a174fd06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 35 additions and 151 deletions

View File

@ -66,6 +66,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- The `spi` and `spi_slave` modules have been refactored into the `spi`, `spi::master`, and `spi::slave` modules (#843)
- The `WithDmaSpi2`/`WithDmaSpi3` structs are no longer generic around the inner peripheral type (#853)
- The `SarAdcExt`/`SensExt` traits are now collectively named `AnalogExt` instead (#857)
- Replace the `radio` module with peripheral singleton structs (#852)
## [0.12.0]

View File

@ -54,7 +54,6 @@ symbols = [
"adc",
"dac",
"pdma",
"radio",
"phy",
"bt",
"wifi",

View File

@ -36,7 +36,6 @@ symbols = [
"adc",
"assist_debug_sp_monitor",
"gdma",
"radio",
"phy",
"bt",
"wifi",

View File

@ -48,7 +48,6 @@ symbols = [
"assist_debug_sp_monitor",
"assist_debug_region_monitor",
"gdma",
"radio",
"phy",
"bt",
"wifi",

View File

@ -76,7 +76,6 @@ symbols = [
"gdma",
"large_intr_status",
"plic",
"radio",
"phy",
"bt",
"wifi",

View File

@ -67,7 +67,6 @@ symbols = [
"assist_debug_region_monitor",
"gdma",
"plic",
"radio",
"phy",
"bt",
"ieee802154",

View File

@ -52,7 +52,6 @@ symbols = [
"adc",
"dac",
"pdma",
"radio",
"phy",
"wifi",
"psram",

View File

@ -63,7 +63,6 @@ symbols = [
"adc",
"assist_debug_region_monitor",
"gdma",
"radio",
"phy",
"bt",
"wifi",

View File

@ -118,8 +118,6 @@ pub mod parl_io;
pub mod pcnt;
pub mod peripheral;
pub mod prelude;
#[cfg(radio)]
pub mod radio;
#[cfg(any(hmac, sha))]
mod reg_access;
pub mod reset;

View File

@ -58,8 +58,6 @@ pub use crate::ledc::{
},
timer::{TimerHW as _esp_hal_ledc_timer_TimerHW, TimerIFace as _esp_hal_ledc_timer_TimerIFace},
};
#[cfg(radio)]
pub use crate::radio::RadioExt as _esp_hal_RadioExt;
#[cfg(spi3)]
pub use crate::spi::master::dma::WithDmaSpi3 as _esp_hal_spi_dma_WithDmaSpi3;
#[cfg(any(spi0, spi1, spi2, spi3))]

View File

@ -1,127 +0,0 @@
//! # Wireless communication peripheral implementations
//!
//! ## Overview
//! The radio module provides implementations for different wireless
//! communication peripherals, including WiFi, Bluetooth and
//! IEEE 802.15.4 Low Rate wireless personal area radio.
//!
//! In addition to the structures defined in this module, the module also
//! defines the `RadioExt` trait, which provides a `split` method. This method
//! allows splitting the general `Radio` peripheral into its individual
//! components.
//!
//! Additionally, the module includes implementation blocks for each wireless
//! communication peripheral, providing necessary functions and traits for each
//! peripheral.
pub trait RadioExt {
type Components;
fn split(self) -> Self::Components;
}
/// WiFi radio
pub struct Wifi {
_private: (),
}
/// Bluetooth radio
pub struct Bluetooth {
_private: (),
}
/// IEEE 802.15.4 Low rate wireless personal area radio
pub struct LowRate {
_private: (),
}
impl Wifi {
pub const unsafe fn steal() -> Self {
Self { _private: () }
}
}
impl crate::peripheral::Peripheral for Wifi {
type P = Self;
unsafe fn clone_unchecked(&mut self) -> Self::P {
Self::steal()
}
}
impl crate::peripheral::sealed::Sealed for Wifi {}
impl Bluetooth {
pub const unsafe fn steal() -> Self {
Self { _private: () }
}
}
impl crate::peripheral::Peripheral for Bluetooth {
type P = Self;
unsafe fn clone_unchecked(&mut self) -> Self::P {
Self::steal()
}
}
impl crate::peripheral::sealed::Sealed for Bluetooth {}
impl LowRate {
pub const unsafe fn steal() -> Self {
Self { _private: () }
}
}
impl crate::peripheral::Peripheral for LowRate {
type P = Self;
unsafe fn clone_unchecked(&mut self) -> Self::P {
Self::steal()
}
}
impl crate::peripheral::sealed::Sealed for LowRate {}
cfg_if::cfg_if! {
if #[cfg(all(bt, ieee802154, wifi))] {
impl RadioExt for crate::peripherals::RADIO {
type Components = (Wifi, Bluetooth, LowRate);
fn split(self) -> Self::Components {
unsafe {
(Wifi::steal(), Bluetooth::steal(), LowRate::steal())
}
}
}
} else if #[cfg(all(bt, ieee802154))] {
impl RadioExt for crate::peripherals::RADIO {
type Components = (Bluetooth, LowRate);
fn split(self) -> Self::Components {
unsafe {
(Bluetooth::steal(), LowRate::steal())
}
}
}
} else if #[cfg(all(bt, wifi))] {
impl RadioExt for crate::peripherals::RADIO {
type Components = (Wifi, Bluetooth);
fn split(self) -> Self::Components {
unsafe {
(Wifi::steal(), Bluetooth::steal())
}
}
}
} else if #[cfg(wifi)] {
impl RadioExt for crate::peripherals::RADIO {
type Components = Wifi;
fn split(self) -> Self::Components {
unsafe {
Wifi::steal()
}
}
}
}
}

View File

@ -32,8 +32,6 @@ crate::peripherals! {
AES <= AES,
APB_CTRL <= APB_CTRL,
BB <= BB,
// SYSTEM is derived from DPORT
SYSTEM <= DPORT,
EFUSE <= EFUSE,
FLASH_ENCRYPTION <= FLASH_ENCRYPTION,
FRC_TIMER <= FRC_TIMER,
@ -65,6 +63,8 @@ crate::peripherals! {
SPI1 <= SPI1,
SPI2 <= SPI2,
SPI3 <= SPI3,
// SYSTEM is derived from DPORT:
SYSTEM <= DPORT,
TIMG0 <= TIMG0,
TIMG1 <= TIMG1,
TWAI0 <= TWAI0,
@ -73,6 +73,9 @@ crate::peripherals! {
UART2 <= UART2,
UHCI0 <= UHCI0,
UHCI1 <= UHCI1,
RADIO <= virtual,
// Virtual peripherals:
BT <= virtual,
PSRAM <= virtual,
WIFI <= virtual,
}

View File

@ -53,5 +53,8 @@ crate::peripherals! {
UART0 <= UART0,
UART1 <= UART1,
XTS_AES <= XTS_AES,
RADIO <= virtual
// Virtual peripherals:
BT <= virtual,
WIFI <= virtual,
}

View File

@ -64,5 +64,8 @@ crate::peripherals! {
UHCI1 <= UHCI1,
USB_DEVICE <= USB_DEVICE,
XTS_AES <= XTS_AES,
RADIO <= virtual
// Virtual peripherals:
BT <= virtual,
WIFI <= virtual,
}

View File

@ -69,8 +69,6 @@ crate::peripherals! {
PARL_IO <= PARL_IO,
PAU <= PAU,
PCNT <= PCNT,
// SYSTEM is derived from PCR
SYSTEM <= PCR,
PMU <= PMU,
RMT <= RMT,
RNG <= RNG,
@ -81,6 +79,8 @@ crate::peripherals! {
SPI0 <= SPI0,
SPI1 <= SPI1,
SPI2 <= SPI2,
// SYSTEM is derived from PCR
SYSTEM <= PCR,
SYSTIMER <= SYSTIMER,
TEE <= TEE,
TIMG0 <= TIMG0,
@ -92,6 +92,10 @@ crate::peripherals! {
UART1 <= UART1,
UHCI0 <= UHCI0,
USB_DEVICE <= USB_DEVICE,
RADIO <= virtual,
// Virtual peripherals:
BT <= virtual,
IEEE802154 <= virtual,
LP_CORE <= virtual,
WIFI <= virtual,
}

View File

@ -62,8 +62,6 @@ crate::peripherals! {
PARL_IO <= PARL_IO,
PAU <= PAU,
PCNT <= PCNT,
// SYSTEM is derived from PCR
SYSTEM <= PCR,
PMU <= PMU,
RMT <= RMT,
RNG <= RNG,
@ -73,6 +71,8 @@ crate::peripherals! {
SPI0 <= SPI0,
SPI1 <= SPI1,
SPI2 <= SPI2,
// SYSTEM is derived from PCR:
SYSTEM <= PCR,
SYSTIMER <= SYSTIMER,
TEE <= TEE,
TIMG0 <= TIMG0,
@ -83,5 +83,8 @@ crate::peripherals! {
UART1 <= UART1,
UHCI0 <= UHCI0,
USB_DEVICE <= USB_DEVICE,
RADIO <= virtual,
// Virtual peripherals:
BT <= virtual,
IEEE802154 <= virtual,
}

View File

@ -71,7 +71,9 @@ crate::peripherals! {
USB0 <= USB0,
USB_WRAP <= USB_WRAP,
XTS_AES <= XTS_AES,
RADIO <= virtual,
// Virtual peripherals:
PSRAM <= virtual,
ULP_RISCV_CORE <= virtual,
WIFI <= virtual,
}

View File

@ -81,7 +81,10 @@ crate::peripherals! {
USB_WRAP <= USB_WRAP,
WCL <= WCL,
XTS_AES <= XTS_AES,
RADIO <= virtual,
// Virtual peripherals:
BT <= virtual,
PSRAM <= virtual,
ULP_RISCV_CORE <= virtual,
WIFI <= virtual,
}