esp_wifi/radio/
radio_esp32c3.rs

1#[cfg(any(feature = "wifi", feature = "ble"))]
2#[allow(unused_imports)]
3use crate::{
4    binary,
5    hal::{interrupt, peripherals::Interrupt},
6};
7
8pub(crate) fn setup_radio_isr() {
9    // no-op
10}
11
12pub(crate) fn shutdown_radio_isr() {
13    #[cfg(feature = "ble")]
14    {
15        interrupt::disable(crate::hal::system::Cpu::ProCpu, Interrupt::RWBT);
16        interrupt::disable(crate::hal::system::Cpu::ProCpu, Interrupt::RWBLE);
17        interrupt::disable(crate::hal::system::Cpu::ProCpu, Interrupt::BT_BB);
18    }
19}
20
21#[cfg(feature = "wifi")]
22#[no_mangle]
23extern "C" fn WIFI_MAC() {
24    unsafe {
25        let (fnc, arg) = crate::wifi::os_adapter::ISR_INTERRUPT_1;
26
27        trace!("interrupt WIFI_MAC {:?} {:?}", fnc, arg);
28
29        if !fnc.is_null() {
30            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
31            fnc(arg);
32        }
33
34        trace!("interrupt 1 done");
35    };
36}
37
38#[cfg(feature = "wifi")]
39#[no_mangle]
40extern "C" fn WIFI_PWR() {
41    unsafe {
42        let (fnc, arg) = crate::wifi::os_adapter::ISR_INTERRUPT_1;
43
44        trace!("interrupt WIFI_PWR {:?} {:?}", fnc, arg);
45
46        if !fnc.is_null() {
47            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
48            fnc(arg);
49        }
50
51        trace!("interrupt 1 done");
52    };
53}
54
55#[cfg(feature = "ble")]
56#[no_mangle]
57extern "C" fn RWBT() {
58    unsafe {
59        let (fnc, arg) = crate::ble::btdm::ble_os_adapter_chip_specific::BT_INTERRUPT_FUNCTION5;
60
61        trace!("interrupt RWBT {:?} {:?}", fnc, arg);
62
63        if !fnc.is_null() {
64            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
65            fnc(arg);
66        }
67
68        trace!("interrupt 5 done");
69    };
70}
71
72#[cfg(feature = "ble")]
73#[no_mangle]
74extern "C" fn RWBLE() {
75    unsafe {
76        let (fnc, arg) = crate::ble::btdm::ble_os_adapter_chip_specific::BT_INTERRUPT_FUNCTION8;
77
78        trace!("interrupt RWBLE {:?} {:?}", fnc, arg);
79
80        if !fnc.is_null() {
81            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
82            fnc(arg);
83        }
84
85        trace!("interrupt 5 done");
86    };
87}
88
89#[cfg(feature = "ble")]
90#[no_mangle]
91extern "C" fn BT_BB(_trap_frame: &mut crate::hal::interrupt::TrapFrame) {
92    unsafe {
93        let (fnc, arg) = crate::ble::btdm::ble_os_adapter_chip_specific::BT_INTERRUPT_FUNCTION5;
94
95        trace!("interrupt BT_BB {:?} {:?}", fnc, arg);
96
97        if !fnc.is_null() {
98            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
99            fnc(arg);
100        }
101
102        trace!("interrupt 8 done");
103    };
104}