#ifndef __TX_ENTRY_H #define __TX_ENTRY_H #include "phy_bb.h" #include "phy_phase.h" #include "tx_mpdu_start.h" #include "iot_irq.h" #define MAC_TX_BEACON 0 #define MAC_TX_SOF 1 #define MAC_TX_SACK 2 #define MAC_TX_CTS 3 #define MAC_TX_SOUND 4 #define MAC_TX_RSOF 5 #define MAC_TX_TMI 10 #define MAC_TX_MIX_MODE 11 #define MAC_TX_GP_EXT 12 #define MAC_TX_GP_TONE_MASK 13 #define MAC_TX_BURN 14 #define MAC_TX_BAND_SWITCH 15 #define MAC_TX_GP_HYBRID 16 #define PHY_BURST_MODE 17 #define MAC_TX_INTR_BCN_ALT 100 #define MAC_TX_INTR_MPDU_COMPLETE 101 #define MAC_TX_SCHED_BCN_AHEAD_ALERT 102 #define MAC_TX_PHY_TD_START 103 #define MAC_TX_EMC_SCAN 104 #define MAC_PHY_RST_FLOW 105 #define MAC_SOUND_TMAP 106 #define MAC_TX_TEST_ID MAC_TX_BEACON #define MAC_TMI_0 0 #define MAC_TMI_1 1 #define MAC_TMI_2 2 #define MAC_TMI_3 3 #define MAC_TMI_4 4 #define MAC_TMI_5 5 #define MAC_TMI_6 6 #define MAC_TMI_7 7 #define MAC_TMI_8 8 #define MAC_TMI_9 9 #define MAC_TMI_10 10 #define MAC_TMI_11 11 #define MAC_TMI_12 12 #define MAC_TMI_13 13 #define MAC_TMI_14 14 #define MAC_EXT_TMI_0 15 #define MAC_EXT_TMI_1 16 #define MAC_EXT_TMI_2 17 #define MAC_EXT_TMI_3 18 #define MAC_EXT_TMI_4 19 #define MAC_EXT_TMI_5 20 #define MAC_EXT_TMI_6 21 #define MAC_EXT_TMI_7 22 #define MAC_EXT_TMI_8 23 #define MAC_EXT_TMI_9 24 #define MAC_EXT_TMI_10 25 #define MAC_EXT_TMI_11 26 #define MAC_EXT_TMI_12 27 #define MAC_EXT_TMI_13 28 #define MAC_EXT_TMI_14 29 #define MAC_EXT_TMI_MAX 30 #define MAC_TMI_ID MAC_TMI_4 #define MAC_PB_NUM_0 0 #define MAC_PB_NUM_1 1 #define MAC_PB_NUM_2 2 #define MAC_PB_NUM_3 3 #define MAC_PB_NUM_4 4 #define MAC_PB_NUM_ID MAC_PB_NUM_1 #define MAC_PB_SIZE_MAX PB_SIZE_520 #define TX_PKT_SEND_INTERVAL 100 /* multi rate support */ #define MAC_RATE_RANDOM_SUPPORT 0 /* multi band support */ #define MAC_MULTI_BAND_SUPPORT 0 /* tx always enable */ #define PHY_TX_ALWAYS_EN 0 /* compatible with nid bit width of all protocols */ #define PHY_TXRX_NID_VAL (0xb) /* tx glb cfg */ typedef struct _iot_tx_cfg_info { /* phase */ PHY_PHASE_OVR_ID phase; /* mac type */ uint32_t m_type :3, /* current packet type */ p_type :3, /* current test type */ t_type :7, /* TMI */ tmi :5, /* pb num */ pb_num :4, /* band mode */ band_id :8, /* gi */ gi :2; /* source tei */ uint32_t src_tei : 12, /* destination tei */ dst_tei : 12, /* hwq num */ hwq_num :2, /* ppdu mode */ ppdu_mode :2, /* mpdu cnt */ mpdu_cnt :2, /* turbo rate */ turbo_rate:2; /* modulation */ uint16_t modu :3, /* nid */ nid :8, /* rate mode */ rate_mode :4, /* sof ack en */ ack_en :1; } iot_tx_cfg_info_t; /* register tx intr */ typedef struct _iot_mac_intr_info { uint32_t int_num; iot_irq_t handle; } iot_mac_intr_info_t; extern volatile tx_mpdu_start *mpdu_start; extern iot_tx_cfg_info_t glb_cfg; extern uint32_t bcn_period_ms; extern uint32_t print_tx_period_ms; extern volatile bool_t mac_tx_complete_flag; extern volatile bool_t mac_beacon_alert_flag; extern iot_mac_intr_info_t mac_info; #if IOT_DTEST_ONLY_SUPPORT == 1 extern uint16_t band_cnt[MAC_BB_MAX_RATE][MAX_HW_BAND]; #else extern uint16_t *band_cnt[MAC_BB_MAX_RATE]; #endif /** *@brief tx_common_init. * The common API function is designed for external calling by MP * or the other compositive scenario. * *@param band_idx [band index.] *@param enable [bool type, true or false.] *@exception [none.] *@return [none.] */ void tx_common_init(uint32_t band_idx); /** *@brief phy_tx_gain_rms_set. * config tx td rms value to fix power. * *@param para_int [int parameter.] *@exception [none.] *@return [none.] */ void phy_tx_gain_rms_set(uint8_t para_int); /** *@brief mac_tx_handle. * mac tx APIs to send specail pkt. such as phase, * mac prototype, packet type, number and if wait * rx or not. * *@param phase [tx phase.] *@param mac_type [mac prototype.] *@param pkt_type [packet type.] *@param num [number.] *@param wait_rx [true or false.] *@exception [none.] *@return [none.] */ void mac_tx_handle(PHY_PHASE_OVR_ID phase, \ uint32_t mac_type, \ uint32_t pkt_type, \ uint32_t num, \ bool_t wait_rx); /** *@brief mac_glb_map. * update the newest global mac info. * *@param mac_type [mac prototype.] *@param pkt_type [packet type.] *@param test_type [test id.] *@exception [none.] *@return [none.] */ void mac_glb_map(uint32_t mac_type, uint32_t pkt_type, uint32_t test_type); /** *@brief phy_interrupt_init. * phy interrupt initialize. * *@param none [none.] *@exception [none.] *@return [none.] */ void phy_interrupt_init(); /** *@brief tx_send_packet_interval. * use for tx sending packet at interval. * *@param interval [time interval.] *@exception [none.] *@return [none.] */ void tx_send_packet_interval(uint32_t interval); /** *@brief phy_tmap_common_init. * phy sound tone map common init. * *@param none [none.] *@exception [none.] *@return [none.] */ void phy_tmap_common_init(); /** *@brief phy_tmap_init. * * sound tone map initilze. * *@param none [none.] *@exception [none.] *@return [none.] */ void phy_tmap_init(); /** *@brief phy_tmap_self_tmi_set. * * phy tone map tx and rx tmi set. * *@param tmi [which tmi to set.] *@exception [none.] *@return [none.] */ void phy_tmap_self_tmi_set(uint8_t tmi); #endif