114 lines
3.1 KiB
C
114 lines
3.1 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.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef MAC_RF_PDEV_H
|
|
#define MAC_RF_PDEV_H
|
|
|
|
#include "plc_fr.h"
|
|
|
|
#if HW_PLATFORM == HW_PLATFORM_SIMU
|
|
#include "simulator_txrx.h"
|
|
#endif
|
|
#include "mac_rf_vdev.h"
|
|
#include "iot_mem_pool.h"
|
|
#include "plc_mac_cfg.h"
|
|
#include "mac_rf_hwq_mgr.h"
|
|
#include "mac_rx_buf_ring.h"
|
|
#include "iot_pkt.h"
|
|
#include "mac_rf_scan.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef uint32_t(*mac_rf_tx_hw_comp_t)(uint32_t hwqid);
|
|
typedef uint32_t(*mac_rf_rx_t)(void *pdev, uint32_t ring_id, uint32_t quota_ms);
|
|
|
|
typedef struct _mac_rf_pdev {
|
|
iot_mem_pool_t rf_vdev_pool;
|
|
uint32_t cur_rf_vdev_num : 3,
|
|
dbg_pkt_vdev_id : 8,
|
|
/* reserved for future */
|
|
resv : 21;
|
|
mac_rf_vdev_t *rf_vdev[MAX_RF_VDEV_NUM];
|
|
#if HW_PLATFORM == HW_PLATFORM_SIMU
|
|
simulator_info_t simu;
|
|
#endif
|
|
mac_rf_queue_ctxt_t hwq_hdl;
|
|
mac_rx_ring_ctxt_t ring_hdl;
|
|
/* current rf pdev id */
|
|
pdevid_t rf_pdev_id;
|
|
/* parent pdev id */
|
|
pdevid_t parent_pdev_id;
|
|
/* mac_tx_hw_comp handler */
|
|
mac_rf_tx_hw_comp_t tx_comp;
|
|
/* mac rx handler */
|
|
mac_rf_rx_t rx;
|
|
/* rf scan option/channel */
|
|
mac_rf_scan_ctxt_t rf_scan;
|
|
} mac_rf_pdev_t;
|
|
|
|
#if HPLC_RF_DEV_SUPPORT
|
|
|
|
/*
|
|
* @brief - mac_rf_pdev_init() rf pdev init
|
|
* @param - pdev_id pdev id
|
|
* @return - 0
|
|
*/
|
|
uint32_t mac_rf_pdev_init(pdevid_t pdev_id);
|
|
|
|
/*
|
|
* @brief - get_rf_pdev_ptr() get rf pdev
|
|
* @param - plc_pdev_id plc pdev id
|
|
* @param - rf_pdev_id rf pdev id
|
|
* @return - rf pdev
|
|
*/
|
|
mac_rf_pdev_t *get_rf_pdev_ptr(uint32_t plc_pdev_id,
|
|
uint32_t rf_pdev_id);
|
|
|
|
/*
|
|
* @brief - mac_set_rf_pdev_rx_cb() mac set rf pdev rx callback.
|
|
* @param - rf_pdev the point to rf pdev.
|
|
* @param - rx_cb callback
|
|
* @return - void
|
|
*/
|
|
void mac_set_rf_pdev_rx_cb(mac_rf_pdev_t *rf_pdev,
|
|
mac_rf_rx_t rx_cb);
|
|
|
|
#else /* HPLC_RF_DEV_SUPPORT */
|
|
|
|
#define mac_rf_pdev_init(pdev_id) \
|
|
do { \
|
|
(void)pdev_id; \
|
|
} while(0)
|
|
|
|
#define get_rf_pdev_ptr(plc_pdev_id, rf_pdev_id) NULL;\
|
|
do { \
|
|
(void)plc_pdev_id; (void)rf_pdev_id; \
|
|
} while(0)
|
|
|
|
#define mac_set_rf_pdev_rx_cb(rf_pdev, rx_cb) \
|
|
do { \
|
|
(void)rf_pdev; (void)rx_cb; \
|
|
} while (0)
|
|
|
|
#endif /* HPLC_RF_DEV_SUPPORT */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // !MAC_PDEV_H
|