393 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			393 lines
		
	
	
		
			16 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 PLC_CONST_H
							 | 
						||
| 
								 | 
							
								#define PLC_CONST_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "plc_utils.h"
							 | 
						||
| 
								 | 
							
								#include "plc_cert_test.h"
							 | 
						||
| 
								 | 
							
								#include "plc_conn_less.h"
							 | 
						||
| 
								 | 
							
								#include "plc_mac_header.h"
							 | 
						||
| 
								 | 
							
								#include "plc_mac_cfg.h"
							 | 
						||
| 
								 | 
							
								#include "plc_beacon.h"
							 | 
						||
| 
								 | 
							
								#include "plc_fr.h"
							 | 
						||
| 
								 | 
							
								#include "hw_war.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * max logic network number on a single node
							 | 
						||
| 
								 | 
							
								 * shared by SG, SPG(NW), and GP
							 | 
						||
| 
								 | 
							
								 * usually used by security setting
							 | 
						||
| 
								 | 
							
								 * NOTE: must be <= MAX_AVLN_HW_NUM, it's 8 for kunlun
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define MAX_AVLN_NUM            (1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* max logic key table number for an avln
							 | 
						||
| 
								 | 
							
								 * NOTE: must be <= MAX_KEY_TABLE_HW_NUM, it's 4 for kunlun
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define MAX_KEY_TABLE_NUM       (2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* max logic key number for a key table
							 | 
						||
| 
								 | 
							
								 * NOTE: must be <= MAX_KEY_ENTRY_HW_NUM, it's 32 for kunlun
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define MAX_KEY_ENTRY_NUM       (4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAC_QUE_NUM             (24)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ieee1901 */
							 | 
						||
| 
								 | 
							
								#define MAC_HDR_LEN_NO_VAR_I1901    (sizeof(i1901_mac_header_t))
							 | 
						||
| 
								 | 
							
								#define MAC_HDR_LEN_WITH_VAR_I1901  (sizeof(i1901_mac_header_t) \
							 | 
						||
| 
								 | 
							
								    + sizeof(i1901_mac_header_var_t))
							 | 
						||
| 
								 | 
							
								#define MAC_HDR_LEN_WITH_VAR_ADDR_I1901  (MAC_HDR_LEN_WITH_VAR_I1901 \
							 | 
						||
| 
								 | 
							
								    + IOT_MAC_ADDR_LEN * 2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* smart grid */
							 | 
						||
| 
								 | 
							
								#define MAC_HDR_LEN_WITH_ADDR   (sizeof(mac_header_t) + IOT_MAC_ADDR_LEN * 2)
							 | 
						||
| 
								 | 
							
								#define MAC_HDR_LEN_NO_ADDR     (sizeof(mac_header_t))
							 | 
						||
| 
								 | 
							
								#define MAC_HDR_LEN_SHORT       (sizeof(mac_short_header_t))
							 | 
						||
| 
								 | 
							
								#define FC_LEN                  (sizeof(frame_control_t))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* MAC layer required reserved len when sending data through mac_send_msdu_ex */
							 | 
						||
| 
								 | 
							
								#define MAC_REQ_HEAD_RSVD_LEN   (FC_LEN + 16)
							 | 
						||
| 
								 | 
							
								#define MAC_REQ_TAIL_RSVD_LEN   (4)
							 | 
						||
| 
								 | 
							
								#define MME_HEAD_RESERVE_LEN    (MAC_REQ_HEAD_RSVD_LEN)
							 | 
						||
| 
								 | 
							
								#define MME_TAIL_RESERVE_LEN    (MAC_REQ_TAIL_RSVD_LEN)
							 | 
						||
| 
								 | 
							
								#define APP_HEAD_RESERVE_LEN    (MAC_REQ_HEAD_RSVD_LEN + MAC_HDR_LEN_WITH_ADDR)
							 | 
						||
| 
								 | 
							
								#define APP_TAIL_RESERVE_LEN    (MAC_REQ_TAIL_RSVD_LEN)
							 | 
						||
| 
								 | 
							
								#define APP_HEAD_CONN_LESS_RESERVE_LEN   \
							 | 
						||
| 
								 | 
							
								    (APP_HEAD_RESERVE_LEN + sizeof(cert_test_t) + sizeof(plc_conn_less_hdr_t))
							 | 
						||
| 
								 | 
							
								#define APP_HEAD_SILA_NHM_RESERVE_LEN    \
							 | 
						||
| 
								 | 
							
								    (APP_HEAD_RESERVE_LEN + sizeof(nhm_header_t))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* southern power grid */
							 | 
						||
| 
								 | 
							
								#define MAC_LONG_HDR_LEN_SPG      \
							 | 
						||
| 
								 | 
							
								    (sizeof(spg_mac_header_t) + sizeof(spg_mac_lheader_tail_t))
							 | 
						||
| 
								 | 
							
								#define MAC_SHORT_HDR_LEN_SPG     (sizeof(spg_mac_header_t))
							 | 
						||
| 
								 | 
							
								#define MAC_SINGLE_HOP_HDR_LEN_SPG (sizeof(spg_mac_short_header_t))
							 | 
						||
| 
								 | 
							
								#define MSDU_LONG_HDR_LEN_SPG     (sizeof(spg_msdu_lfrm_t))
							 | 
						||
| 
								 | 
							
								#define MSDU_SHORT_HDR_LEN_SPG    (sizeof(spg_msdu_sfrm_t))
							 | 
						||
| 
								 | 
							
								#define FC_LEN_SPG                (sizeof(spg_frame_control_t))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAC_REQ_HEAD_RSVD_LEN_SPG (FC_LEN_SPG + 16)
							 | 
						||
| 
								 | 
							
								#define MAC_REQ_TAIL_RSVD_LEN_SPG (4)
							 | 
						||
| 
								 | 
							
								#define MME_HEAD_RESERVE_LEN_SPG  (MAC_REQ_HEAD_RSVD_LEN_SPG)
							 | 
						||
| 
								 | 
							
								#define MME_TAIL_RESERVE_LEN_SPG  (MAC_REQ_TAIL_RSVD_LEN_SPG)
							 | 
						||
| 
								 | 
							
								#define APP_HEAD_RESERVE_LEN_SPG  \
							 | 
						||
| 
								 | 
							
								    (MAC_REQ_HEAD_RSVD_LEN_SPG + MAC_LONG_HDR_LEN_SPG + MSDU_LONG_HDR_LEN_SPG \
							 | 
						||
| 
								 | 
							
								    + 16)
							 | 
						||
| 
								 | 
							
								#define APP_TAIL_RESERVE_LEN_SPG  (MAC_REQ_TAIL_RSVD_LEN_SPG)
							 | 
						||
| 
								 | 
							
								#define APP_HEAD_CONN_LESS_RESERVE_LEN_SPG   \
							 | 
						||
| 
								 | 
							
								    (APP_HEAD_RESERVE_LEN_SPG + sizeof(spg_cert_test_hdr_t) + \
							 | 
						||
| 
								 | 
							
								    sizeof(plc_conn_less_hdr_t))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 1901 */
							 | 
						||
| 
								 | 
							
								#define FC_LEN_1901               FC_LEN
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define PLC_PDEV_ID                     0           // PLC default pDEV id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define RF_PDEV_ID                      0           // rf default PDEV id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define PLC_DEFAULT_VDEV                0
							 | 
						||
| 
								 | 
							
								#define PLC_INV_DBG_PKT_MODE_VDEV_ID    0xFF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define PLC_MAX_PB_PER_MPDU     4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* give smallest number, which is -128 */
							 | 
						||
| 
								 | 
							
								#define INVALID_SNR             (-128)
							 | 
						||
| 
								 | 
							
								/* give smallest number, which is -128 */
							 | 
						||
| 
								 | 
							
								#define INVALID_RSSI            (-128)
							 | 
						||
| 
								 | 
							
								/* give largest number, which is 127 */
							 | 
						||
| 
								 | 
							
								#define MAX_SNR                 (127)
							 | 
						||
| 
								 | 
							
								/* highest available snr */
							 | 
						||
| 
								 | 
							
								#define SNR_HIGHEST             (90)
							 | 
						||
| 
								 | 
							
								/* lowest available snr */
							 | 
						||
| 
								 | 
							
								#define SNR_LOWEST              (-10)
							 | 
						||
| 
								 | 
							
								/* update snr max threshold value */
							 | 
						||
| 
								 | 
							
								#define MAX_FD_SNR              (20)
							 | 
						||
| 
								 | 
							
								/* update snr min threshold value */
							 | 
						||
| 
								 | 
							
								#define MIN_FD_SNR              (-10)
							 | 
						||
| 
								 | 
							
								/* update rf snr max threshold value */
							 | 
						||
| 
								 | 
							
								#define RF_MAX_FD_SNR           (63)
							 | 
						||
| 
								 | 
							
								/* update rf snr max threshold value */
							 | 
						||
| 
								 | 
							
								#define RF_MIN_FD_SNR           (0)
							 | 
						||
| 
								 | 
							
								/* give smallest rf snr number, which is 0 */
							 | 
						||
| 
								 | 
							
								#define RF_INVALID_SNR          (INVALID_SNR)
							 | 
						||
| 
								 | 
							
								/* rf highest snr value in protocal */
							 | 
						||
| 
								 | 
							
								#define RF_SNR_HIGHEST          (90)
							 | 
						||
| 
								 | 
							
								/* rf lowest snr value in protocal */
							 | 
						||
| 
								 | 
							
								#define RF_SNR_LOWEST           (-10)
							 | 
						||
| 
								 | 
							
								/* highest available rssi */
							 | 
						||
| 
								 | 
							
								#define RF_RSSI_HIGHEST         (-10)
							 | 
						||
| 
								 | 
							
								/* lowest available rssi */
							 | 
						||
| 
								 | 
							
								#define RF_RSSI_LOWEST          (-110)
							 | 
						||
| 
								 | 
							
								/* define rf tx power max value for smart power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_PWR_MAX_DBM_NSG       (20)
							 | 
						||
| 
								 | 
							
								/* define rf tx power min value for smart power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_PWR_MIN_DBM_NSG       (-35)
							 | 
						||
| 
								 | 
							
								/* define rf tx power default value for smart power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_PWR_DEF_DBM_NSG       (10)
							 | 
						||
| 
								 | 
							
								/* define rf tx full power value for smart power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_FULL_PWR_DBM_NSG      (15)
							 | 
						||
| 
								 | 
							
								/* define rf tx power max value for overseas power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_PWR_MAX_DBM_OVERSEAS  (8)
							 | 
						||
| 
								 | 
							
								/* define rf tx power min value for overseas power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_PWR_MIN_DBM_OVERSEAS  (-35)
							 | 
						||
| 
								 | 
							
								/* define rf tx power default value for overseas power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_PWR_DEF_DBM_OVERSEAS  (8)
							 | 
						||
| 
								 | 
							
								/* define rf tx full power value for overseas power grid */
							 | 
						||
| 
								 | 
							
								#define RF_TX_FULL_PWR_DBM_OVERSEAS (8)
							 | 
						||
| 
								 | 
							
								/* define rf loopback tx power value */
							 | 
						||
| 
								 | 
							
								#define RF_TX_LOOPBACK_PWR_DBM  (5)
							 | 
						||
| 
								 | 
							
								/* define rf tx power invalid value */
							 | 
						||
| 
								 | 
							
								#define RF_TX_PWR_INVALID       (-128)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* war for qianjing sack snr alway queal 100 */
							 | 
						||
| 
								 | 
							
								#define WAR_QJWY_SNR_INPUT      (100)
							 | 
						||
| 
								 | 
							
								#define WAR_QJWY_SNR_OUTPUT     (0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* calculate ppm parameter. 1 << 20 meanse 1million */
							 | 
						||
| 
								 | 
							
								#define PPM_CALC_MILLION_SHIFT  (20)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* max ppm supported, if in this range, we try to re-cal */
							 | 
						||
| 
								 | 
							
								#define PLC_MAX_PPM_SUPPORT     (250)
							 | 
						||
| 
								 | 
							
								/* ntb ppm shift bit, ntb_ppm_accuracy = 1/(1 << 6) ppm */
							 | 
						||
| 
								 | 
							
								#define PLC_NTB_PPM_SHIFT       (6)
							 | 
						||
| 
								 | 
							
								/* register ppm shift bit, reg_ppm_accuracy = 1/(1 << 4) ppm */
							 | 
						||
| 
								 | 
							
								#define PLC_REG_PPM_SHIFT       (4)
							 | 
						||
| 
								 | 
							
								/* max mac ntb supported */
							 | 
						||
| 
								 | 
							
								#define PLC_MAX_MAC_NTB_PPM     \
							 | 
						||
| 
								 | 
							
								    ((PLC_MAX_PPM_SUPPORT) << (PLC_NTB_PPM_SHIFT))
							 | 
						||
| 
								 | 
							
								/* the max ppm for sync ntb beacon */
							 | 
						||
| 
								 | 
							
								#define PLC_SYNC_NTB_MAX_PPM    (50 << PLC_NTB_PPM_SHIFT)
							 | 
						||
| 
								 | 
							
								/* the max ppm for rf sync ntb beacon */
							 | 
						||
| 
								 | 
							
								#define RF_SYNC_NTB_MAX_PPM     (50 << PLC_NTB_PPM_SHIFT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* hw ppm available snr */
							 | 
						||
| 
								 | 
							
								#define PLC_HW_PPM_AVL_SNR      (20)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if (HW_PLATFORM != HW_PLATFORM_SIMU)
							 | 
						||
| 
								 | 
							
								/* KPI for Performance */
							 | 
						||
| 
								 | 
							
								#if PLC_SUPPORT_CCO_ROLE
							 | 
						||
| 
								 | 
							
								#if (IOT_FLASH_BUILD)
							 | 
						||
| 
								 | 
							
								#if RUN_IN_PSRAM
							 | 
						||
| 
								 | 
							
								#if (IOT_PSRAM_SIZE >= 4)
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (6)     // x1 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (50)    /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (140)   /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (6)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#else /* (IOT_PSRAM_SIZE >= 4) */
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (6)     // x1 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (30)    /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (100)   /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (6)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#endif /* (IOT_PSRAM_SIZE >= 4) */
							 | 
						||
| 
								 | 
							
								#else /* RUN_IN_PSRAM */
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (1)     // x1 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (5)     /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (10)    /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (1)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#endif /* RUN_IN_PSRAM */
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								/* PSRAM build don't have so much RAM */
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (1)     // x1 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (5)     /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (5)     /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (1)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#elif ((IOT_STA_CONTROL_MODE == IOT_STA_CONTROL_TYPE_STA) || \
							 | 
						||
| 
								 | 
							
								        (IOT_STA_CONTROL_MODE == IOT_STA_CONTROL_TYPE_METER) || \
							 | 
						||
| 
								 | 
							
								        (IOT_STA_CONTROL_MODE == IOT_STA_CONTROL_TYPE_PPM_DETECT) || \
							 | 
						||
| 
								 | 
							
								        IOT_DEV_TEST_CCO_MODE)
							 | 
						||
| 
								 | 
							
								#if RUN_IN_PSRAM
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (6)     // x6 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (50)    /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (100)   /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (6)     /* nmber of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (5/4)   // x1.25 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (6)     /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (21)    /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (4)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#if RUN_IN_PSRAM
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (6)      // x6 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (50)     /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (100)    /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (20)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (1)     // x1 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (6)     /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (20)    /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (1)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#else /* HW_PLATFORM != HW_PLATFORM_SIMU */
							 | 
						||
| 
								 | 
							
								#define PCO_PERFORMANCE_MBPS    (6)     // x6 Mbps
							 | 
						||
| 
								 | 
							
								#define PLC_BCSMA_TOKEN_NUM     (20)    /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define PLC_TDMA_TOKEN_NUM      (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#if PLC_SUPPORT_CCO_ROLE
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (110)   /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (215)   /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#else /* PLC_SUPPORT_CCO_ROLE */
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_MIN_NUM    (6)     /* 2k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_MIN_NUM   (30)    /* 1k buffer minimal requirement */
							 | 
						||
| 
								 | 
							
								#endif /* PLC_SUPPORT_STA_ROLE */
							 | 
						||
| 
								 | 
							
								#endif /* HW_PLATFORM == HW_PLATFORM_SIMU */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* max buf required under KPI */
							 | 
						||
| 
								 | 
							
								#define PCO_RX_DATA_BUF_KB      ((64 * PCO_PERFORMANCE_MBPS) << 10)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if HPLC_RF_DEV_SUPPORT
							 | 
						||
| 
								 | 
							
								#if (PLC_NETWORK_SCALE > 1015)
							 | 
						||
| 
								 | 
							
								/* 3K : reserved for rf discovery node list mme generation */
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_SIZE       (3000)
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_COUNT      (2)
							 | 
						||
| 
								 | 
							
								#elif (PLC_NETWORK_SCALE > 256)
							 | 
						||
| 
								 | 
							
								/* 2K : reserved for rf discovery node list mme generation */
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_SIZE       (PLC_LONG_BUF_SIZE)
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_COUNT      (0)
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								/* 1K : reserved for rf discovery node list mme generation */
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_SIZE       (PLC_LARGE_BUF_SIZE)
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_COUNT      (0)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#else /* HPLC_RF_DEV_SUPPORT */
							 | 
						||
| 
								 | 
							
								#if (PLC_NETWORK_SCALE > 1015)
							 | 
						||
| 
								 | 
							
								/* 3K : reserved for discovery node list mme generation */
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_SIZE       (3000)
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_COUNT      (1)
							 | 
						||
| 
								 | 
							
								#elif (PLC_NETWORK_SCALE > 256)
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_SIZE       (PLC_LONG_BUF_SIZE)
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_COUNT      (0)
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_SIZE       (PLC_SHORT_BUF_SIZE)
							 | 
						||
| 
								 | 
							
								#define PLC_HUGE_BUF_COUNT      (0)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#endif /* HPLC_RF_DEV_SUPPORT */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 2K : 1/16 at least 2 */
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_SIZE       (PLC_HW_RX_BUF_SIZE)
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_BUF_COUNT      ((PCO_RX_DATA_BUF_KB/PLC_LONG_BUF_SIZE / 16) \
							 | 
						||
| 
								 | 
							
								                                    < PLC_LONG_BUF_MIN_NUM ? \
							 | 
						||
| 
								 | 
							
								                                    PLC_LONG_BUF_MIN_NUM : \
							 | 
						||
| 
								 | 
							
								                                    (PCO_RX_DATA_BUF_KB/PLC_LONG_BUF_SIZE / 16))
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_RX_BUF_COUNT   (PLC_LONG_BUF_COUNT / 2)
							 | 
						||
| 
								 | 
							
								#define PLC_LONG_TX_BUF_COUNT   (PLC_LONG_BUF_COUNT - PLC_LONG_RX_BUF_COUNT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 1K : 1/16 */
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_SIZE      (PLC_HW_RX_BUF_SIZE / 2)
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_BUF_COUNT \
							 | 
						||
| 
								 | 
							
								    ((PCO_RX_DATA_BUF_KB/PLC_LARGE_BUF_SIZE / 16) < PLC_LARGE_BUF_MIN_NUM ? \
							 | 
						||
| 
								 | 
							
								    PLC_LARGE_BUF_MIN_NUM : (PCO_RX_DATA_BUF_KB/PLC_LARGE_BUF_SIZE / 16))
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_RX_BUF_COUNT  (PLC_LARGE_BUF_COUNT / 2)
							 | 
						||
| 
								 | 
							
								#define PLC_LARGE_TX_BUF_COUNT  (PLC_LARGE_BUF_COUNT - PLC_LARGE_RX_BUF_COUNT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 136 : 3/8, in rx ring */
							 | 
						||
| 
								 | 
							
								#define PLC_SMALL_BUF_SIZE      (PLC_RX_BUF_RESV_SIZE + 136 + MAC_HW_WAR_RESV_BYTES)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if (PLC_SUPPORT_STA_ROLE && (TARGET_VERSION == TARGET_KUNLUN))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define PLC_SMALL_BUF_COUNT     ((PCO_RX_DATA_BUF_KB/PLC_SMALL_BUF_SIZE / 8 * 3) \
							 | 
						||
| 
								 | 
							
								    - 10)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else /* PLC_SUPPORT_STA_ROLE && (TARGET_VERSION == TARGET_KUNLUN) */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define PLC_SMALL_BUF_COUNT     ((PCO_RX_DATA_BUF_KB/PLC_SMALL_BUF_SIZE / 8 * 3))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* PLC_SUPPORT_STA_ROLE && (TARGET_VERSION == TARGET_KUNLUN) */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define PLC_SMALL_RX_BUF_COUNT  (PLC_SMALL_BUF_COUNT / 2)
							 | 
						||
