Files
kunlun/plc/halmac/inc/mac_rf_pdev.h
2024-09-28 14:24:04 +08:00

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