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

215 lines
7.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_CFG_H
#define MAC_CFG_H
#include "os_types.h"
#include "plc_protocol.h"
#ifdef __cplusplus
extern "C" {
#endif
/* MAC writable PIB configation special mark to identify if the configuration
* is valid. 09-26 15:48
*/
#define MAC_CFG_RW_MARK 0x15480926
#ifndef MAC_CFG_STORE_PARA_TODO
#define MAC_CFG_STORE_PARA_TODO 0
#endif
/*
* mac config default value
*/
/* default peer count */
#define MAC_CFG_DEF_PEER_CNT PLC_MAC_PEER_POOL_SIZE
/* default KPI for Performance */
#define MAC_CFG_DEF_PERFORMANCE_MBPS PCO_PERFORMANCE_MBPS
/* default tx buffer ratio n/16 */
#define MAC_CFG_DEF_TX_BUF_RATIO 8
/* default rx buffer ratio n/16 */
#define MAC_CFG_DEF_RX_BUF_RATIO 8
/* default long buffer count ratio n/16 */
#define MAC_CFG_DEF_LONG_BUF_CNT_RATIO 1
/* default large buffer count ratio n/16 */
#define MAC_CFG_DEF_LARGE_BUF_CNT_RATIO 1
/* default small buffer count ratio n/16 */
#define MAC_CFG_DEF_SMALL_BUF_CNT_RATIO 6
/* default short buffer count ratio n/16 */
#define MAC_CFG_DEF_SHORT_BUF_CNT_RATIO 8
/* default PA count */
#define MAC_CFG_DEF_CCO_PA_CNT 3
#define MAC_CFG_DEF_STA_PA_CNT 1
/* oem vendor asscii code */
#define MAC_CFG_VENDOR_CODE_WQRD 0x5751 /* 'W''Q' */
#define MAC_CFG_VENDOR_CODE_HTZD 0x4854 /* 'H''T' */
#define MAC_CFG_VENDOR_CODE_JSMT 0x4D54 /* 'M''T' */
#define MAC_CFG_VENDOR_CODE_GLDQ 0x474c /* 'G''L' */
/* pack for the structures in the whole file */
#pragma pack(push) /* save the pack status */
#pragma pack(1) /* 1 byte align */
typedef struct _mac_cfg_buf_info {
uint16_t peer_cnt;
uint16_t plc_long_buf_cnt;
uint16_t plc_large_buf_cnt;
uint16_t plc_small_buf_cnt;
uint16_t plc_short_buf_cnt;
uint16_t tx_buf_ratio : 5,
rx_buf_ratio : 5,
pa_cnt : 2,
tput_mbps_size : 4;
uint16_t vendor_id;
/* The default retry count for standard beacons */
uint8_t bcn_def_retry_cnt;
/* mac zc compens for PLC_PHASE_A/PLC_PHASE_B/PLC_PHASE_C(unit: ntb).
* zc_ntb(final value) = dev_collect_zc_ntb + mac_zc_compens
*/
int32_t mac_zc_compens[PLC_PHASE_CNT];
} mac_cfg_buf_info_t;
typedef struct _mac_cfg_rw_cco_sta_ {
/* peer cnt */
uint16_t peer_cnt;
/* KPI for Performance */
uint16_t tput_mbps : 4,
/* ratio of tx buf cnt to every below size buf cnt */
tx_buf_ratio : 5,
/* ratio of rx buf cnt to every below size buf cnt */
rx_buf_ratio : 5,
rsv0 : 2;
/* ratio of long buf cnt to all buf cnt */
uint32_t long_buf_cnt_ratio : 5,
/* ratio of large buf cnt to all buf cnt */
large_buf_cnt_ratio : 5,
/* ratio of small buf cnt to all buf cnt */
small_buf_cnt_ratio : 5,
/* ratio of short buf cnt to all buf cnt */
short_buf_cnt_ratio : 5,
/* PA cnt, 0-3 */
pa_cnt : 2,
rscv1 : 10;
/* mac zc compens for PLC_PHASE_A/PLC_PHASE_B/PLC_PHASE_C(unit: ntb).
* mp mode: mac_zc_compens = golden_zc_ntb - dev_collect_zc_ntb
* mm mode: zc_ntb(final value) = dev_collect_zc_ntb + mac_zc_compens
*/
int32_t mac_zc_compens[PLC_PHASE_CNT];
} mac_cfg_rw_cco_sta_t;
typedef struct _mac_cfg_ro_pib {
/* power dBuV, see PHY_FULL_PWR_DBUV */
uint32_t pwr_dbuv : 8,
/* 0 - enable auto high power, 1 - disable auto high power */
dis_high_power_req_ena : 1,
/* flag to mark if the "rf_pwr_dbm" field is valid */
rf_pwr_valid : 1,
/* reserved for further use */
rsvd : 14,
/* rf power dbm, see RF_TX_FULL_PWR_DBM */
rf_pwr_dbm : 8;
} mac_cfg_ro_pib_t;
typedef struct _mac_cfg_rw_pib {
/* special mark to make sure config is valid, see MAC_CFG_RW_MARK */
uint32_t mark;
/* cco and sta role configuration */
mac_cfg_rw_cco_sta_t role;
} mac_cfg_rw_pib_t;
typedef struct _mac_cfg_info {
/* read only config point */
mac_cfg_ro_pib_t *ro_cfg; //TODO:
/* read/write config point */
mac_cfg_rw_pib_t *rw_cfg;
} mac_cfg_info_t;
#pragma pack(pop) /* restore the pack status */
/*
* @brief save mac config data to pib
*
* @return: error code, see iot_errno_api.h file
*/
uint32_t mac_cfg_save_pib(void);
/*
* @brief init mac config. get config data from pib, if access
* to fail, set mac config data for the default value.
*
* @return: error code, see iot_errno_api.h file
*/
uint32_t mac_cfg_init(void);
/*
* @brief get mac special config info
*
* @return: 0: normal config, 1: special config
*/
uint8_t mac_cfg_get_special_info(void);
/*
* @brief mac_cfg_get_bcn_def_retry_cnt() - get mac beacon tx default retry
* counter.
* @return: - retry counetr.
*/
uint8_t mac_cfg_get_bcn_def_retry_cnt(void);
/*
* @brief get mac cfg zc compens for phase num
* @param phase_num: mpdu data protocol, eg.
* PLC_PHASE_A/PLC_PHASE_B/PLC_PHASE_C. see plc_protocol.h
* @return: zc compens value for phase num. unit: ntb
*/
int32_t mac_cfg_get_zc_compens(uint8_t phase_num);
/*
* @brief set mac cfg zc compens for phase num
* @param phase_num: mpdu data protocol, eg.
* PLC_PHASE_A/PLC_PHASE_B/PLC_PHASE_C. see plc_protocol.h
* @param zc_compens zc compens value for phase num. unit: ntb
* @return: error code, see iot_errno_api.h file
*/
uint8_t mac_cfg_set_zc_compens(uint8_t phase_num, int32_t zc_compens);
/*
* @brief get auto high power req enable flag
* @return: 0 - enable auto high power, 1 - disable auto high power.
*/
uint8_t mac_cfg_get_auto_high_power_req_ena();
/*
* @brief get auto high power dBuV
* @return: see PHY_FULL_PWR_DBUV
*/
uint8_t mac_cfg_get_auto_high_power_dbuv();
/*
* @brief get auto rf high power dbm
* @return: see RF_TX_FULL_PWR_DBM
*/
int8_t mac_cfg_get_rf_auto_high_power_dbm();
#ifdef __cplusplus
}
#endif
#endif /* MAC_PIB_H */