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 */
 | 
						|
 |