| 
								 | 
							
								#define PLC_SMALL_TX_BUF_COUNT  (PLC_SMALL_BUF_COUNT - PLC_SMALL_RX_BUF_COUNT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 520 : 4/8, in rx ring */
							 | 
						||
| 
								 | 
							
								/* the rest alloc to 520's buffer size */
							 | 
						||
| 
								 | 
							
								#define PLC_SHORT_BUF_SIZE      (PLC_RX_BUF_RESV_SIZE + 520 \
							 | 
						||
| 
								 | 
							
								            + MAC_HW_WAR_RESV_BYTES + MAC_HW_WAR_SPG_RESV_SHORT_BYTES)
							 | 
						||
| 
								 | 
							
								#define PLC_SHORT_BUF_COUNT     (PCO_RX_DATA_BUF_KB/PLC_SHORT_BUF_SIZE / 8 * 4)
							 | 
						||
| 
								 | 
							
								#define PLC_SHORT_RX_BUF_COUNT  (PLC_SHORT_BUF_COUNT / 2)
							 | 
						||
| 
								 | 
							
								#define PLC_SHORT_TX_BUF_COUNT  (PLC_SHORT_BUF_COUNT - PLC_SHORT_RX_BUF_COUNT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if HPLC_RF_DEV_SUPPORT
							 | 
						||
