9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
1160 lines
50 KiB
C
1160 lines
50 KiB
C
|
||
#include "publicdata/public_define.h"
|
||
#include "publicdata/publicdata.h"
|
||
#include "tcp_ser/system_paracfg.h"
|
||
|
||
#if TCP_DEBUG_EN
|
||
|
||
/* 位字段参数类型标识变量 */
|
||
static const uint32_t g_enable_bit_param_marker = 0xE1A2B3C4; /* 使能参数位字段标识 */
|
||
static const uint32_t g_netcomm_bit_param_marker = 0xE2A3B4C5; /* 网络参数位字段标识 */
|
||
|
||
/* 基本参数映射表 */
|
||
static const param_map_item_t basic_param_map[] = {
|
||
{PARAM_BASIC_GUN_COUNT, "gunCount", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_gunCnt, sizeof(g_t_share_data.t_sys_fix_cfg.u8_gunCnt), "枪数量 1/2"},
|
||
|
||
{PARAM_BASIC_RATE_POW, "ratePow", PARAM_TYPE_UINT16,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u16_ratePow, sizeof(g_t_share_data.t_sys_fix_cfg.u16_ratePow), "整桩功率 kW"},
|
||
|
||
{PARAM_BASIC_MAX_VOLT, "maxVolt", PARAM_TYPE_UINT16,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u16_max_volt, sizeof(g_t_share_data.t_sys_fix_cfg.u16_max_volt), "最大输出电压 0.1V"},
|
||
|
||
{PARAM_BASIC_MAX_CUR, "maxCur", PARAM_TYPE_UINT16,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u16_max_cur, sizeof(g_t_share_data.t_sys_fix_cfg.u16_max_cur), "最大输出电流 0.1A"},
|
||
|
||
{PARAM_BASIC_PWD, "pwd", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.u8_pwd, sizeof(g_t_share_data.t_sys_fix_cfg.u8_pwd), "屏幕维护密码"},
|
||
|
||
{PARAM_BASIC_PILE_TYPE, "pileType", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_pile_type, sizeof(g_t_share_data.t_sys_fix_cfg.u8_pile_type), "Unused"},
|
||
|
||
{PARAM_BASIC_TERMINAL_0, "terminal0", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_terminal[0], sizeof(g_t_share_data.t_sys_fix_cfg.u8_terminal[0]), "枪1地址 1~N"},
|
||
|
||
{PARAM_BASIC_TERMINAL_1, "terminal1", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_terminal[1], sizeof(g_t_share_data.t_sys_fix_cfg.u8_terminal[1]), "枪2地址 1~N"},
|
||
|
||
{PARAM_BASIC_LED_TYPE, "ledType", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.e_ledType, sizeof(g_t_share_data.t_sys_fix_cfg.e_ledType), "指示灯类型 0/1"},
|
||
|
||
{PARAM_BASIC_TIME_ZONE, "timeZone", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.e_timeZone, sizeof(g_t_share_data.t_sys_fix_cfg.e_timeZone), "系统时区 0-25 20为东八区"},
|
||
|
||
|
||
{PARAM_BASIC_THRESHOLD_GUN_TEMP, "thresholdGunTemp", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_threshold_gunTemp, sizeof(g_t_share_data.t_sys_fix_cfg.u8_threshold_gunTemp), "Gun temp threshold degC"},
|
||
|
||
{PARAM_BASIC_SOC_LIMIT, "socLimit", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_soc_limit, sizeof(g_t_share_data.t_sys_fix_cfg.u8_soc_limit), "Unused"},
|
||
|
||
{PARAM_BASIC_MIN_VOLT, "minVolt", PARAM_TYPE_UINT16,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u16_min_volt, sizeof(g_t_share_data.t_sys_fix_cfg.u16_min_volt), "最低输出电压 0.1V"},
|
||
|
||
{PARAM_BASIC_TRICKLE_LIMIT, "trickleLimit", PARAM_TYPE_UINT16,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u16_trickle_limit, sizeof(g_t_share_data.t_sys_fix_cfg.u16_trickle_limit), "Unused"},
|
||
|
||
{PARAM_BASIC_MDU_NUM, "mduNum", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_mdu_num, sizeof(g_t_share_data.t_sys_fix_cfg.u8_mdu_num), "模块数量 1~N"},
|
||
|
||
{PARAM_BASIC_MDU_TYPE, "mduType", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_MduType, sizeof(g_t_share_data.t_sys_fix_cfg.u8_MduType), "模块协议类型 0国网 1其他"},
|
||
|
||
{PARAM_BASIC_MDU_TEMP_FLAG, "mduTempFlag", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_mduTemp_flag, sizeof(g_t_share_data.t_sys_fix_cfg.u8_mduTemp_flag), "模块温度获取使能 0/1"},
|
||
|
||
{PARAM_BASIC_MDU_RATED_POW, "mduRatedPow", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_mdu_rated_pow, sizeof(g_t_share_data.t_sys_fix_cfg.u8_mdu_rated_pow), "模块额定功率 kW"},
|
||
|
||
{PARAM_BASIC_MDU_MAX_VOL, "mduMaxVol", PARAM_TYPE_UINT16,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u16_mdu_max_vol, sizeof(g_t_share_data.t_sys_fix_cfg.u16_mdu_max_vol), "模块最高输出电压 0.1V"},
|
||
|
||
{PARAM_BASIC_MDU_MAX_CUR, "mduMaxCur", PARAM_TYPE_UINT16,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u16_mdu_max_cur, sizeof(g_t_share_data.t_sys_fix_cfg.u16_mdu_max_cur), "模块最高输出电流 0.1A"},
|
||
|
||
{PARAM_BASIC_GUN_TYPE_0, "gunType0", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_gun_type[0], sizeof(g_t_share_data.t_sys_fix_cfg.u8_gun_type[0]), "枪1类型 0欧标枪 1国标枪"},
|
||
|
||
{PARAM_BASIC_GUN_TYPE_1, "gunType1", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_gun_type[1], sizeof(g_t_share_data.t_sys_fix_cfg.u8_gun_type[1]), "枪2类型 0欧标枪 1国标枪"},
|
||
|
||
{PARAM_BASIC_GUN_POWER_LIMIT_0, "gunPowerLimit0", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.u8_gun_power_limit[0], sizeof(g_t_share_data.t_sys_fix_cfg.u8_gun_power_limit[0]), "枪1充电功率限制 0表示不限制 单位kW"},
|
||
|
||
{PARAM_BASIC_GUN_POWER_LIMIT_1, "gunPowerLimit1", PARAM_TYPE_UINT8,
|
||
(void *)&g_t_share_data.t_sys_fix_cfg.u8_gun_power_limit[1], sizeof(g_t_share_data.t_sys_fix_cfg.u8_gun_power_limit[1]),
|
||
"Gun2 power limit kW, 0=unlimited"},
|
||
{PARAM_BASIC_PILE_POWER_LIMIT, "pilePowerLimit", PARAM_TYPE_UINT16,
|
||
(void *)&g_t_share_data.t_sys_fix_cfg.u16_pile_power_limit, sizeof(g_t_share_data.t_sys_fix_cfg.u16_pile_power_limit),
|
||
"Pile power limit kW, 0=unlimited"},
|
||
};
|
||
|
||
/* 基本参数映射表大小 */
|
||
#define BASIC_PARAM_MAP_SIZE (sizeof(basic_param_map) / sizeof(basic_param_map[0]))
|
||
|
||
/* 网络参数映射表 */
|
||
static const param_map_item_t network_param_map[] = {
|
||
/* 参数ID, 参数名称, 数据类型, 数据地址, 数据大小, 描述 */
|
||
{PARAM_NETWORK_ETH_IP, "ethIp", PARAM_TYPE_ARRAY,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_ip, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_ip), "本地IP"},
|
||
|
||
{PARAM_NETWORK_ETH_GATE, "ethGate", PARAM_TYPE_ARRAY,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_gate, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_gate), "网关"},
|
||
|
||
{PARAM_NETWORK_ETH_MASK, "ethMask", PARAM_TYPE_ARRAY,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_mask, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_mask), "地址掩码"},
|
||
|
||
{PARAM_NETWORK_ETH_MAC, "ethMac", PARAM_TYPE_ARRAY,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_mac, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_eth_mac), "MAC地址"},
|
||
|
||
{PARAM_NETWORK_SERVER_A_DOMAIN, "serverADomain", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_serverA_domain_name, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_serverA_domain_name), "平台1服务器域名"},
|
||
|
||
{PARAM_NETWORK_SERVER_B_DOMAIN, "serverBDomain", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_serverB_domain_name, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_serverB_domain_name), "平台2服务器域名"},
|
||
|
||
{PARAM_NETWORK_PLAT_A_PILENUM, "platAPileNum", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_platA_pileNum, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_platA_pileNum), "平台1桩编号"},
|
||
|
||
{PARAM_NETWORK_PLAT_B_PILENUM, "platBPileNum", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_platB_pileNum, sizeof(g_t_share_data.t_sys_fix_cfg.s_net_cfg.u8_platB_pileNum), "平台1桩编号"},
|
||
|
||
/* U_NET_COMM_PARA 位字段参数 */
|
||
{PARAM_NETWORK_PROGRAM_TYPE, "programType", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "程序类型 "},
|
||
|
||
{PARAM_NETWORK_NET_A_TYPE, "netAType", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "平台1联网方式 0:4G 1:网线"},
|
||
|
||
{PARAM_NETWORK_NET_B_TYPE, "netBType", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "平台2联网方式 0:4G 1:网线"},
|
||
|
||
{PARAM_NETWORK_PLAT_A_EN, "platAEn", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "平台1使能"},
|
||
|
||
{PARAM_NETWORK_PLAT_B_EN, "platBEn", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "平台2使能"},
|
||
|
||
{PARAM_NETWORK_PLAT_A_TYPE, "platAType", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "平台1类型"},
|
||
|
||
{PARAM_NETWORK_PLAT_B_TYPE, "platBType", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "平台2类型"},
|
||
|
||
{PARAM_NETWORK_SIM_ANP_TYPE, "simAnpType", PARAM_TYPE_BIT,
|
||
(void*)&g_netcomm_bit_param_marker, sizeof(uint32_t), "SIM 卡APN类型 0公网卡 1国网移动 2国网联通 3国网电信"},
|
||
};
|
||
|
||
/* 网络参数映射表大小 */
|
||
#define NETWORK_PARAM_MAP_SIZE (sizeof(network_param_map) / sizeof(network_param_map[0]))
|
||
|
||
/* 电表参数映射表 */
|
||
static const param_map_item_t meter_param_map[] = {
|
||
/* 参数ID, 参数名称, 数据类型, 数据地址, 数据大小, 描述 */
|
||
{PARAM_METER_METER_NUM, "meterNum", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.u8_meter_num, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.u8_meter_num), "电表数量 1~4"},
|
||
|
||
{PARAM_METER_0_IN_GUN, "meter0InGun", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_inGun, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_inGun), "归属枪号 0不存在; 1A枪 2B枪"},
|
||
|
||
{PARAM_METER_0_HIGH_PREC, "meter0HighPrec", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_highPrec, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_highPrec), "是否支持高精度 0/1"},
|
||
|
||
{PARAM_METER_0_IS_AC, "meter0IsAC", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_isAC, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_isAC), "是否为交流表 0直流表 1交流表"},
|
||
|
||
{PARAM_METER_0_ADDR, "meter0Addr", PARAM_TYPE_ARRAY,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_meterAddr, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[0].u8_meterAddr), "电表地址"},
|
||
|
||
{PARAM_METER_1_IN_GUN, "meter1InGun", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_inGun, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_inGun), "归属枪号 0不存在; 1A枪 2B枪"},
|
||
|
||
{PARAM_METER_1_HIGH_PREC, "meter1HighPrec", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_highPrec, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_highPrec), "是否支持高精度 0/1"},
|
||
|
||
{PARAM_METER_1_IS_AC, "meter1IsAC", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_isAC, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_isAC), "是否为交流表 0直流表 1交流表"},
|
||
|
||
{PARAM_METER_1_ADDR, "meter1Addr", PARAM_TYPE_ARRAY,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_meterAddr, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[1].u8_meterAddr), "电表地址"},
|
||
|
||
{PARAM_METER_2_IN_GUN, "meter2InGun", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_inGun, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_inGun), "归属枪号 0不存在; 1A枪 2B枪"},
|
||
|
||
{PARAM_METER_2_HIGH_PREC, "meter2HighPrec", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_highPrec, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_highPrec), "是否支持高精度 0/1"},
|
||
|
||
{PARAM_METER_2_IS_AC, "meter2IsAC", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_isAC, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_isAC), "是否为交流表 0直流表 1交流表"},
|
||
|
||
{PARAM_METER_2_ADDR, "meter2Addr", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_meterAddr, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[2].u8_meterAddr), "电表地址"},
|
||
|
||
{PARAM_METER_3_IN_GUN, "meter3InGun", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_inGun, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_inGun), "归属枪号 0不存在; 1A枪 2B枪"},
|
||
|
||
{PARAM_METER_3_HIGH_PREC, "meter3HighPrec", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_highPrec, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_highPrec), "是否支持高精度 0/1"},
|
||
|
||
{PARAM_METER_3_IS_AC, "meter3IsAC", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_isAC, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_isAC), "是否为交流表 0直流表 1交流表"},
|
||
|
||
{PARAM_METER_3_ADDR, "meter3Addr", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_meterAddr, sizeof(g_t_share_data.t_sys_fix_cfg.s_memter.s_data[3].u8_meterAddr), "电表地址"},
|
||
};
|
||
|
||
/* 电表参数映射表大小 */
|
||
#define METER_PARAM_MAP_SIZE (sizeof(meter_param_map) / sizeof(meter_param_map[0]))
|
||
|
||
/* 使能参数映射表 */
|
||
static const param_map_item_t enable_param_map[] = {
|
||
/* 参数ID, 参数名称, 数据类型, 数据地址, 数据大小, 描述 */
|
||
{PARAM_ENABLE_DOOR_ENABLE, "doorEnable", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "门禁使能(2位)"},
|
||
|
||
{PARAM_ENABLE_GUN_LOCK_ENA, "gunLockEna", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "枪锁使能(2位)"},
|
||
|
||
{PARAM_ENABLE_GUN_LOCK_NEG, "gunLockNeg", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "枪锁信号取反(2位)"},
|
||
|
||
{PARAM_ENABLE_AC_CONTACT_ENA, "acContactEna", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "交流接触器使能(2位)"},
|
||
|
||
{PARAM_ENABLE_GUN_HOMING, "gunHoming", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "枪归位信号有无(2位)"},
|
||
|
||
{PARAM_ENABLE_GB_ENABLE, "gbEnable", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "国标使能(2位)"},
|
||
|
||
{PARAM_ENABLE_LCD_ENABLE, "lcdEnable", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "液晶使能(2位)"},
|
||
|
||
{PARAM_ENABLE_AUX_POWER, "auxPower", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "辅助电压返回状态使能(2位)"},
|
||
|
||
{PARAM_ENABLE_RELIEF_EN, "reliefEn", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "泄放使能(2位)"},
|
||
|
||
{PARAM_ENABLE_YE_LEN_EN, "yeLenEn", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "液冷通讯使能(2位)"},
|
||
|
||
{PARAM_ENABLE_AB_COMM_EN, "abCommEn", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "主副班通讯使能(2位)"},
|
||
|
||
{PARAM_ENABLE_SCREEN_SAVER_EN, "screenSaverEn", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "UI屏保显示使能(2位)"},
|
||
|
||
{PARAM_ENABLE_PLUG_EN, "plugEn", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "即插即充使能(2位)"},
|
||
|
||
{PARAM_ENABLE_UI_ENGLISH_EN, "uiEnglishEn", PARAM_TYPE_BIT,
|
||
(void*)&g_enable_bit_param_marker, sizeof(uint32_t), "UI界面英语使能(2位)"},
|
||
{PARAM_ENABLE_DC_CONTACT_EN, "dcContactEn", PARAM_TYPE_BIT,
|
||
(void *)&g_enable_bit_param_marker, sizeof(uint32_t), "母联接触器使能(2位)"},
|
||
{PARAM_ENABLE_GUN_FAN_EN, "gunFanEn", PARAM_TYPE_BIT,
|
||
(void *)&g_enable_bit_param_marker, sizeof(uint32_t), "充电枪风扇使能(2位)"},
|
||
{PARAM_ENABLE_MDU_ZERO_POW_EN, "mduZeroPowEn", PARAM_TYPE_BIT,
|
||
(void *)&g_enable_bit_param_marker, sizeof(uint32_t), "模块零功脉冲使能(2位)"},
|
||
{PARAM_ENABLE_LED_GB_EN, "ledGbEn", PARAM_TYPE_BIT,
|
||
(void *)&g_enable_bit_param_marker, sizeof(uint32_t), "LED国标使能(2位)"},
|
||
|
||
};
|
||
|
||
/* 使能参数映射表大小 */
|
||
#define ENABLE_PARAM_MAP_SIZE (sizeof(enable_param_map) / sizeof(enable_param_map[0]))
|
||
|
||
/* 费率参数映射表 */
|
||
static const param_map_item_t fee_param_map[] = {
|
||
/* 参数ID, 参数名称, 数据类型, 数据地址, 数据大小, 描述 */
|
||
{PARAM_FEE_MODEL_NO, "feeModelNo", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.s_fee_model.u8_model_no, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.u8_model_no), "费率编号"},
|
||
|
||
{PARAM_FEE_FEE_CNT, "feeCnt", PARAM_TYPE_UINT8,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.u8_feeCnt, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.u8_feeCnt), "费率条数"},
|
||
|
||
/* 费率类型0-29的费率和服务费 */
|
||
{PARAM_FEE_TYPE_0_RATE, "feeType0Rate", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[0].u32_rate, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[0].u32_rate), "费率1电费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_0_SERVICE, "feeType0Service", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[0].u32_sevice, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[0].u32_sevice), "费率1服务费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_1_RATE, "feeType1Rate", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[1].u32_rate, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[1].u32_rate), "费率2电费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_1_SERVICE, "feeType1Service", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[1].u32_sevice, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[1].u32_sevice), "费率2服务费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_2_RATE, "feeType2Rate", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[2].u32_rate, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[2].u32_rate), "费率3电费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_2_SERVICE, "feeType2Service", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[2].u32_sevice, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[2].u32_sevice), "费率3服务费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_3_RATE, "feeType3Rate", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[3].u32_rate, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[3].u32_rate), "费率4电费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_3_SERVICE, "feeType3Service", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[3].u32_sevice, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[3].u32_sevice), "费率4服务费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_4_RATE, "feeType4Rate", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[4].u32_rate, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[4].u32_rate), "费率5电费 0.00001"},
|
||
|
||
{PARAM_FEE_TYPE_4_SERVICE, "feeType4Service", PARAM_TYPE_UINT32,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[4].u32_sevice, sizeof(g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[4].u32_sevice), "费率5服务费 0.00001"},
|
||
|
||
/* 时段费率类型0-95 */
|
||
{PARAM_FEE_TYPE_1_24, "feeTimeType_1_24", PARAM_TYPE_ARRAY,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.u8_fee_type[0], 24, "时段费率类型1-24"},
|
||
{PARAM_FEE_TYPE_25_48, "feeTimeType-25_48", PARAM_TYPE_ARRAY,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.u8_fee_type[24], 24, "时段费率类型25-48"},
|
||
{PARAM_FEE_TYPE_49_72, "feeTimeType_49_72", PARAM_TYPE_ARRAY,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.u8_fee_type[48], 24, "时段费率类型49-72"},
|
||
{PARAM_FEE_TYPE_73_96, "feeTimeType_73_96", PARAM_TYPE_ARRAY,
|
||
(void*)&g_t_share_data.t_sys_var_cfg.s_fee_model.u8_fee_type[72], 24, "时段费率类型73-96"},
|
||
|
||
|
||
};
|
||
|
||
/* 费率参数映射表大小 */
|
||
#define FEE_PARAM_MAP_SIZE (sizeof(fee_param_map) / sizeof(fee_param_map[0]))
|
||
|
||
/* SDK参数映射表 */
|
||
static const param_map_item_t sdk_param_map[] = {
|
||
/* 参数ID, 参数名称, 数据类型, 数据地址, 数据大小, 描述 */
|
||
{PARAM_SDK_PRODUCT_KEY, "productKey", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.s_sdk_data.product_key, sizeof(g_t_share_data.t_sys_var_cfg.s_sdk_data.product_key), "产品秘钥"},
|
||
|
||
{PARAM_SDK_DEVICE_NAME, "deviceName", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.s_sdk_data.device_name, sizeof(g_t_share_data.t_sys_var_cfg.s_sdk_data.device_name), "资产码"},
|
||
|
||
{PARAM_SDK_DEVICE_SECRET, "deviceSecret", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.s_sdk_data.device_secret, sizeof(g_t_share_data.t_sys_var_cfg.s_sdk_data.device_secret), "设备密钥"},
|
||
|
||
{PARAM_SDK_DEVICE_REG_CODE, "deviceRegCode", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.s_sdk_data.device_reg_code, sizeof(g_t_share_data.t_sys_var_cfg.s_sdk_data.device_reg_code), "注册码"},
|
||
|
||
{PARAM_SDK_DEVICE_UID, "deviceUid", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.s_sdk_data.device_uid, sizeof(g_t_share_data.t_sys_var_cfg.s_sdk_data.device_uid), "出厂编码"},
|
||
|
||
{PARAM_SDK_FIRMWARE_VERSION, "firmwareVersion", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.s_sdk_data.firmware_version, sizeof(g_t_share_data.t_sys_var_cfg.s_sdk_data.firmware_version), "固件版本信息"},
|
||
};
|
||
|
||
/* SDK参数映射表大小 */
|
||
#define SDK_PARAM_MAP_SIZE (sizeof(sdk_param_map) / sizeof(sdk_param_map[0]))
|
||
|
||
/* 二维码参数映射表 */
|
||
static const param_map_item_t qrcode_param_map[] = {
|
||
/* 参数ID, 参数名称, 数据类型, 数据地址, 数据大小, 描述 */
|
||
{PARAM_QRCODE_GUN1, "gun1QRCode", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.QRDisplay[0], sizeof(g_t_share_data.t_sys_var_cfg.QRDisplay[0]), "枪1二维码"},
|
||
|
||
{PARAM_QRCODE_GUN2, "gun2QRCode", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.QRDisplay[1], sizeof(g_t_share_data.t_sys_var_cfg.QRDisplay[1]), "枪2二维码"},
|
||
|
||
{PARAM_QRCODE_CUSTOM_VER, "customVersion", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.custom_ver, sizeof(g_t_share_data.t_sys_var_cfg.custom_ver), "定制版本信息"},
|
||
|
||
{PARAM_QRCODE_APN_STR, "apnStr", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.apn_str, sizeof(g_t_share_data.t_sys_var_cfg.apn_str), "4G APN"},
|
||
|
||
{PARAM_QRCODE_OCPP_AUTH_KEY, "ocppAuthKey", PARAM_TYPE_STRING,
|
||
(void*)g_t_share_data.t_sys_var_cfg.ocpp_auth_key, sizeof(g_t_share_data.t_sys_var_cfg.ocpp_auth_key), "OCPP鉴权密钥"},
|
||
};
|
||
|
||
/* 二维码参数映射表大小 */
|
||
#define QRCODE_PARAM_MAP_SIZE (sizeof(qrcode_param_map) / sizeof(qrcode_param_map[0]))
|
||
|
||
/* 获取各参数类型映射表的函数 */
|
||
|
||
/**
|
||
* @brief 获取基本参数映射表
|
||
* @retval 参数映射表指针
|
||
*/
|
||
const param_map_item_t* param_get_basic_map(void)
|
||
{
|
||
return basic_param_map;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取基本参数映射表大小
|
||
* @retval 参数映射表大小
|
||
*/
|
||
uint16_t param_get_basic_map_size(void)
|
||
{
|
||
return BASIC_PARAM_MAP_SIZE;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取网络参数映射表
|
||
* @retval 参数映射表指针
|
||
*/
|
||
const param_map_item_t* param_get_network_map(void)
|
||
{
|
||
return network_param_map;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取网络参数映射表大小
|
||
* @retval 参数映射表大小
|
||
*/
|
||
uint16_t param_get_network_map_size(void)
|
||
{
|
||
return NETWORK_PARAM_MAP_SIZE;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取电表参数映射表
|
||
* @retval 参数映射表指针
|
||
*/
|
||
const param_map_item_t* param_get_meter_map(void)
|
||
{
|
||
return meter_param_map;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取电表参数映射表大小
|
||
* @retval 参数映射表大小
|
||
*/
|
||
uint16_t param_get_meter_map_size(void)
|
||
{
|
||
return METER_PARAM_MAP_SIZE;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取使能参数映射表
|
||
* @retval 参数映射表指针
|
||
*/
|
||
const param_map_item_t* param_get_enable_map(void)
|
||
{
|
||
return enable_param_map;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取使能参数映射表大小
|
||
* @retval 参数映射表大小
|
||
*/
|
||
uint16_t param_get_enable_map_size(void)
|
||
{
|
||
return ENABLE_PARAM_MAP_SIZE;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取费率参数映射表
|
||
* @retval 参数映射表指针
|
||
*/
|
||
const param_map_item_t* param_get_fee_map(void)
|
||
{
|
||
return fee_param_map;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取费率参数映射表大小
|
||
* @retval 参数映射表大小
|
||
*/
|
||
uint16_t param_get_fee_map_size(void)
|
||
{
|
||
return FEE_PARAM_MAP_SIZE;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取SDK参数映射表
|
||
* @retval 参数映射表指针
|
||
*/
|
||
const param_map_item_t* param_get_sdk_map(void)
|
||
{
|
||
return sdk_param_map;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取SDK参数映射表大小
|
||
* @retval 参数映射表大小
|
||
*/
|
||
uint16_t param_get_sdk_map_size(void)
|
||
{
|
||
return SDK_PARAM_MAP_SIZE;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取二维码参数映射表
|
||
* @retval 参数映射表指针
|
||
*/
|
||
const param_map_item_t* param_get_qrcode_map(void)
|
||
{
|
||
return qrcode_param_map;
|
||
}
|
||
|
||
/**
|
||
* @brief 获取二维码参数映射表大小
|
||
* @retval 参数映射表大小
|
||
*/
|
||
uint16_t param_get_qrcode_map_size(void)
|
||
{
|
||
return QRCODE_PARAM_MAP_SIZE;
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* @brief 将参数类型枚举转换为字符串
|
||
* @param type 参数类型枚举
|
||
* @retval 类型字符串
|
||
*/
|
||
const char* param_type_to_string(param_data_type_t type)
|
||
{
|
||
switch (type) {
|
||
case PARAM_TYPE_STRING: return "string";
|
||
case PARAM_TYPE_UINT8: return "uint8";
|
||
case PARAM_TYPE_UINT16: return "uint16";
|
||
case PARAM_TYPE_UINT32: return "uint32";
|
||
case PARAM_TYPE_FLOAT: return "float";
|
||
case PARAM_TYPE_INT: return "int";
|
||
case PARAM_TYPE_ARRAY: return "array";
|
||
case PARAM_TYPE_BIT: return "bit";
|
||
default: return "unknown";
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief 根据参数ID获取或设置使能参数的位字段值
|
||
* @param param_id 参数ID(param_enable_enum_t枚举值)
|
||
* @param op_flag 操作标志:0为获取数据,1为设置数据
|
||
* @param value 当op_flag=1时,要设置的值;当op_flag=0时,忽略此参数
|
||
* @retval 当op_flag=0时返回位字段值(0-3,因为每个位字段是2位),当op_flag=1时返回0表示成功,非0表示失败
|
||
*/
|
||
uint32_t param_get_enable_bit_value(uint16_t param_id, uint8_t op_flag, uint32_t value)
|
||
{
|
||
/* 直接访问U_ENABLE_FALG结构体中的位字段成员 */
|
||
switch (param_id) {
|
||
case PARAM_ENABLE_DOOR_ENABLE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_doorEnable;
|
||
} else {
|
||
if (value > 3) return 1; /* 值超出范围(2位最大为3) */
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_doorEnable = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_GUN_LOCK_ENA:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunLockEna;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunLockEna = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_GUN_LOCK_NEG:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunLockNeg;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunLockNeg = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_AC_CONTACT_ENA:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_AcContactEna;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_AcContactEna = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_GUN_HOMING:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunHoming;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunHoming = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_GB_ENABLE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_GBEnable;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_GBEnable = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_LCD_ENABLE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_LcdEnable;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_LcdEnable = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_AUX_POWER:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_auxpower;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_auxpower = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_RELIEF_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_reliefen;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_reliefen = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_YE_LEN_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_YeLenEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_YeLenEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_AB_COMM_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_ABcommEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_ABcommEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_SCREEN_SAVER_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_ScreenSaverEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_ScreenSaverEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_PLUG_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_PlugEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_PlugEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_UI_ENGLISH_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_uiEnglishEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_uiEnglishEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_DC_CONTACT_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_dcBusEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_dcBusEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_GUN_FAN_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunFanEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_gunFanEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_MDU_ZERO_POW_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_mduzeropowEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_mduzeropowEn = value;
|
||
return 0;
|
||
}
|
||
case PARAM_ENABLE_LED_GB_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_ledGbEn;
|
||
} else {
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_ledGbEn = value;
|
||
return 0;
|
||
}
|
||
default:
|
||
return 0; /* 未知参数ID */
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief 根据参数ID获取或设置网络连接参数的位字段值
|
||
* @param param_id 参数ID(param_network_enum_t枚举值)
|
||
* @param op_flag 操作标志:0为获取数据,1为设置数据
|
||
* @param value 当op_flag=1时,要设置的值;当op_flag=0时,忽略此参数
|
||
* @retval 当op_flag=0时返回位字段值,当op_flag=1时返回0表示成功,非0表示失败
|
||
*/
|
||
uint32_t param_get_netcomm_bit_value(uint16_t param_id, uint8_t op_flag, uint32_t value)
|
||
{
|
||
/* 直接访问U_NET_COMM_PARA结构体中的位字段成员 */
|
||
switch (param_id) {
|
||
case PARAM_NETWORK_PROGRAM_TYPE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_program_type;
|
||
} else {
|
||
/* program_type是2位字段,最大值为3 */
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_program_type = value;
|
||
return 0;
|
||
}
|
||
case PARAM_NETWORK_NET_A_TYPE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_netA_type;
|
||
} else {
|
||
/* netA_type是2位字段,最大值为3 */
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_netA_type = value;
|
||
return 0;
|
||
}
|
||
case PARAM_NETWORK_NET_B_TYPE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_netB_type;
|
||
} else {
|
||
/* netB_type是2位字段,最大值为3 */
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_netB_type = value;
|
||
return 0;
|
||
}
|
||
case PARAM_NETWORK_PLAT_A_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platA_en;
|
||
} else {
|
||
/* platA_en是1位字段,最大值为1 */
|
||
if (value > 1) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platA_en = value;
|
||
return 0;
|
||
}
|
||
case PARAM_NETWORK_PLAT_B_EN:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platB_en;
|
||
} else {
|
||
/* platB_en是1位字段,最大值为1 */
|
||
if (value > 1) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platB_en = value;
|
||
return 0;
|
||
}
|
||
case PARAM_NETWORK_PLAT_A_TYPE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platA_type;
|
||
} else {
|
||
/* platA_type是2位字段,最大值为3 */
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platA_type = value;
|
||
return 0;
|
||
}
|
||
case PARAM_NETWORK_PLAT_B_TYPE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platB_type;
|
||
} else {
|
||
/* platB_type是2位字段,最大值为3 */
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_platB_type = value;
|
||
return 0;
|
||
}
|
||
case PARAM_NETWORK_SIM_ANP_TYPE:
|
||
if (op_flag == 0) {
|
||
return g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_sim_anp_type;
|
||
} else {
|
||
/* sim_anp_type是2位字段,最大值为3 */
|
||
if (value > 3) return 1;
|
||
g_t_share_data.t_sys_fix_cfg.s_net_cfg.u_net_comm_para.bits.bit_sim_anp_type = value;
|
||
return 0;
|
||
}
|
||
default:
|
||
return 0; /* 未知参数ID */
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief 根据参数映射表项获取参数值字符串
|
||
* @param item 参数映射表项
|
||
* @param buffer 输出缓冲区
|
||
* @param size 缓冲区大小
|
||
* @retval 0成功,-1失败
|
||
*/
|
||
int param_get_value_as_string(const param_map_item_t *item, char *buffer, uint32_t size)
|
||
{
|
||
if (item == NULL || buffer == NULL || size == 0) {
|
||
return -1;
|
||
}
|
||
|
||
switch (item->data_type) {
|
||
case PARAM_TYPE_STRING:
|
||
snprintf(buffer, size, "%s", (char*)item->data_addr);
|
||
break;
|
||
|
||
case PARAM_TYPE_UINT8:
|
||
snprintf(buffer, size, "%u", *(uint8_t*)item->data_addr);
|
||
break;
|
||
|
||
case PARAM_TYPE_UINT16:
|
||
snprintf(buffer, size, "%u", *(uint16_t*)item->data_addr);
|
||
break;
|
||
|
||
case PARAM_TYPE_UINT32:
|
||
snprintf(buffer, size, "%u", *(uint32_t*)item->data_addr);
|
||
break;
|
||
|
||
case PARAM_TYPE_FLOAT:
|
||
snprintf(buffer, size, "%.2f", *(float*)item->data_addr);
|
||
break;
|
||
|
||
case PARAM_TYPE_INT:
|
||
snprintf(buffer, size, "%d", *(int*)item->data_addr);
|
||
break;
|
||
|
||
case PARAM_TYPE_ARRAY: {
|
||
/* 数组类型:显示为十进制字节序列 */
|
||
uint8_t *data = (uint8_t*)item->data_addr;
|
||
uint32_t data_size = item->data_size;
|
||
uint32_t i;
|
||
char *ptr = buffer;
|
||
uint32_t remaining = size;
|
||
|
||
if (data_size == 0) {
|
||
snprintf(buffer, size, "[]");
|
||
break;
|
||
}
|
||
|
||
/* 开始构建数组字符串 */
|
||
*ptr++ = '[';
|
||
remaining--;
|
||
|
||
for (i = 0; i < data_size; i++) {
|
||
/* 检查剩余空间是否足够 */
|
||
if (remaining < 10) { /* 预留空间给当前数字和可能的逗号、结束符 */
|
||
/* 如果空间不足,用"..."表示剩余内容 */
|
||
if (remaining >= 4) {
|
||
strcpy(ptr, "...");
|
||
ptr += 3;
|
||
remaining -= 3;
|
||
}
|
||
break;
|
||
}
|
||
|
||
if (i > 0) {
|
||
*ptr++ = ',';
|
||
remaining--;
|
||
}
|
||
|
||
/* 格式化当前数字 */
|
||
int written = snprintf(ptr, remaining, "%d", data[i]);
|
||
if (written < 0 || written >= (int)remaining) {
|
||
/* 格式化失败,用"..."表示剩余内容 */
|
||
if (remaining >= 4) {
|
||
strcpy(ptr, "...");
|
||
ptr += 3;
|
||
remaining -= 3;
|
||
}
|
||
break;
|
||
}
|
||
ptr += written;
|
||
remaining -= written;
|
||
}
|
||
|
||
/* 添加结束括号 */
|
||
if (remaining >= 2) {
|
||
*ptr++ = ']';
|
||
*ptr = '\0';
|
||
} else {
|
||
/* 如果空间不足,确保字符串以空字符结尾 */
|
||
if (size > 0) {
|
||
buffer[size - 1] = '\0';
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
|
||
case PARAM_TYPE_BIT: {
|
||
/* 检查是否为使能参数的位字段 */
|
||
if (item->data_addr == (void*)&g_enable_bit_param_marker) {
|
||
/* 使用param_get_enable_bit_value函数获取值(操作标志为0) */
|
||
uint32_t bit_value = param_get_enable_bit_value(item->param_id, 0, 0);
|
||
/* 显示为十进制 */
|
||
snprintf(buffer, size, "%u", bit_value);
|
||
return 0;
|
||
}
|
||
/* 检查是否为网络连接参数的位字段 */
|
||
else if (item->data_addr == (void*)&g_netcomm_bit_param_marker) {
|
||
/* 使用param_get_netcomm_bit_value函数获取值(操作标志为0) */
|
||
uint32_t bit_value = param_get_netcomm_bit_value(item->param_id, 0, 0);
|
||
/* 显示为十进制 */
|
||
snprintf(buffer, size, "%u", bit_value);
|
||
return 0;
|
||
}
|
||
else {
|
||
/* data_addr为NULL且不是标记变量的位字段参数 */
|
||
snprintf(buffer, size, "N/A");
|
||
return -1;
|
||
}
|
||
break;
|
||
}
|
||
|
||
default:
|
||
snprintf(buffer, size, "unknown");
|
||
return -1;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* @brief 根据参数映射表项设置参数值(从字符串)
|
||
* @param item 参数映射表项
|
||
* @param value_str 参数值字符串
|
||
* @retval 0成功,-1失败
|
||
*/
|
||
int param_set_value_from_string(const param_map_item_t *item, const char *value_str)
|
||
{
|
||
if (item == NULL || value_str == NULL) {
|
||
return -1;
|
||
}
|
||
|
||
switch (item->data_type) {
|
||
case PARAM_TYPE_STRING:
|
||
/* 字符串类型:直接复制,确保不超过缓冲区大小 */
|
||
if (item->data_addr == NULL) {
|
||
printf("[PARAM] String parameter data_addr is NULL: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
strncpy((char*)item->data_addr, value_str, item->data_size - 1);
|
||
((char*)item->data_addr)[item->data_size - 1] = '\0';
|
||
break;
|
||
|
||
case PARAM_TYPE_UINT8: {
|
||
/* uint8类型:转换为整数 */
|
||
if (item->data_addr == NULL) {
|
||
printf("[PARAM] UINT8 parameter data_addr is NULL: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
char *endptr;
|
||
long value = strtol(value_str, &endptr, 0);
|
||
if (endptr == value_str || *endptr != '\0') {
|
||
return -1; /* 转换失败 */
|
||
}
|
||
if (value < 0 || value > 255) {
|
||
return -1; /* 超出范围 */
|
||
}
|
||
*(uint8_t*)item->data_addr = (uint8_t)value;
|
||
break;
|
||
}
|
||
|
||
case PARAM_TYPE_UINT16: {
|
||
/* uint16类型:转换为整数 */
|
||
if (item->data_addr == NULL) {
|
||
printf("[PARAM] UINT16 parameter data_addr is NULL: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
char *endptr;
|
||
long value = strtol(value_str, &endptr, 0);
|
||
if (endptr == value_str || *endptr != '\0') {
|
||
return -1; /* 转换失败 */
|
||
}
|
||
if (value < 0 || value > 65535) {
|
||
return -1; /* 超出范围 */
|
||
}
|
||
*(uint16_t*)item->data_addr = (uint16_t)value;
|
||
break;
|
||
}
|
||
|
||
case PARAM_TYPE_UINT32: {
|
||
/* uint32类型:转换为整数 */
|
||
if (item->data_addr == NULL) {
|
||
printf("[PARAM] UINT32 parameter data_addr is NULL: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
char *endptr;
|
||
unsigned long value = strtoul(value_str, &endptr, 0);
|
||
if (endptr == value_str || *endptr != '\0') {
|
||
return -1; /* 转换失败 */
|
||
}
|
||
if (value > 0xFFFFFFFFUL) {
|
||
return -1; /* 超出范围 */
|
||
}
|
||
*(uint32_t*)item->data_addr = (uint32_t)value;
|
||
break;
|
||
}
|
||
|
||
case PARAM_TYPE_FLOAT: {
|
||
/* 浮点类型:转换为浮点数 */
|
||
if (item->data_addr == NULL) {
|
||
printf("[PARAM] FLOAT parameter data_addr is NULL: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
char *endptr;
|
||
float value = strtof(value_str, &endptr);
|
||
if (endptr == value_str || *endptr != '\0') {
|
||
return -1; /* 转换失败 */
|
||
}
|
||
*(float*)item->data_addr = value;
|
||
break;
|
||
}
|
||
|
||
case PARAM_TYPE_INT: {
|
||
/* 整数类型:转换为整数 */
|
||
if (item->data_addr == NULL) {
|
||
printf("[PARAM] INT parameter data_addr is NULL: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
char *endptr;
|
||
long value = strtol(value_str, &endptr, 0);
|
||
if (endptr == value_str || *endptr != '\0') {
|
||
return -1; /* 转换失败 */
|
||
}
|
||
*(int*)item->data_addr = (int)value;
|
||
break;
|
||
}
|
||
|
||
case PARAM_TYPE_ARRAY: {
|
||
/* 数组类型:解析逗号分隔的十进制整数数组 */
|
||
if (item->data_addr == NULL) {
|
||
printf("[PARAM] ARRAY parameter data_addr is NULL: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
uint8_t *data = (uint8_t*)item->data_addr;
|
||
uint32_t data_size = item->data_size;
|
||
const char *ptr = value_str;
|
||
uint32_t index = 0;
|
||
|
||
/* 跳过开头的'['(如果有) */
|
||
if (*ptr == '[') {
|
||
ptr++;
|
||
}
|
||
|
||
while (*ptr != '\0' && index < data_size) {
|
||
/* 跳过空格 */
|
||
while (*ptr == ' ' || *ptr == '\t' || *ptr == '\n' || *ptr == '\r') {
|
||
ptr++;
|
||
}
|
||
|
||
if (*ptr == '\0' || *ptr == ']') {
|
||
break;
|
||
}
|
||
|
||
/* 解析数字 */
|
||
char *endptr;
|
||
long value = strtol(ptr, &endptr, 0);
|
||
if (endptr == ptr) {
|
||
return -1; /* 转换失败 */
|
||
}
|
||
|
||
if (value < 0 || value > 255) {
|
||
return -1; /* 超出范围 */
|
||
}
|
||
|
||
data[index++] = (uint8_t)value;
|
||
ptr = endptr;
|
||
|
||
/* 跳过逗号 */
|
||
//while (*ptr == ' ' || *ptr == '\t' || *ptr == '\n' || *ptr == '\r') {
|
||
while (*ptr == '\t' || *ptr == '\n' || *ptr == '\r') {
|
||
ptr++;
|
||
}
|
||
if (*ptr == ',') {
|
||
ptr++;
|
||
}
|
||
}
|
||
|
||
/* 填充剩余部分为0 */
|
||
while (index < data_size) {
|
||
data[index++] = 0;
|
||
}
|
||
break;
|
||
}
|
||
|
||
case PARAM_TYPE_BIT: {
|
||
/* 位字段类型:支持二进制(0b开头)或十进制格式 */
|
||
char *endptr;
|
||
unsigned long value;
|
||
|
||
/* 检查是否为二进制格式 */
|
||
if (value_str[0] == '0' && (value_str[1] == 'b' || value_str[1] == 'B')) {
|
||
/* 二进制格式:解析二进制字符串 */
|
||
value = strtoul(value_str + 2, &endptr, 2);
|
||
} else {
|
||
/* 十进制格式 */
|
||
value = strtoul(value_str, &endptr, 0);
|
||
}
|
||
|
||
if (endptr == value_str || *endptr != '\0') {
|
||
return -1; /* 转换失败 */
|
||
}
|
||
|
||
/* 通过data_addr指向的全局变量来区分参数类型 */
|
||
if (item->data_addr == (void*)&g_enable_bit_param_marker) {
|
||
/* 使能参数的位字段:使用param_get_enable_bit_value函数设置值(操作标志为1) */
|
||
uint32_t result = param_get_enable_bit_value(item->param_id, 1, (uint32_t)value);
|
||
if (result != 0) {
|
||
printf("[PARAM] Failed to set enable bit field %s to value %lu\n", item->param_name, value);
|
||
return -1;
|
||
}
|
||
return 0;
|
||
}
|
||
/* 检查是否为网络连接参数的位字段 */
|
||
else if (item->data_addr == (void*)&g_netcomm_bit_param_marker) {
|
||
/* 网络连接参数的位字段:使用param_get_netcomm_bit_value函数设置值(操作标志为1) */
|
||
uint32_t result = param_get_netcomm_bit_value(item->param_id, 1, (uint32_t)value);
|
||
if (result != 0) {
|
||
printf("[PARAM] Failed to set netcomm bit field %s to value %lu\n", item->param_name, value);
|
||
return -1;
|
||
}
|
||
return 0;
|
||
}
|
||
/* 其他位字段参数(data_addr不为NULL且不是标记变量) */
|
||
else if (item->data_addr != NULL) {
|
||
/* 普通位字段参数:直接设置内存中的值 */
|
||
|
||
/* 根据数据大小设置值 */
|
||
if (item->data_size == sizeof(uint8_t)) {
|
||
if (value > 0xFF) {
|
||
return -1; /* 超出范围 */
|
||
}
|
||
*(uint8_t*)item->data_addr = (uint8_t)value;
|
||
} else if (item->data_size == sizeof(uint16_t)) {
|
||
if (value > 0xFFFF) {
|
||
return -1; /* 超出范围 */
|
||
}
|
||
*(uint16_t*)item->data_addr = (uint16_t)value;
|
||
} else if (item->data_size == sizeof(uint32_t)) {
|
||
if (value > 0xFFFFFFFFUL) {
|
||
return -1; /* 超出范围 */
|
||
}
|
||
*(uint32_t*)item->data_addr = (uint32_t)value;
|
||
} else {
|
||
return -1; /* 不支持的数据大小 */
|
||
}
|
||
return 0;
|
||
} else {
|
||
/* data_addr为NULL且不是标记变量的位字段参数 */
|
||
printf("[PARAM] Unknown bit field parameter cannot be set: %s\n", item->param_name);
|
||
return -1;
|
||
}
|
||
break;
|
||
}
|
||
|
||
default:
|
||
return -1; /* 不支持的数据类型 */
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* @brief 根据参数ID获取参数映射表项
|
||
* @param param_id 参数ID
|
||
* @retval 参数映射表项指针,NULL表示未找到
|
||
*/
|
||
const param_map_item_t* param_get_map_item_by_id(uint16_t param_id)
|
||
{
|
||
uint16_t i;
|
||
|
||
for (i = 0; i < BASIC_PARAM_MAP_SIZE; i++) {
|
||
if (basic_param_map[i].param_id == param_id) {
|
||
return &basic_param_map[i];
|
||
}
|
||
}
|
||
|
||
return NULL;
|
||
}
|
||
|
||
#endif |