Initial commit: CCU621_M firmware project with BLE debug link support.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,549 @@
|
||||
#include "publicdata/publicdata.h"
|
||||
#include "flash_external_data.h"
|
||||
#include "app_init/task_lock.h"
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
SHARE_DATA_T g_t_share_data; // 全局共享数据定义
|
||||
static SemaphoreHandle_t g_mut_share_data = NULL; // publicdata独立互斥锁
|
||||
|
||||
/* 欧标CAN转PLC 运行时使能:u8_gun_type[gun_no]==0 为欧标使能返回1,否则国标返回0 */
|
||||
U8_T u8_can_plc_enabled(U8_T gun_no)
|
||||
{
|
||||
if (gun_no >= GUN_MAX_CNT)
|
||||
return 0;
|
||||
return (CAN_PLC_FLAG && g_t_share_data.t_sys_fix_cfg.u8_gun_type[gun_no] == 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
|
||||
// 设备型号(字符串常量)
|
||||
const U8_T Device_Model[] = "IES-M";
|
||||
|
||||
const U8_T Software_Version[] = "M_01.00.01"; //主程序版本号用于現場驗收
|
||||
const U8_T Hardware_Version[] = "CCU621M" ; //
|
||||
const U8_T Mcu_model[] = "STM32H563IG";
|
||||
|
||||
const U8_T Parameter_Version[] = "P_00.00.01" ; //参数版本号
|
||||
|
||||
|
||||
|
||||
/***************************************
|
||||
* 函数说明: 线程锁 初始化
|
||||
*
|
||||
*
|
||||
*
|
||||
****************************************/
|
||||
U8_T u8_osMutexNew()
|
||||
{
|
||||
return u8_task_lock_handle_ctrl(&g_mut_share_data, TASK_LOCK_OP_INIT);
|
||||
}
|
||||
/***************************************
|
||||
* 函数说明: 线程锁 上锁
|
||||
*
|
||||
*
|
||||
*
|
||||
****************************************/
|
||||
U8_T u8_mutex_Lock(void)
|
||||
{
|
||||
return u8_task_lock_handle_ctrl(&g_mut_share_data, TASK_LOCK_OP_TAKE);
|
||||
}
|
||||
/***************************************
|
||||
* 函数说明: 线程锁 释放锁
|
||||
*
|
||||
*
|
||||
*
|
||||
****************************************/
|
||||
void v_mutex_unlock()
|
||||
{
|
||||
(void)u8_task_lock_handle_ctrl(&g_mut_share_data, TASK_LOCK_OP_GIVE);
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
函数名称: v_fetch_save_var_cfg_data
|
||||
函数功能: 保存可变配置数据到dataflash,保存三份,具体格式见文件:DATAFLASH空间地址定义
|
||||
头8字节:魔数+CFG_DATA_VERSION_H/L+长度+CRC
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :无
|
||||
**************************************************************/
|
||||
void v_flash_save_var_cfg_data(void)
|
||||
{
|
||||
U8_T u8_head[8];
|
||||
U16_T u16_len, u16_crc, i, j;
|
||||
U32_T u32_addr[3] = { DATAFLASH_VAR_CFG_DATA1_ADDR, DATAFLASH_VAR_CFG_DATA2_ADDR, DATAFLASH_VAR_CFG_DATA3_ADDR };
|
||||
|
||||
u16_len = sizeof(SYS_VAR_CFG_T);
|
||||
|
||||
u8_head[0] = 0x55;
|
||||
u8_head[1] = 0xAA;
|
||||
u8_head[2] = CFG_DATA_VERSION_H;
|
||||
u8_head[3] = CFG_DATA_VERSION_L;
|
||||
u8_head[4] = (U8_T)(u16_len >> 8);
|
||||
u8_head[5] = (U8_T)u16_len;
|
||||
|
||||
if(u8_mutex_Lock() == 0) //上锁
|
||||
return;
|
||||
|
||||
for(i=0; i<3; i++)
|
||||
s32_flash_dataflash_erase_sector(u32_addr[i]); //清空扇区
|
||||
|
||||
u16_crc = u16_crc_checksum((U8_T *)(&(g_t_share_data.t_sys_var_cfg)), u16_len);
|
||||
u8_head[6] = (U8_T)(u16_crc >> 8);
|
||||
u8_head[7] = (U8_T)u16_crc;
|
||||
|
||||
for (i=0; i<3; i++) //写3份数据
|
||||
{
|
||||
for (j=0; j<3; j++) //如果写失败,则重试3次
|
||||
{
|
||||
if ((s32_flash_dataflash_write(u32_addr[i], u8_head, 8) != 0)
|
||||
|| (s32_flash_dataflash_write(u32_addr[i]+8, (U8_T *)(&(g_t_share_data.t_sys_var_cfg)), u16_len) != 0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v_mutex_unlock(); //解锁
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
函数名称: s32_fetch_read_var_cfg_data
|
||||
函数功能: 从dataflash读取可变配置数据,从三份数据中读取正确的数据,并用正确的数据重写不正确的数据
|
||||
读取时检查 CFG_DATA_VERSION_H/L 版本号
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :读取成功则返回0,失败返回-1
|
||||
**************************************************************/
|
||||
S32_T s32_flash_read_var_cfg_data(void)
|
||||
{
|
||||
U8_T u8_head[8];
|
||||
U16_T u16_len, i, j, k;
|
||||
U32_T u32_addr[3] = { DATAFLASH_VAR_CFG_DATA1_ADDR, DATAFLASH_VAR_CFG_DATA2_ADDR, DATAFLASH_VAR_CFG_DATA3_ADDR };
|
||||
|
||||
u16_len = sizeof(SYS_VAR_CFG_T);
|
||||
|
||||
if(u8_mutex_Lock() == 0) //上锁
|
||||
return 0;
|
||||
|
||||
for (i=0; i<3; i++)
|
||||
{
|
||||
if ((s32_flash_dataflash_read(u32_addr[i], u8_head, 8) == 0)
|
||||
&& (s32_flash_dataflash_read(u32_addr[i]+8, (U8_T *)(&(g_t_share_data.t_sys_var_cfg)), u16_len) == 0))
|
||||
{
|
||||
if ((u8_head[0] == 0x55)
|
||||
&& (u8_head[1] == 0xAA)
|
||||
&& (u8_head[2] == CFG_DATA_VERSION_H)
|
||||
&& (u8_head[3] == CFG_DATA_VERSION_L)
|
||||
&& (u16_len == ((u8_head[4]<<8) | u8_head[5]))
|
||||
&& (((u8_head[6]<<8) | u8_head[7]) == u16_crc_checksum((U8_T *)(&(g_t_share_data.t_sys_var_cfg)), u16_len)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (i >= 3) //三份配置数据都没有读取成功,则退出
|
||||
{
|
||||
v_mutex_unlock(); //解锁 //释放互斥锁
|
||||
return -1;
|
||||
}
|
||||
else if (i == 0) //第一份就读取成功,则退出
|
||||
{
|
||||
v_mutex_unlock(); //解锁 //释放互斥锁
|
||||
return 0;
|
||||
}
|
||||
|
||||
//程序跑到这里,说明己经读取成功,且不是第一份读取成功,需要对读取失败的数据重写(先擦除再写)
|
||||
for (j=0; j<i; j++)
|
||||
{
|
||||
s32_flash_dataflash_erase_sector(u32_addr[j]); //重写前先清空该扇区
|
||||
for (k=0; k<3; k++) //如果写失败,则重试3次
|
||||
{
|
||||
if ((s32_flash_dataflash_write(u32_addr[j], u8_head, 8) != 0)
|
||||
|| (s32_flash_dataflash_write(u32_addr[j]+8, (U8_T *)(&(g_t_share_data.t_sys_var_cfg)), u16_len) != 0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v_mutex_unlock(); //解锁 //释放互斥锁
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************
|
||||
函数名称: v_fetch_save_fix_cfg_data
|
||||
函数功能: 保存固定配置数据到dataflash,保存三份,具体格式见文件:DATAFLASH空间地址定义
|
||||
头8字节:魔数+CFG_DATA_VERSION_H/L+长度+CRC
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :无
|
||||
**************************************************************/
|
||||
void v_flash_save_fix_cfg_data(void)
|
||||
{
|
||||
U8_T u8_head[8];
|
||||
U16_T u16_len, u16_crc, i, j;
|
||||
U32_T u32_addr[3] = { DATAFLASH_FIX_CFG_DATA1_ADDR, DATAFLASH_FIX_CFG_DATA2_ADDR, DATAFLASH_FIX_CFG_DATA3_ADDR };
|
||||
|
||||
u16_len = sizeof(SYS_FIX_CFG_T);
|
||||
|
||||
u8_head[0] = 0x55;
|
||||
u8_head[1] = 0xAA;
|
||||
u8_head[2] = CFG_DATA_VERSION_H;
|
||||
u8_head[3] = CFG_DATA_VERSION_L;
|
||||
u8_head[4] = (U8_T)(u16_len >> 8);
|
||||
u8_head[5] = (U8_T)u16_len;
|
||||
|
||||
if(u8_mutex_Lock() == 0) //上锁
|
||||
return;
|
||||
|
||||
for(i=0; i<3; i++)
|
||||
s32_flash_dataflash_erase_sector(u32_addr[i]); //清空扇区
|
||||
|
||||
u16_crc = u16_crc_checksum((U8_T *)(&(g_t_share_data.t_sys_fix_cfg)), u16_len);
|
||||
u8_head[6] = (U8_T)(u16_crc >> 8);
|
||||
u8_head[7] = (U8_T)u16_crc;
|
||||
|
||||
for (i=0; i<3; i++) //写3份数据
|
||||
{
|
||||
for (j=0; j<3; j++) //如果写失败,则重试3次
|
||||
{
|
||||
if ((s32_flash_dataflash_write(u32_addr[i], u8_head, 8) != 0)
|
||||
|| (s32_flash_dataflash_write(u32_addr[i]+8, (U8_T *)(&(g_t_share_data.t_sys_fix_cfg)), u16_len) != 0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v_mutex_unlock(); //解锁 //释放互斥锁
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
函数名称: s32_fetch_read_fix_cfg_data
|
||||
函数功能: 从dataflash读取固定配置数据,从三份数据中读取正确的数据,并用正确的数据重写不正确的数据
|
||||
读取时检查 CFG_DATA_VERSION_H/L 版本号
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :读取成功则返回0,失败返回-1
|
||||
**************************************************************/
|
||||
S32_T s32_flash_read_fix_cfg_data(void)
|
||||
{
|
||||
U8_T u8_head[8];
|
||||
U16_T u16_len, i, j, k;
|
||||
U32_T u32_addr[3] = { DATAFLASH_FIX_CFG_DATA1_ADDR, DATAFLASH_FIX_CFG_DATA2_ADDR, DATAFLASH_FIX_CFG_DATA3_ADDR };
|
||||
|
||||
u16_len = sizeof(SYS_FIX_CFG_T);
|
||||
|
||||
if(u8_mutex_Lock() == 0) //上锁
|
||||
return 0;
|
||||
|
||||
for (i=0; i<3; i++)
|
||||
{
|
||||
if ((s32_flash_dataflash_read(u32_addr[i], u8_head, 8) == 0)
|
||||
&& (s32_flash_dataflash_read(u32_addr[i]+8, (U8_T *)(&(g_t_share_data.t_sys_fix_cfg)), u16_len) == 0))
|
||||
{
|
||||
if ((u8_head[0] == 0x55)
|
||||
&& (u8_head[1] == 0xAA)
|
||||
&& (u8_head[2] == CFG_DATA_VERSION_H)
|
||||
&& (u8_head[3] == CFG_DATA_VERSION_L)
|
||||
&& (u16_len == ((u8_head[4]<<8) | u8_head[5]))
|
||||
&& (((u8_head[6]<<8) | u8_head[7]) == u16_crc_checksum((U8_T *)(&(g_t_share_data.t_sys_fix_cfg)), u16_len)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (i >= 3) //三份配置数据都没有读取成功,则退出
|
||||
{
|
||||
v_mutex_unlock(); //解锁 //释放互斥锁
|
||||
return -1;
|
||||
}
|
||||
else if (i == 0) //第一份就读取成功,则退出
|
||||
{
|
||||
v_mutex_unlock(); //解锁 //释放互斥锁
|
||||
return 0;
|
||||
}
|
||||
|
||||
//程序跑到这里,说明己经读取成功,且不是第一份读取成功,需要对读取失败的数据重写(先擦除再写)
|
||||
for (j=0; j<i; j++)
|
||||
{
|
||||
s32_flash_dataflash_erase_sector(u32_addr[j]); //重写前先清空该扇区
|
||||
for (k=0; k<3; k++) //如果写失败,则重试3次
|
||||
{
|
||||
if ((s32_flash_dataflash_write(u32_addr[j], u8_head, 8) != 0)
|
||||
|| (s32_flash_dataflash_write(u32_addr[j]+8, (U8_T *)(&(g_t_share_data.t_sys_fix_cfg)), u16_len) != 0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v_mutex_unlock(); //解锁 //释放互斥锁
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************
|
||||
函数名称: v_fetch_save_cfg_data
|
||||
函数功能: 保存配置数据到dataflash,保存三份,具体格式见文件:DATAFLASH空间地址定义
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :无
|
||||
**************************************************************/
|
||||
void v_flash_save_cfg_data(void)
|
||||
{
|
||||
v_flash_save_fix_cfg_data();
|
||||
v_flash_save_var_cfg_data();
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
函数名称: v_public_fix_cfg_data_restore
|
||||
函数功能: 恢复默认数据,将设置参数恢复到默认值
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :无
|
||||
**************************************************************/
|
||||
void v_public_fix_cfg_data_restore(void)
|
||||
{
|
||||
SYS_FIX_CFG_T *t_sys_fix_cfg = &g_t_share_data.t_sys_fix_cfg;
|
||||
if(u8_mutex_Lock() == 0) //上锁
|
||||
return;
|
||||
|
||||
memset(t_sys_fix_cfg, 0, sizeof(SYS_FIX_CFG_T));
|
||||
|
||||
//充电桩资产参数配置
|
||||
t_sys_fix_cfg->u16_pile_power_limit = 0; //整桩限制功率,(0表示不限制)
|
||||
strcpy((char *)t_sys_fix_cfg->u8_pwd, "880180"); //维护密码,字符串类型
|
||||
t_sys_fix_cfg->u8_gunCnt = 2;
|
||||
t_sys_fix_cfg->u8_terminal[0] = 1; //终端地址
|
||||
t_sys_fix_cfg->u8_terminal[1] = 2; //终端地址
|
||||
t_sys_fix_cfg->e_ledType = E_LED_TYPE_1; //灯板类型
|
||||
t_sys_fix_cfg->e_timeZone = TIMEZONE_UTC_PLUS_8; //系统时区 0-25 默认20 东八区
|
||||
t_sys_fix_cfg->u8_gun_type[0] = (CAN_PLC_FLAG ? 0 : 1); /* 欧标仅CAN_PLC使能时有效 */ //枪类型 0欧标枪 1国标枪
|
||||
t_sys_fix_cfg->u8_gun_type[1] = (CAN_PLC_FLAG ? 0 : 1);
|
||||
|
||||
t_sys_fix_cfg->u8_gun_power_limit[0] = 0; //枪充电功率限制 0表示不限制 单位kW
|
||||
t_sys_fix_cfg->u8_gun_power_limit[1] = 0;
|
||||
//充电桩保护参数设置
|
||||
t_sys_fix_cfg->u8_threshold_gunTemp = 90; //枪温阈值 90
|
||||
t_sys_fix_cfg->u8_soc_limit = 100; //SOC上限100
|
||||
t_sys_fix_cfg->u16_ratePow = 120; //额定功率
|
||||
t_sys_fix_cfg->u16_min_volt = 200*10; //电压范围-下值
|
||||
t_sys_fix_cfg->u16_max_volt = 1000*10; //模块/充电机的调压上值/电压上限
|
||||
t_sys_fix_cfg->u16_max_cur = 250*10; //最大电流
|
||||
t_sys_fix_cfg->u16_trickle_limit = 10* 10; //涓流停机阈值 10A
|
||||
|
||||
//整流模块参数 --
|
||||
t_sys_fix_cfg->u8_mdu_num = 6; //充电模块数量
|
||||
t_sys_fix_cfg->u8_MduType = 0; //模块类型 暂未使用
|
||||
t_sys_fix_cfg->u8_mduTemp_flag = 1; //模块温度获取使能
|
||||
t_sys_fix_cfg->u8_mdu_rated_pow = 40; //模块额定功率 kw
|
||||
t_sys_fix_cfg->u16_mdu_max_vol = 1000*10; //模块最大电压 0.1V
|
||||
t_sys_fix_cfg->u16_mdu_max_cur = 130*10; //模块最大电流 0.1A
|
||||
|
||||
//网络参数配置
|
||||
const U8_T u8_eth_ip[4] = {192,168,1,100};
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_eth_ip , u8_eth_ip , 4); //本地IP地址, 默认192.168.1.140
|
||||
|
||||
const U8_T u8_eth_mask[4] = {255,255,255,0};
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_eth_mask , u8_eth_mask , 4); //地址掩码, 默认255.255.255.0
|
||||
|
||||
const U8_T u8_eth_gate[4] = {192,168,1,1};
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_eth_gate , u8_eth_gate , 4); //网关, 默认192.168.1.1
|
||||
|
||||
const U8_T u8_eth_mac[6] = {0x00,0x0E,0xEA,0x03,0xA0,0x01};
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_eth_mac , u8_eth_mac , 6); //MAC地址,默认00:0E:EA:03:A5:01 前3字节:组织唯一标识符代表设备厂商(00:0E:EA->属于ASUSTek(华硕))。后3字节:设备标识符厂商自主分配,确保同一厂商的产品中不重复。
|
||||
|
||||
const U8_T u8_platA_IP[] = "39.104.96.26,8897"; //注意 域名和ip之间使用,分隔 例如39.104.96.26,8897
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_serverA_domain_name , u8_platA_IP , strlen((char *)u8_platA_IP)); //服务器A域名(IP+端口号) - 最大字符50字节
|
||||
const U8_T u8_platB_IP[] = "121.89.205.240,41004"; //注意 域名和ip之间使用,分隔 例如39.104.96.26,8897
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_serverB_domain_name , u8_platB_IP , strlen((char *)u8_platB_IP)); //服务器B域名(IP+端口号) - 最大字符50字节
|
||||
|
||||
const U8_T u8_platA_pileNum[] = "2025090200010001";//"12345678"; //
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_platA_pileNum , u8_platA_pileNum , strlen((char *)u8_platA_pileNum)); //平台1桩编号
|
||||
const U8_T u8_platB_pileNum[] = "12345678"; //
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_platB_pileNum , u8_platB_pileNum , strlen((char *)u8_platB_pileNum)); //平台2桩编号
|
||||
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_program_type = 0; //程序类型 0社会 1sdk
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_netA_type = 0; //联网方式 0:GPRS 1:以太网
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_netB_type = 0; //联网方式 0:GPRS 1:以太网
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_platA_en = 1; //平台1使能 默认第三方平台 0不使能 1使能
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_platB_en = 0; //平台2使能 默认积成平台 0不使能 1使能
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_platA_type = 0; //平台1类型 0积成 云快充 1...
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_platB_type = 0; //平台1类型 默认积成平台 --非SDK平台时有效,SDK平台时 仅连接SDK
|
||||
t_sys_fix_cfg->s_net_cfg.u_net_comm_para.bits.bit_sim_anp_type = 0; //SIM卡 APN类型- 0公网卡 1国网移动 2国网联通 3国网电信
|
||||
|
||||
//电表数据初始
|
||||
t_sys_fix_cfg->s_memter.u8_meter_num = 2;
|
||||
t_sys_fix_cfg->s_memter.s_data[0].u8_inGun = 1; //归属枪号 0无效,不存在; 1A枪 2B枪
|
||||
t_sys_fix_cfg->s_memter.s_data[0].u8_highPrec = 1; //是否支持高精度 0 不支持 1支持
|
||||
t_sys_fix_cfg->s_memter.s_data[0].u8_isAC = 0; //是否为交流电表 0直流表 1交流表
|
||||
|
||||
memset(&t_sys_fix_cfg->s_memter.s_data[0].u8_meterAddr[0] , 0xAA, 6); //电表地址
|
||||
|
||||
t_sys_fix_cfg->s_memter.s_data[1].u8_inGun = 2; //归属枪号 0无效,不存在; 1A枪 2B枪
|
||||
t_sys_fix_cfg->s_memter.s_data[1].u8_highPrec = 1; //是否支持高精度 0 不支持 1支持
|
||||
t_sys_fix_cfg->s_memter.s_data[1].u8_isAC = 0; //是否为交流电表 0直流表 1交流表
|
||||
|
||||
memset(&t_sys_fix_cfg->s_memter.s_data[1].u8_meterAddr[0] , 0xAA, 6); //电表地址
|
||||
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_doorEnable = 1; //门禁使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_gunLockEna = 1; // 枪锁使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_gunLockNeg = 0; // 枪锁信号取反
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_AcContactEna = 0; // 交流接触器使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_gunHoming = 0; // 枪归位信号有无
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_GBEnable = 0; // 国标使能(0:兼容 1:国标)
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_LcdEnable = 1; // 液晶使能,0不使能,1使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_auxpower = 0; // 辅助电压返回状态使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_reliefen = 1; // 泄放使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_YeLenEn = 0; // 液冷通讯使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_ABcommEn = 0; // 主副班通讯使能 0 1使能且为1枪 2使能且为2枪
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_ScreenSaverEn = 1; // UI界面屏保使能 0不使能 1使能 2使能轮播
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_PlugEn = 1; //即插即充使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_uiEnglishEn = 0; //UI界面 英语使能 0 中文 1英文
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_dcBusEn = 0; // 直流母联接触器使能 0 不使能 1使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_gunFanEn = 0; // 枪风扇使能 0 不使能 1使能
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_mduzeropowEn = 0;
|
||||
t_sys_fix_cfg->u_enable.bit_enable.bit_ledGbEn = 0; //国标指示灯使能 0 待机黄,充电绿,故障红;1 待机绿,充电红,故障黄
|
||||
v_mutex_unlock();
|
||||
|
||||
v_flash_save_fix_cfg_data(); //保存参数到DATAFLASH
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
函数名称: v_public_var_cfg_data_restore
|
||||
函数功能: 恢复默认数据,将设置参数恢复到默认值
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :无
|
||||
**************************************************************/
|
||||
void v_public_var_cfg_data_restore(void)
|
||||
{
|
||||
U8_T i;
|
||||
if(u8_mutex_Lock() == 0) //上锁
|
||||
return ;
|
||||
|
||||
memset(&(g_t_share_data.t_sys_var_cfg), 0, sizeof(g_t_share_data.t_sys_var_cfg));
|
||||
|
||||
//计费模型
|
||||
g_t_share_data.t_sys_var_cfg.s_fee_model.u8_feeCnt = FEE_MODEL_CNT;
|
||||
|
||||
g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[0].u32_rate = 1; //电费
|
||||
g_t_share_data.t_sys_var_cfg.s_fee_model.s_fee_data[0].u32_sevice = 1; //服务费
|
||||
|
||||
for(i=0;i<FEE_MODEL_CNT;i++)
|
||||
{
|
||||
g_t_share_data.t_sys_var_cfg.s_fee_model.u8_fee_type[i] = 1; //费率类型 第一个费率类型
|
||||
}
|
||||
|
||||
memcpy(&g_t_share_data.t_sys_var_cfg.s_sdk_data.firmware_version[0], "app-1.0.0-20220502.1000", strlen("app-1.0.0-20220502.1000"));
|
||||
|
||||
v_mutex_unlock();
|
||||
|
||||
v_flash_save_var_cfg_data(); //保存参数到DATAFLASH
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
函数名称: v_public_param_init
|
||||
函数功能: 参数初始化
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :无
|
||||
**************************************************************/
|
||||
void v_public_param_init(void)
|
||||
{
|
||||
v_public_fix_cfg_data_restore();
|
||||
v_public_var_cfg_data_restore();
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
函数名称: v_public_cfg_data_init
|
||||
函数功能: 配置数据初始化
|
||||
输入参数: 无
|
||||
输出参数: 无
|
||||
返回值 :无
|
||||
**************************************************************/
|
||||
void v_public_cfg_data_init(void)
|
||||
{
|
||||
if(u8_osMutexNew() == 0) //创建信号量
|
||||
{
|
||||
printf("g_t_share_data is NULL \n");
|
||||
return;
|
||||
}
|
||||
|
||||
if(u8_mutex_Lock() == 0) //上锁
|
||||
return;
|
||||
|
||||
memset(&g_t_share_data, 0, sizeof(g_t_share_data));
|
||||
|
||||
v_mutex_unlock(); //解锁
|
||||
|
||||
//强制恢复出厂
|
||||
// v_public_fix_cfg_data_restore();
|
||||
// v_public_var_cfg_data_restore();
|
||||
|
||||
//读固定配置参数
|
||||
if (s32_flash_read_fix_cfg_data() == -1)
|
||||
{
|
||||
v_public_fix_cfg_data_restore();
|
||||
printf("public_fix_cfg_data fail,read new\n");
|
||||
}
|
||||
//读可变配置参数
|
||||
if (s32_flash_read_var_cfg_data() == -1)
|
||||
{
|
||||
v_public_var_cfg_data_restore();
|
||||
printf("public_fix_cfg_data fail,read new\n");
|
||||
}
|
||||
|
||||
if(strlen(g_t_share_data.t_sys_var_cfg.custom_ver) == 0) //如果custom_ver版本号为空,则赋默认值
|
||||
{
|
||||
memcpy(g_t_share_data.t_sys_var_cfg.custom_ver, Software_Version, sizeof(Software_Version));
|
||||
}
|
||||
|
||||
SYS_FIX_CFG_T *t_sys_fix_cfg = &g_t_share_data.t_sys_fix_cfg;
|
||||
t_sys_fix_cfg->u8_gun_type[0] = 1;
|
||||
t_sys_fix_cfg->u8_gun_type[1] = 1; //本系统都是国标枪
|
||||
|
||||
#if 0 //ocpp 测试
|
||||
|
||||
const U8_T u8_platA_IP[] = "ws://182.92.157.86:8088/steve/websocket/CentralSystemService"; //注意 域名和ip之间使用,分隔 例如39.104.96.26,8897
|
||||
memset(t_sys_fix_cfg->s_net_cfg.u8_serverA_domain_name , 0, sizeof(t_sys_fix_cfg->s_net_cfg.u8_serverA_domain_name));
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_serverA_domain_name , u8_platA_IP , strlen((char *)u8_platA_IP)); //服务器A域名(IP+端口号) - 最大字符50字节
|
||||
|
||||
const U8_T u8_platA_pileNum[] = "abcd1234"; //
|
||||
memset(t_sys_fix_cfg->s_net_cfg.u8_platA_pileNum , 0, sizeof(t_sys_fix_cfg->s_net_cfg.u8_platA_pileNum));
|
||||
memcpy(t_sys_fix_cfg->s_net_cfg.u8_platA_pileNum , u8_platA_pileNum , strlen((char *)u8_platA_pileNum)); //平台1桩编号
|
||||
|
||||
g_t_share_data.t_sys_fix_cfg.u_enable.bit_enable.bit_uiEnglishEn = 1;
|
||||
#endif
|
||||
#if 0 //sdk测试参数
|
||||
|
||||
//接入调试平台 8枪测试桩
|
||||
strcpy((char *)g_t_share_data.t_sys_var_cfg.s_sdk_data.product_key, "a1q5OZTEiYV"); //产品秘钥
|
||||
strcpy((char *)g_t_share_data.t_sys_var_cfg.s_sdk_data.device_name, "961758611348789658931728");//资产码
|
||||
strcpy((char *)g_t_share_data.t_sys_var_cfg.s_sdk_data.device_secret, "5d70d9e838e144e75b4d55ba3b7fe9c7");//设备密钥
|
||||
strcpy((char *)g_t_share_data.t_sys_var_cfg.s_sdk_data.device_uid, "1049250923019699");//出厂编码
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user