431 lines
13 KiB
C
431 lines
13 KiB
C
|
/****************************************************************************
|
||
|
|
||
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
||
|
|
||
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
||
|
be copied by any method or incorporated into another program without
|
||
|
the express written consent of Aerospace C.Power. This Information or any portion
|
||
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
||
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
||
|
liability for its use in any way and conveys no license or title under
|
||
|
any patent or copyright and makes no representation or warranty that this
|
||
|
Information is free from patent or copyright infringement.
|
||
|
|
||
|
****************************************************************************/
|
||
|
|
||
|
/* os shim includes */
|
||
|
#include "iot_config.h"
|
||
|
#include "os_types.h"
|
||
|
|
||
|
/* plc public api includes */
|
||
|
#include "plc_fr.h"
|
||
|
#include "plc_const.h"
|
||
|
|
||
|
/* driver includes */
|
||
|
#include "iot_irq.h"
|
||
|
#include "bb_cpu_mac_isr.h"
|
||
|
#include "bb_cpu_mac_init.h"
|
||
|
#include "bb_cpu_fsm.h"
|
||
|
#include "bb_cpu_timer.h"
|
||
|
#include "mac_rf_isr.h"
|
||
|
#include "iot_io.h"
|
||
|
|
||
|
#include "hw_reg_api.h"
|
||
|
#include "rfplc_reg_base.h"
|
||
|
#include "rf_mac_reg.h"
|
||
|
#include "mac_sys_reg.h"
|
||
|
#include "plc_mac_cfg.h"
|
||
|
#include "mac_rf_common_hw.h"
|
||
|
#include "mac_rf_timer.h"
|
||
|
|
||
|
/* define mac isr ctxt */
|
||
|
rf_mac_isr_ctx_t g_rf_mac_isr_1 = { 0 };
|
||
|
rf_mac_isr_ctx_t *p_rf_mac_isr_1 = &g_rf_mac_isr_1;
|
||
|
|
||
|
static uint8_t stf_occur = 0;
|
||
|
|
||
|
/* get hw intrrupt status, hw interrupt */
|
||
|
static uint32_t bb_cpu_mac_get_hw_interrupt_sts()
|
||
|
{
|
||
|
return RF_MAC_READ_REG(CFG_RF_MAC_COMMON_INT_REG_7_ADDR);
|
||
|
}
|
||
|
|
||
|
/* clear hw intrrupt status, hw interrupt */
|
||
|
static void bb_cpu_mac_clear_hw_interrupt(uint32_t irq_sts)
|
||
|
{
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_5_ADDR, irq_sts);
|
||
|
}
|
||
|
|
||
|
/* get sw intrrupt status, hw interrupt */
|
||
|
static uint32_t bb_cpu_mac_get_sw_interrupt_sts()
|
||
|
{
|
||
|
return RF_MAC_READ_REG(CFG_RF_MAC_COMMON_INT_REG_27_ADDR);
|
||
|
}
|
||
|
|
||
|
/* clear sw intrrupt status, hw interrupt */
|
||
|
static void bb_cpu_mac_clear_sw_interrupt(uint32_t irq_sts)
|
||
|
{
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_25_ADDR, irq_sts);
|
||
|
}
|
||
|
|
||
|
static void bb_cpu_mac_hw_isr_reset(void)
|
||
|
{
|
||
|
/* disable all mac interrupt */
|
||
|
p_rf_mac_isr_1->isr_hw_mask = 0;
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_9_ADDR,
|
||
|
p_rf_mac_isr_1->isr_hw_mask);
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_1_ADDR,
|
||
|
p_rf_mac_isr_1->isr_hw_mask);
|
||
|
|
||
|
/* clean up all pending interrupt */
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_5_ADDR,
|
||
|
RF_MAC_COMMON_IRQ_SW_CLR_CPU2_MASK);
|
||
|
}
|
||
|
|
||
|
static void bb_cpu_mac_sw_isr_reset(void)
|
||
|
{
|
||
|
/* disable all mac interrupt */
|
||
|
p_rf_mac_isr_1->isr_sw_mask = 0;
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_29_ADDR,
|
||
|
p_rf_mac_isr_1->isr_sw_mask);
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_21_ADDR,
|
||
|
p_rf_mac_isr_1->isr_sw_mask);
|
||
|
|
||
|
/* clean up all pending interrupt */
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_25_ADDR,
|
||
|
RF_MAC_COMMON_SHARE_IRQ_SW_CLR_CPU2_MASK);
|
||
|
}
|
||
|
|
||
|
static void bb_cpu_mac_share_isr_reset(void)
|
||
|
{
|
||
|
/* disable all mac interrupt */
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_19_ADDR, 0);
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_11_ADDR, 0);
|
||
|
|
||
|
/* clean up all pending interrupt */
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_15_ADDR,
|
||
|
RF_MAC_COMMON_SHARE_IRQ_SW_CLR_CPU2_MASK);
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_hw_isr_enable(uint8_t id)
|
||
|
{
|
||
|
uint32_t int_mask;
|
||
|
int_mask = 1 << id;
|
||
|
if (!(p_rf_mac_isr_1->isr_hw_mask & int_mask)) {
|
||
|
p_rf_mac_isr_1->isr_hw_mask |= int_mask;
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_9_ADDR,
|
||
|
p_rf_mac_isr_1->isr_hw_mask);
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_1_ADDR,
|
||
|
p_rf_mac_isr_1->isr_hw_mask);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_sw_isr_enable(uint8_t id)
|
||
|
{
|
||
|
uint32_t int_mask;
|
||
|
int_mask = 1 << id;
|
||
|
if (!(p_rf_mac_isr_1->isr_sw_mask & int_mask)) {
|
||
|
p_rf_mac_isr_1->isr_sw_mask |= int_mask;
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_29_ADDR,
|
||
|
p_rf_mac_isr_1->isr_sw_mask);
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_21_ADDR,
|
||
|
p_rf_mac_isr_1->isr_sw_mask);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_hw_isr_disable(uint8_t id)
|
||
|
{
|
||
|
uint32_t int_mask;
|
||
|
int_mask = 1 << id;
|
||
|
if (p_rf_mac_isr_1->isr_hw_mask & int_mask) {
|
||
|
p_rf_mac_isr_1->isr_hw_mask &= ~int_mask;
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_9_ADDR,
|
||
|
p_rf_mac_isr_1->isr_hw_mask);
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_1_ADDR,
|
||
|
p_rf_mac_isr_1->isr_hw_mask);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_sw_isr_disable(uint8_t id)
|
||
|
{
|
||
|
uint32_t int_mask;
|
||
|
int_mask = 1 << id;
|
||
|
if (p_rf_mac_isr_1->isr_sw_mask & int_mask) {
|
||
|
p_rf_mac_isr_1->isr_sw_mask &= ~int_mask;
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_19_ADDR,
|
||
|
p_rf_mac_isr_1->isr_sw_mask);
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_11_ADDR,
|
||
|
p_rf_mac_isr_1->isr_sw_mask);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_set_sw_irq_to_maincpu(uint8_t id)
|
||
|
{
|
||
|
if (id < RF_MAC_SW_INT_MAX) {
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_22_ADDR, (1 << id));
|
||
|
} else {
|
||
|
IOT_ASSERT(id < RF_MAC_SW2_INT_MAX);
|
||
|
uint32_t timer_id = id - RF_MAC_SW_INT_MAX;
|
||
|
mac_rf_timer_stop(timer_id);
|
||
|
mac_rf_timer_set(timer_id, 1);
|
||
|
mac_rf_timer_start(timer_id);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_set_share_irq_to_maincpu(uint8_t id)
|
||
|
{
|
||
|
RF_MAC_WRITE_REG(CFG_RF_MAC_COMMON_INT_REG_12_ADDR, (1 << id));
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_isr_start(void)
|
||
|
{
|
||
|
/* enable soc irq */
|
||
|
iot_interrupt_unmask(p_rf_mac_isr_1->isr_hw_h);
|
||
|
iot_interrupt_unmask(p_rf_mac_isr_1->isr_sw_h);
|
||
|
iot_interrupt_unmask(p_rf_mac_isr_1->isr_timer_h);
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_isr_stop(void)
|
||
|
{
|
||
|
/* disable soc irq */
|
||
|
iot_interrupt_mask(p_rf_mac_isr_1->isr_hw_h);
|
||
|
iot_interrupt_mask(p_rf_mac_isr_1->isr_sw_h);
|
||
|
iot_interrupt_mask(p_rf_mac_isr_1->isr_timer_h);
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_isr_enable()
|
||
|
{
|
||
|
/* enable hw interrupt */
|
||
|
for (uint32_t i = 0; i < RF_MAC_ISR_HW_MAX_ID; i++) {
|
||
|
bb_cpu_mac_hw_isr_enable(i);
|
||
|
}
|
||
|
/* enable bb init and set channel interrupt */
|
||
|
bb_cpu_mac_sw_isr_enable(RF_MAC_SW_ISR_BB_INIT);
|
||
|
bb_cpu_mac_sw_isr_enable(RF_MAC_SW_ISR_SET_CHANNEL);
|
||
|
/* enable trigger hwq interrupt */
|
||
|
bb_cpu_mac_sw_isr_enable(RF_MAC_SW_ISR_CSMA_TX_CHECK);
|
||
|
bb_cpu_mac_sw_isr_enable(RF_MAC_SW_ISR_SYNC_SPI_VALUE);
|
||
|
bb_cpu_mac_sw_isr_enable(RF_MAC_SW_ISR_TX_TONE);
|
||
|
bb_cpu_mac_sw_isr_enable(RF_MAC_SW_ISR_SET_PS_IDLE);
|
||
|
bb_cpu_mac_sw_isr_enable(RF_MAC_SW_ISR_TX_CAL_UPDATE);
|
||
|
}
|
||
|
|
||
|
static uint32_t bb_cpu_mac_isr_handler(uint32_t vector, uint32_t data)
|
||
|
{
|
||
|
(void)vector;
|
||
|
(void)data;
|
||
|
uint32_t hw_int_status, sw_int_status, timer_int_sts;
|
||
|
|
||
|
/* get interrupt status */
|
||
|
hw_int_status = bb_cpu_mac_get_hw_interrupt_sts();
|
||
|
/* clear interrupt status */
|
||
|
bb_cpu_mac_clear_hw_interrupt(hw_int_status);
|
||
|
|
||
|
/* get interrupt status */
|
||
|
sw_int_status = bb_cpu_mac_get_sw_interrupt_sts();
|
||
|
/* clear interrupt status */
|
||
|
bb_cpu_mac_clear_sw_interrupt(sw_int_status);
|
||
|
|
||
|
/* get timer interrupt status */
|
||
|
timer_int_sts = bb_cpu_timer_get_timeout_id();
|
||
|
bb_cpu_timer_clr_timeout_id(timer_int_sts);
|
||
|
|
||
|
/* cmdlist done */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_CMDLIST_DONE_ID)) {
|
||
|
/* set event to cmdlist done and stop tx/rx */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_CMDLIST_DONE_ID);
|
||
|
}
|
||
|
|
||
|
/* stop schedule */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_EARLY_STOP_START_ID)) {
|
||
|
/* set event to stop schduel(reset tx/rx) */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_RST_ID);
|
||
|
}
|
||
|
|
||
|
/* vcs timeout
|
||
|
* NOTE: the priority of BB_CPU_ISR_VCS_TIMEOUT_ID higher than
|
||
|
* RF_MAC_ISR_BB_RX_STF_ID.
|
||
|
*/
|
||
|
if (timer_int_sts & (0x1 << BB_CPU_ISR_VCS_TIMEOUT_ID)) {
|
||
|
/* stop vcs working */
|
||
|
bb_cpu_stop_vcs_working_from_isr();
|
||
|
}
|
||
|
|
||
|
/* rx stf */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_BB_RX_STF_ID)) {
|
||
|
/* pull vcs up */
|
||
|
bb_cpu_mac_set_vcs_sts_from_isr(1);
|
||
|
/* set stf occour */
|
||
|
stf_occur = 1;
|
||
|
/* set eifs */
|
||
|
bb_cpu_set_vcs_timer_from_isr(RF_MAC_EIFS_US, 1);
|
||
|
/* increase rx stf cnt */
|
||
|
mac_rf_rx_stf_cnt_inc();
|
||
|
}
|
||
|
|
||
|
/* tx abort */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_TX_ABORT_ID)) {
|
||
|
/* set event to tx abort */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_TX_ABORT_ID);
|
||
|
}
|
||
|
|
||
|
/* rx abort */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_RX_ABORT_ID)) {
|
||
|
/* set event to rx abort */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_RX_ABORT_ID);
|
||
|
}
|
||
|
|
||
|
/* backoff timeout */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_BACKOFF_TIMEOUT_ID)) {
|
||
|
/* set event to backoff timeout */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_BACKOFF_TIMEOUT_ID);
|
||
|
}
|
||
|
|
||
|
/* rx start */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_RX_START_ID)) {
|
||
|
stf_occur = 0;
|
||
|
/* set event to rx start */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_MAC_RX_START_ID);
|
||
|
}
|
||
|
|
||
|
/* rx timeout */
|
||
|
if (timer_int_sts & (0x1 << BB_CPU_ISR_RX_TIMEOUT_ID)) {
|
||
|
/* set event to rx timeout */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_RX_TIMEOUT_ID);
|
||
|
}
|
||
|
|
||
|
/* tx start */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_TX_START_ID)) {
|
||
|
/* set event to start tx */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_MAC_TX_START_ID);
|
||
|
}
|
||
|
|
||
|
/* tx timeout */
|
||
|
if (timer_int_sts & (0x1 << BB_CPU_ISR_TX_TIMEOUT_ID)) {
|
||
|
/* set event to tx timeout */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_TX_TIMEOUT_ID);
|
||
|
}
|
||
|
|
||
|
/* wait sack timeout */
|
||
|
if (timer_int_sts & (0x1 << BB_CPU_ISR_WAIT_SACK_TIMEOUT_ID)) {
|
||
|
/* in conflict scenarios, backoff eifs */
|
||
|
/* pull vcs up */
|
||
|
bb_cpu_mac_set_vcs_sts_from_isr(1);
|
||
|
/* set eifs */
|
||
|
bb_cpu_set_vcs_timer_from_isr(RF_MAC_EIFS_US, 0);
|
||
|
/* set event to wait sack timeout */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_WAIT_SACK_TIMEOUT_ID);
|
||
|
}
|
||
|
|
||
|
/* wait reset timeout */
|
||
|
if (timer_int_sts & (0x1 << BB_CPU_ISR_RST_TIMEOUT_ID)) {
|
||
|
/* set event to wait reset timeout */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_RST_TIMEOUT_ID);
|
||
|
}
|
||
|
|
||
|
/* bb tx done */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_BB_TX_DONE_ID)) {
|
||
|
/* set event to tx complete */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_TX_COMP_ID);
|
||
|
}
|
||
|
|
||
|
/* bb rx sig done */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_BB_RX_SIG_ID)) {
|
||
|
if (!stf_occur) {
|
||
|
/* pull vcs up */
|
||
|
bb_cpu_mac_set_vcs_sts_from_isr(1);
|
||
|
/* set eifs */
|
||
|
bb_cpu_set_vcs_timer_from_isr(RF_MAC_EIFS_US, 1);
|
||
|
mac_rf_lost_stf_cnt_inc();
|
||
|
}
|
||
|
/* set event to rx sig */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_RX_SIG_ID);
|
||
|
}
|
||
|
|
||
|
/* bb rx phr done */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_BB_RX_PHR_ID)) {
|
||
|
/* set event to rx phy header */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_RX_PHR_ID);
|
||
|
}
|
||
|
|
||
|
/* bb rx pld start */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_BB_RX_PLD_START_ID)) {
|
||
|
/* set event to rx pld start */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_RX_PLD_START_ID);
|
||
|
}
|
||
|
|
||
|
/* bb init */
|
||
|
if (sw_int_status & (0x1 << RF_MAC_SW_ISR_BB_INIT)) {
|
||
|
/* set event to bb init */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_BB_INIT_ID);
|
||
|
}
|
||
|
|
||
|
/* bb set channel */
|
||
|
if (sw_int_status & (0x1 << RF_MAC_SW_ISR_SET_CHANNEL)) {
|
||
|
/* set event to set channel */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_SET_CHANNEL_ID);
|
||
|
}
|
||
|
|
||
|
/* bb early stop done */
|
||
|
if (hw_int_status & (0x1 << RF_MAC_ISR_EARLY_STOP_DONE_ID)) {
|
||
|
/* set isr is vaild */
|
||
|
bb_cpu_set_isr_vaild_from_isr(1);
|
||
|
}
|
||
|
|
||
|
/* csma q tx check */
|
||
|
if (sw_int_status & (0x1 << RF_MAC_SW_ISR_CSMA_TX_CHECK)) {
|
||
|
/* csma q tx check */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_CSMA_TX_CHECK_ID);
|
||
|
}
|
||
|
|
||
|
/* hplc cpu sync rf spi */
|
||
|
if (sw_int_status & (0x1 << RF_MAC_SW_ISR_SYNC_SPI_VALUE)) {
|
||
|
/* csma q tx check */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_SYNC_SPI_ID);
|
||
|
}
|
||
|
|
||
|
/* hplc cpu tx tone */
|
||
|
if (sw_int_status & (0x1 << RF_MAC_SW_ISR_TX_TONE)) {
|
||
|
/* tx tone */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_TX_TONE_ID);
|
||
|
}
|
||
|
|
||
|
/* hplc cpu set power save idle */
|
||
|
if (sw_int_status & (0x1 << RF_MAC_SW_ISR_SET_PS_IDLE)) {
|
||
|
/* set power save idle */
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_PS_IDLE_ID);
|
||
|
}
|
||
|
|
||
|
/* hplc cpu request tx cal update */
|
||
|
if (sw_int_status & (0x1 << RF_MAC_SW_ISR_TX_CAL_UPDATE)) {
|
||
|
bb_cpu_set_event_from_isr(BB_CPU_EVENT_TX_CAL_UPDATE_ID);
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void bb_cpu_mac_isr_init(void)
|
||
|
{
|
||
|
bb_cpu_mac_hw_isr_reset();
|
||
|
bb_cpu_mac_sw_isr_reset();
|
||
|
bb_cpu_mac_share_isr_reset();
|
||
|
|
||
|
/* just need init hw interrupt(common isr) */
|
||
|
/* hw irq need isr handle */
|
||
|
p_rf_mac_isr_1->isr_hw_h = iot_interrupt_create(HAL_VECTOR_RFMAC_INT1,
|
||
|
HAL_INTR_PRI_7, (iot_addrword_t)NULL, bb_cpu_mac_isr_handler);
|
||
|
p_rf_mac_isr_1->isr_sw_h = iot_interrupt_create(HAL_VECTOR_RFMAC_INT1,
|
||
|
HAL_INTR_PRI_7, (iot_addrword_t)NULL, bb_cpu_mac_isr_handler);
|
||
|
|
||
|
iot_interrupt_attach(p_rf_mac_isr_1->isr_hw_h);
|
||
|
iot_interrupt_attach(p_rf_mac_isr_1->isr_sw_h);
|
||
|
|
||
|
/* timer irq need isr handle */
|
||
|
p_rf_mac_isr_1->isr_timer_h =
|
||
|
iot_interrupt_create(HAL_VECTOR_RFMAC_TIMEOUT_INT1, HAL_INTR_PRI_6,
|
||
|
(iot_addrword_t)NULL, bb_cpu_mac_isr_handler);
|
||
|
|
||
|
iot_interrupt_attach(p_rf_mac_isr_1->isr_timer_h);
|
||
|
}
|
||
|
|