| 
								 | 
							
								#if RUN_IN_PSRAM
							 | 
						||
| 
								 | 
							
								#define RF_PCO_PERFORMANCE_MBPS (6)
							 | 
						||
| 
								 | 
							
								#else /* RUN_IN_PSRAM */
							 | 
						||
| 
								 | 
							
								#define RF_PCO_PERFORMANCE_MBPS (1)
							 | 
						||
| 
								 | 
							
								#endif /* RUN_IN_PSRAM */
							 | 
						||
| 
								 | 
							
								#else /* HPLC_RF_DEV_SUPPORT */
							 | 
						||
| 
								 | 
							
								#define RF_PCO_PERFORMANCE_MBPS (0)
							 | 
						||
| 
								 | 
							
								#endif /* HPLC_RF_DEV_SUPPORT */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//TODO: fix rf performance base on chip
							 | 
						||
| 
								 | 
							
								#define RF_PCO_RX_DATA_BUF_KB   ((64 * RF_PCO_PERFORMANCE_MBPS) << 10)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 136: 1/2, rf in rx ring buffer */
							 | 
						||
| 
								 | 
							
								#define RF_SMALL_BUF_COUNT      (RF_PCO_RX_DATA_BUF_KB / PLC_SMALL_BUF_SIZE / 2)
							 | 
						||
