215 lines
7.1 KiB
C
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 */
|
|
|