use crate::node::Node;
#[cfg(feature = "esp32c5")]
use crate::node::{CentralOpMode, PeripheralOpMode};
use esp_radio::wifi::csi::CsiConfig as RadioCsiConfig;
use esp_radio::wifi::{Protocol, Protocols, WifiController};
pub trait RadioProfile: Sync {
fn wants_bringup(&self, _kind: &Node, _protocol: Option<Protocol>) -> bool {
false
}
fn tune_protocols(&self, _kind: &Node, _protocol: Protocol, base: Protocols) -> Protocols {
base
}
fn apply_bandwidth(&self, _controller: &mut WifiController<'_>) {}
fn before_sta_config(&self) {}
fn before_ap_config(&self) {}
fn apply_protocols_post(&self, _controller: &mut WifiController<'_>) {}
fn apply_sniffer_radio(&self, _controller: &mut WifiController<'_>) {}
fn tune_csi_acquisition(&self, _raw: &mut RadioCsiConfig) {}
}
pub struct StandardProfile;
impl RadioProfile for StandardProfile {
fn tune_protocols(&self, kind: &Node, _protocol: Protocol, base: Protocols) -> Protocols {
#[cfg(feature = "esp32c5")]
{
if matches!(
kind,
Node::Central(CentralOpMode::EspNow(_))
| Node::Central(CentralOpMode::EspNowFastCollector(_))
| Node::Central(CentralOpMode::WifiStation(_))
| Node::Central(CentralOpMode::WifiAccessPoint(_))
| Node::Peripheral(PeripheralOpMode::EspNow(_))
| Node::Peripheral(PeripheralOpMode::EspNowFastSource(_))
) {
return base.with_5(Protocol::A | Protocol::N);
}
}
let _ = kind;
base
}
}