| 
								 | 
							
								#define RF_SMALL_RX_BUF_COUNT   (RF_SMALL_BUF_COUNT / 2)
							 | 
						||
| 
								 | 
							
								#define RF_SMALL_TX_BUF_COUNT   (RF_SMALL_BUF_COUNT - RF_SMALL_RX_BUF_COUNT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 520: 1/2, rf in rx ring buffer */
							 | 
						||
| 
								 | 
							
								#define RF_SHORT_BUF_COUNT      (RF_PCO_RX_DATA_BUF_KB / PLC_SHORT_BUF_SIZE / 2)
							 | 
						||
| 
								 | 
							
								#define RF_SHORT_RX_BUF_COUNT   (RF_SHORT_BUF_COUNT / 2)
							 | 
						||
| 
								 | 
							
								#define RF_SHORT_TX_BUF_COUNT   (RF_SHORT_BUF_COUNT - RF_SHORT_RX_BUF_COUNT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if RUN_IN_PSRAM
							 | 
						||
| 
								 | 
							
								#define RF_BCSMA_TOKEN_NUM      (20)    /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define RF_TDMA_TOKEN_NUM       (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#define RF_BCSMA_TOKEN_NUM      (1)     /* number of bound CSMA tokens */
							 | 
						||
| 
								 | 
							
								#define RF_TDMA_TOKEN_NUM       (1)     /* number of bound TDMA tokens */
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* AVG pkt len */
							 | 
						||
