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

301 lines
9.3 KiB
C
Executable File

/****************************************************************************
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_UNI_CFG_API_H
#define MAC_UNI_CFG_API_H
#include "os_types.h"
#include "mac_rf_scan.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _cfg_data_tlv {
uint32_t type;
uint32_t len;
} cfg_data_tlv;
/* get phy support band range*/
#define PLC_GET_SUPPORT_BAND 0
/* get plc scan band range*/
#define PLC_GET_SCAN_BAND 1
/* type id of cfg */
/* vdev region */
#define PLC_VDEV_CFG 50
#define PLC_VDEV_CFG_SET_SELF_TEI (PLC_VDEV_CFG + 0)
#define PLC_VDEV_CFG_GET_SELF_TEI (PLC_VDEV_CFG + 1)
#define PLC_VDEV_CFG_SET_STA_INFO (PLC_VDEV_CFG + 2)
#define PLC_VDEV_CFG_GET_STA_INFO (PLC_VDEV_CFG + 3)
#define PLC_VDEV_CFG_ADD_D_SUB_STA (PLC_VDEV_CFG + 4)
#define PLC_VDEV_CFG_DELETE_D_SUB_STA (PLC_VDEV_CFG + 5)
#define PLC_VDEV_CFG_SET_BL_NID (PLC_VDEV_CFG + 6)
#define PLC_VDEV_CFG_SET_PREFER_NID (PLC_VDEV_CFG + 7)
#define PLC_VDEV_CFG_SET_FIXED_RATE (PLC_VDEV_CFG + 8)
#define PLC_VDEV_CFG_SET_TX_POWER_CAP (PLC_VDEV_CFG + 9)
#define PLC_VDEV_CFG_SET_NID_ONLY (PLC_VDEV_CFG + 10)
#define PLC_VDEV_CFG_SET_TEI_ONLY (PLC_VDEV_CFG + 11)
#define PLC_VDEV_CFG_DUMP_REQ (PLC_VDEV_CFG + 12)
#define PLC_VDEV_CFG_SET_NW_VALID (PLC_VDEV_CFG + 13)
#define PLC_VDEV_CFG_SET_PM_SAVE_CFG (PLC_VDEV_CFG + 14)
#define PLC_VDEV_CFG_CTL_CHECK_SPUR (PLC_VDEV_CFG + 15)
#define PLC_VDEV_CFG_SET_RF_CHANNEL (PLC_VDEV_CFG + 16)
#define PLC_VDEV_CFG_SET_FORCE_PHASE (PLC_VDEV_CFG + 17)
#define PLC_VDEV_CFG_SET_STA_JOIN (PLC_VDEV_CFG + 18)
#define PLC_VDEV_CFG_SET_HPLC_RF_ASYNC_TX (PLC_VDEV_CFG + 19)
#define PLC_VDEV_CFG_SET_NW_NEGO (PLC_VDEV_CFG + 20)
#define PLC_VDEV_CFG_SET_SEC_KEY (PLC_VDEV_CFG + 21)
#define PLC_VDEV_CFG_SET_FORCE_LINK (PLC_VDEV_CFG + 22)
#define PLC_VDEV_CFG_GET_NID_PPM (PLC_VDEV_CFG + 23)
#define PLC_VDEV_CFG_SET_3PS_OPPOSITE (PLC_VDEV_CFG + 24)
#define PLC_PDEV_CFG 80
#define PLC_PDEV_CFG_SET_BAND (PLC_PDEV_CFG + 0)
#define PLC_PDEV_CFG_SET_SWAGC (PLC_PDEV_CFG + 1)
#define PLC_PDEV_CFG_SET_SCAN_BAND_TBL (PLC_PDEV_CFG + 2)
#define PLC_PDEV_CFG_GET_BAND_TBL (PLC_PDEV_CFG + 3)
#define PLC_PDEV_CFG_SET_RF_SCAN_TBL (PLC_PDEV_CFG + 4)
#define PLC_BL_NID_LIST_MAX 32
/* rate adaptation fixed low rate */
#define PLC_RATE_ADAPT_RATE_LOW 1
/* rate adaptation fixed medium rate */
#define PLC_RATE_ADAPT_RATE_MEDIUM 2
/* rate adaptation fixed high rate */
#define PLC_RATE_ADAPT_RATE_HIGH 3
#define MAC_ENCRYPT_SG_MSDU_AES_CBC 1
#define MAC_ENCRYPT_SG_MSDU_AES_GCM 2
#define MAC_ENCRYPT_SG_MSDU_SM4_CBC 3
#define MAC_ENCRYPT_IEEE1901_1_PB_AES_CBC 4
#define MAC_ENCRYPT_KEY_BIT_LEN_128 128
#define MAC_ENCRYPT_KEY_BIT_LEN_192 192
#define MAC_ENCRYPT_KEY_BIT_LEN_256 256
#define MAC_SEC_KEY_COUNT_MAX 2
#define MAC_SEC_KEY_LEN 32
typedef struct _mac_sec_key {
/* encryption algorithm type, see MAC_ENCRYPT_XXX */
uint8_t encrypt_type :4,
/* encryption key type, see ENCRYPT_KEY_TYPE_xxx */
key_type :2,
/* reserved for future */
rsvd :2;
/* key bit length, see MAC_ENCRYPT_KEY_BIT_LEN_XXX */
uint16_t keybits;
/* this cek corresponds to the following key */
uint8_t cek_seq[MAC_SEC_KEY_COUNT_MAX];
/* key data */
uint8_t key[MAC_SEC_KEY_COUNT_MAX][MAC_SEC_KEY_LEN];
} mac_sec_key_t;
typedef struct _plc_ppm_status {
uint32_t nid;
/* ntb ppm err, unit: 1 ppm */
int16_t ppm_err;
} plc_ppm_status_t;
typedef struct {
cfg_data_tlv hdr;
uint16_t self_tei;
} PLC_VDEV_CFG_SET_SELF_TEI_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint16_t self_tei;
uint16_t proxy_tei;
uint8_t phase;
} PLC_VDEV_CFG_SET_STA_INFO_STRUCT;
typedef struct {
cfg_data_tlv hdr;
tei_t sub_sta;
} PLC_VDEV_CFG_D_SUB_STA_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* number of valid nid in the list */
uint32_t cnt;
/* black list nid */
uint32_t nid[PLC_BL_NID_LIST_MAX];
} PLC_VDEV_CFG_SET_BL_NID_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* preferred nid */
uint32_t nid;
/* preferred proxy tei */
tei_t proxy;
} PLC_VDEV_CFG_SET_PREFER_NID_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* flag to mark if fixed rate enabled */
uint8_t enable;
/* fixed rate level, see PLC_RATE_ADAPT_RATE_XXX*/
uint8_t rate_level;
} PLC_VDEV_CFG_SET_FIXED_RATE_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* flag to mark if hplc power config is valid*/
uint8_t hplc_valid :1,
/* flag to mark if rf power config is valid*/
rf_valid :1,
rsvd :6;
/* hplc tx power cap to be set. unit is 1 dbuv, range 95 - 137 */
uint8_t hplc_power;
/* rf tx power cap to be set. unit is 1 dbm, range -35 - 20 */
int8_t rf_power;
} PLC_VDEV_CFG_SET_TX_POWER_CAP_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint8_t rf_channel; //rf channel
uint8_t rf_option;
} PLC_VDEV_CFG_SET_RF_CHANNEL_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* cco:flag to mark if force phase enabled
* sta/3ps: not used.
*/
uint8_t enable;
/* cco: force phy phase. see PLC_PHASE_xx.
* sta/3ps: force tx switch gpio phase. see PLC_PHASE_xx.
*/
uint8_t phase;
} PLC_VDEV_CFG_SET_FORCE_PHASE_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* flag to mark if sta joined network */
uint8_t join_flag;
} PLC_VDEV_CFG_SET_STA_JOIN_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* flag to mark if 3ps sta physical phase is opposite */
uint8_t opposite_3ps;
} PLC_VDEV_CFG_SET_3PS_OPPOSITE_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint32_t band_id; //band id
} PLC_PDEV_CFG_SET_BANDID_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint32_t nid; //nid
} PLC_PDEV_CFG_SET_NID_ONLY_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint16_t self_tei;
} PLC_PDEV_CFG_SET_TEI_ONLY_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint32_t ena; //ena/dis
} PLC_PDEV_CFG_SET_SWAGC_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* get support band or scan band.
* 0: SUPPORT BAND.
* 1: SCAN BAND.
*/
uint8_t is_scan_band;
/* number of valid band in plc scan table */
uint8_t plc_scan_cnt;
/* plc scan table */
plc_scan_band_t plc_scan_tbl[PLC_SCAN_BAND_MAX_CNT];
} PLC_PDEV_CFG_BAND_RANGE_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* number of valid rf in rf scan table */
uint8_t rf_cnt;
/* rf scan table */
mac_rf_scan_op_chn_t rf_scan_tbl[MAC_RF_SCAN_OP_CHN_MAX];
} PLC_PDEV_CFG_RF_RANGE_STRUCT;
typedef struct {
cfg_data_tlv hdr;
} PLC_VDEV_CFG_DUMP_REQ_STRUCT;
typedef struct {
cfg_data_tlv hdr;
} PLC_VDEV_CFG_SET_NW_VALID_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint8_t allow_sleep;
} PLC_VDEV_CFG_SET_PM_SAVE_CFG_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint8_t is_start;
} PLC_PDEV_CFG_CTL_CK_SPUR_STRUCT;
typedef struct {
cfg_data_tlv hdr;
uint8_t hplc_rf_async_tx;
} PLC_PDEV_CFG_SET_HPLC_RF_ASYNC_TX;
typedef struct {
cfg_data_tlv hdr;
/* flag to mark if neighbour network negotiation enabled */
uint8_t enable;
} PLC_VDEV_CFG_SET_NW_NEGO_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* the security key information */
mac_sec_key_t key_info;
} PLC_VDEV_CFG_SET_SEC_KEY_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* flag to mark if force link enabled */
uint8_t force_link_en : 1,
/* force link type, 1 - force rf, 0 - force hplc */
force_rf_link : 1,
/* reserved for future */
rsvd : 6;
} PLC_VDEV_CFG_SET_FORCE_LINK_STRUCT;
typedef struct {
cfg_data_tlv hdr;
/* number of valid nid ppm */
uint8_t vaild_nid_cnt;
/* point to plc_ppm_status_t nid_ppm_tbl[PLC_MAX_NEIGHBOR_NETWORK] */
void *ppm_tbl;
} PLC_VDEV_CFG_NID_PPM_STRUCT;
// place other cfg in the following
#ifdef __cplusplus
}
#endif
#endif // !MAC_UNI_CFG_API_H