esp_wifi/radio/
radio_esp32c2.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::LP_TIMER);
16        interrupt::disable(crate::hal::system::Cpu::ProCpu, Interrupt::BT_MAC);
17    }
18}
19
20#[cfg(feature = "wifi")]
21#[no_mangle]
22extern "C" fn WIFI_MAC() {
23    unsafe {
24        let (fnc, arg) = crate::wifi::os_adapter::ISR_INTERRUPT_1;
25
26        trace!("interrupt WIFI_MAC {:?} {:?}", fnc, arg);
27
28        if !fnc.is_null() {
29            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
30            fnc(arg);
31        }
32
33        trace!("interrupt 1 done");
34    };
35}
36
37#[cfg(feature = "wifi")]
38#[no_mangle]
39extern "C" fn WIFI_PWR() {
40    unsafe {
41        let (fnc, arg) = crate::wifi::os_adapter::ISR_INTERRUPT_1;
42
43        trace!("interrupt WIFI_PWR {:?} {:?}", fnc, arg);
44
45        if !fnc.is_null() {
46            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
47            fnc(arg);
48        }
49
50        trace!("interrupt 1 done");
51    };
52}
53
54#[cfg(feature = "ble")]
55#[no_mangle]
56extern "C" fn LP_TIMER() {
57    unsafe {
58        trace!("LP_TIMER interrupt");
59
60        let (fnc, arg) = crate::ble::npl::ble_os_adapter_chip_specific::ISR_INTERRUPT_7;
61
62        trace!("interrupt LP_TIMER {:?} {:?}", fnc, arg);
63
64        if !fnc.is_null() {
65            trace!("interrupt LP_TIMER call");
66
67            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
68            fnc(arg);
69            trace!("LP_TIMER done");
70        }
71
72        trace!("interrupt LP_TIMER done");
73    };
74}
75
76#[cfg(feature = "ble")]
77#[no_mangle]
78extern "C" fn BT_MAC() {
79    unsafe {
80        trace!("BT_MAC interrupt");
81
82        let (fnc, arg) = crate::ble::npl::ble_os_adapter_chip_specific::ISR_INTERRUPT_4;
83
84        trace!("interrupt BT_MAC {:?} {:?}", fnc, arg);
85
86        if !fnc.is_null() {
87            trace!("interrupt BT_MAC call");
88
89            let fnc: fn(*mut binary::c_types::c_void) = core::mem::transmute(fnc);
90            fnc(arg);
91            trace!("BT_MAC done");
92        }
93
94        trace!("interrupt BT_MAC done");
95    };
96}