| 
								 | 
							
								#define PCO_AVG_PKT_LEN_KB      (1) // 1k Byte
							 | 
						||
| 
								 | 
							
								/* MAX Peer NUM support when not dropping packet under KPI */
							 | 
						||
| 
								 | 
							
								#define PCO_PEER_NUM_SUPPORT    \
							 | 
						||
| 
								 | 
							
								    (PCO_RX_DATA_BUF_KB / PCO_AVG_PKT_LEN_KB)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* plc debug pkt mode parameter */
							 | 
						||
| 
								 | 
							
								/* debug pkt mode tx/rx nid */
							 | 
						||
| 
								 | 
							
								#define PLC_DBG_PKT_MODE_NID            0
							 | 
						||
| 
								 | 
							
								/* debug pkt mode default link id */
							 | 
						||
| 
								 | 
							
								#define PLC_DBG_PKT_MODE_DEF_LID        LID_CSMA_CAP3
							 | 
						||
| 
								 | 
							
								/* debug pkt mode default tx/rx phase */
							 | 
						||
| 
								 | 
							
								#define PLC_DBG_PKT_MODE_DEF_PHASE      PLC_PHASE_ALL
							 | 
						||
| 
								 | 
							
								/* rf rssi value */
							 | 
						||
| 
								 | 
							
								#define INV_RSSI_RF                     (INVALID_RSSI)
							 | 
						||
| 
								 | 
							
								#define MAX_RSSI_RF                     (127)
							 | 
						||
| 
								 | 
							
								#define MIN_RSSI_RF                     (-127)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* NTB tick number for each ms */
							 | 
						||
| 
								 | 
							
								#define NTB_TICKS_PER_MS        (25000)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* rf bcn slot tx reserver time, unit: 1us */
							 | 
						||
| 
								 | 
							
								#define RF_BCN_TX_RESERVE_US            (7 * 1000)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif  // PLC_CONST_H
							 |