Files

238 lines
11 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef BS_PUBLIC_IMPL_H
#define BS_PUBLIC_IMPL_H
#ifdef __cplusplus /*C++编译环境下兼容C语言*/
extern "C" {
#endif
/*------ Exported includes(头文件) ----------------------*/
#include "main.h"
#include "publicdata/publicdata.h"
#include "fault_cheak/fault_interface.h"
#include "app_rtc/app_rtc.h"
#include "meter_calculate/meter_calculate_impl.h"
#include "flowctrl/flow_interface.h"
/*------ Exported macro(宏定义) -------------------------*/
#define BS_BUF_SIZE_16 16
#define BS_BUF_SIZE_32 32
#define BS_BUF_SIZE_64 64
#define BS_BUF_SIZE_128 128
#define BS_BUF_SIZE_256 256
/*------ Exported struct(结构体定义) --------------------*/
typedef enum
{
GUN_NULL = 0, //无
GUN_1 = 0, //1枪
GUN_2, //2枪
}E_GUN_NO;
typedef enum{
GET_FLAG=0, //获取数据
SET_FALG, //设置标志
CLEAR_FALG, //清空标志
}FLAG_CTLR;
typedef union {
U8_T u8_data;
S8_T s8_data;
U16_T u16_data;
S16_T s16_data;
U32_T u32_data;
F32_T f32_data;
U64_T u64_data;
}TYPE_DATA;
typedef enum
{
//字符串数据类型 0x7000--0x8000
E_STR_TYPE = 0,
E_STR_PILE_NO, //桩编号-16
E_STR_SOFTWARE_VERSION, //软件版本号
E_STR_HARDWARE_VERSION, //硬件版本号
E_STR_LOG_preTradeNo, //订单流水号 type=0,平台流水号;type=1,设备流水号
E_STR_LOG_user_id, //订单用户标识
E_STR_LOG_vin, //VIN 车辆信息
E_STR_SDK_PARA_product_key, //国网sdk 产品密钥
E_STR_SDK_PARA_device_name, //国网sdk 资产吗
E_STR_SDK_PARA_device_secret, //国网sdk 设备秘钥
E_STR_SDK_PARA_device_reg_code, //国网sdk 注册码
E_STR_SDK_PARA_device_uid, //国网sdk 出厂编码
E_STR_SDK_PARA_firmware_version, //国网sdk 固件版本信息
E_STR_SDK_SIM_ID, //sim卡号
E_STR_METER_ADDR, //获取电表号 0直流电表 1交流电表
E_STR_FEE_ID, //计费模型ID
E_STR_QR_DISPLAY, //枪二维码 u8_gunNo=0/1 对应枪A/B
}E_GET_SYS_STR;
typedef struct
{
U8_T u8_init_flag; //初始化标志
U8_T u8_netType; //网络类型 04G 1网线
U8_T u8_update_server_addr[32]; //升级服务器IP
U16_T u16_update_server_port; //升级服务器端口号
U8_T u8_user[20]; //用户名,字符串,不足尾部补0
U8_T u8_pwd[20]; //密码,字符串,不足尾部补0
U8_T u8_path[64]; //路径名,字符串,不足尾部补0
U8_T u8_file_name[32]; //文件名,字符串,不足尾部补0
U8_T u8_bs_ack; //平台回复报文
U8_T u8_update_result; //升级结果
U32_T u32_file_size; //文件大小
U16_T u16_packSize; //单包数据大小
U16_T u16_packNum; //包数量
U16_T u16_packIndex; //获取包索引号
U32_T u32_file_fd; //文件句柄 EC200A 4G模块使用
}T_FTP_UPDATE_INFO;
/***************************
变量功能:定义变量类型枚举,内部调用时使用统一函数接口获取不同的数据内容
*********************************/
typedef enum
{
//桩信息
E_BS_GET_SYS_DATA_GUN_NUM = 0, //枪数量
E_BS_GET_SYS_DATA_NET_TYPE, //联网类型 0:4G 1:网线
E_BS_GET_SYS_DATA_PLAT_EN, //平台使能 u8_gunNo=0平台A 1平台B0不使能 1使能
E_BS_GET_SYS_DATA_NOW_FAULT_ALARM_NUM, //type=0当前故障数量/type=1当前告警数量
E_BS_GET_SYS_DATA_NOW_FAULT_ALARM_DATA, //获取故障内容 参数 0-N 获取故障位置数量
E_BS_GET_SYS_DATA_4G_signal_quality, //4G信号强度
E_BS_GET_SYS_DATA_RATED_POWER, //额定功率 单位w
E_BS_GET_SYS_DATA_PILE_PUT_PARA, //充电桩输出参数 单位0.1V/0.1A 0最大电压 1最小电压 2最大电流 3最小电流
//枪信息
E_BS_GET_SYS_DATA_GUN_FLOW_STATE, //终端充电状态 0空闲 1充电启动 2绝缘启动 3绝缘计算完成 4绝缘检测模块停止 5开始预充 6预充完成 7充电中 8BMS通讯超时 9充电停止 10充电停止完成
E_BS_GET_SYS_DATA_GUN_STATE, //枪状态信息 type=0,枪连接状态;
//type=1,电子锁状态;
//type=2,枪空座归位状态;
//type=3,正母线直流输出接触器状态
//type=4,负母线直流输出接触器状态
E_BS_GET_SYS_DATA_GUN_TEMP_POS, //充电枪正极温度 单位0.1度 0-100最小为0
E_BS_GET_SYS_DATA_GUN_TEMP_NEG, //充电枪负极温度 单位0.1度 0-100最小为0
E_BS_GET_SYS_DATA_MEMTER_ELECT, //电表电量 0.001kWh
E_BS_GET_SYS_DATA_PILE_TEMP, //环境温度 精确到小数点后1位,-50℃偏差
E_BS_GET_SYS_DATA_METER_CUR, //电表电流 单位0.1A
E_BS_GET_SYS_DATA_METER_VOL, //电表电压 单位0.1V
//订单信息
E_BS_GET_SYS_DATA_LOG_ENERGY, //订单电量 0.001kWh 三位小数精度 type=0,已充电量;type=1,电表起始值,type=2,电表终止值
E_BS_GET_SYS_DATA_LOG_STOP_REASON, //充电订单停止原因
E_BS_GET_SYS_DATA_LOG_charge_flag, //订单充电标志 0未充电 1已经充电
E_BS_GET_SYS_DATA_SOC_DATA, //SOC 数据 type=0,当前SOCtype=1,启动时SOC;type=2,结束时SOC
E_BS_GET_SYS_DATA_LOG_CHARGE_TIME, //充电时间 min
//bms信息
E_BS_GET_SYS_DATA_BMS_CELL_MAX_VOL, //最高单体动力蓄电池电压
E_BS_GET_SYS_DATA_BMS_NEED_VOL, //电压需求 单位0.1V
E_BS_GET_SYS_DATA_BMS_NEED_CUR, //电流需求 单位0.1A
E_BS_GET_SYS_DATA_BMS_CHARGE_VOL, //BMS充电电压测量值
E_BS_GET_SYS_DATA_BMS_CHARGE_CUR, //BMS充电电流测量值
E_BS_GET_SYS_DATA_BMS_BATT_CHARGE_MAX_VOL, //最高允许充电总电压
E_BS_GET_SYS_DATA_BMS_CELL_CHARGE_MAX_VOL, //单体动力蓄电池最高允许充电电压
E_BS_GET_SYS_DATA_BMS_BATT_CHARGE_MAX_CUR, //最高允许充电电流
E_BS_GET_SYS_DATA_BMS_BATT_RATED_VOL, //整车动力蓄电池系统额定总电压
E_BS_GET_SYS_DATA_BMS_BATT_VOL, //整车动力蓄当前电池总电压
E_BS_GET_SYS_DATA_BMS_BATT_RATED_C10, //整车动力蓄电池系统额定容量
E_BS_GET_SYS_DATA_BMS_BATT_RATED_ENERY, //动力蓄电池标称总能量
E_BS_GET_SYS_DATA_BMS_BATT_ID, //电池编号信息 0最高单体动力蓄电池电压所在编号 1最高动力蓄电池温度检测点编号 2最低动力蓄电池温度检测点编号
E_BS_GET_SYS_DATA_BMS_TEMP, //单位 0.1度0-100最小为0 0 电池最高温度 1最低温度
E_BS_GET_SYS_DATA_BMS_REMAIN_TIME, //剩余充电时间 min
E_BS_GET_SYS_DATA_BMS_BATT_MAX_TEMP, //最高动力蓄电池温度
E_BS_GET_SYS_DATA_BMS_BATT_MIN_TEMP, //最低动力蓄电池温度
E_BS_GET_SYS_DATA_BMS_BATT_ALLOW_MAX_TEMP, //最高允许动力蓄电池温度
E_BS_GET_SYS_DATA_UNIX_TIMESTAMP, //当前 RTC Unix 时间戳(秒)
} E_GET_SYS_DATA;
typedef struct
{
U16_T u16_ctrl_res; //控制原因 启动时为启动原因 停止时为停止原因;启动原因0 无动作 1离线卡 2在线卡 3后台启动(tcu/积成)\扫码启动 4vin启动 5调试启动
E_CHRG_LIMIT_MOD e_start_mode; //启动充电限制方式 0 不做限制的充电(默认) 1 限制金额 2 限制电量 electricity 3 限制SOC 4 限制充电时长 5 限制功率
U16_T u16_limit; //限制参数 默认精度 0.01
U32_T u32_balance_begin; //启动充电前金额 0.0001元
USER_TYPE_E e_user_type; //用户类型
U8_T u8_user_id[NUM_32]; //用户标识符
U8_T u8_tradeNo[EVS_MAX_TRADE_LEN]; //设备流水号
U8_T u8_preTradeNo[EVS_MAX_TRADE_LEN]; //平台订单流水号
}S_BS_CHAR_CTRL;
typedef enum
{
E_CHAR_CTRL_START = 0, //启动充电
E_CHAR_CHANGE_LOG, //修改数据
E_CHAR_CTRL_STOP, //停止充电
}E_CTRL_TYPE;
/*------ Exported variables(变量定义) -------------------*/
extern T_FTP_UPDATE_INFO t_ftp_update_info;
/*------ Exported function prototypes (函数声明) -------*/
U8_T u8_get_str_data(U8_T u8_gunNo,E_GET_SYS_STR e_dataType,U8_T u8_dataPara,char *u8_getData,U8_T u8_len);
/** 写字符串类系统参数;u8_len 为有效字节数(帧体可非 '\0' 结尾);返回 1 成功 0 失败 */
U8_T u8_set_str_data(U8_T u8_gunNo, E_GET_SYS_STR e_dataType, U8_T u8_dataPara,
const char *pu8_data, U8_T u8_len);
U32_T u32_bs_get_sys_data(U8_T u8_gunNo,E_GET_SYS_DATA e_datatype,U8_T u8_dataPara);
/** 写数值类系统参数;返回 1 成功 0 失败(如 E_BS_GET_SYS_DATA_UNIX_TIMESTAMP 校时) */
U8_T u8_set_sys_data(U8_T u8_gunNo, E_GET_SYS_DATA e_datatype, U32_T u32_val, U8_T u8_dataPara);
U64_T u64_bs_get_sys_data(U8_T u8_gunNo,E_GET_SYS_DATA e_datatype);
U8_T u8_bs_get_flow_state(U8_T u8_gunNo);
void v_bs_set_time(Comm_Time *currtime);
void v_bs_save_fee_data(U8_T u8_flag, S_FEE_MODEL *s_fee_model);
void v_bs_log_txFlag_tradUpload(U8_T u8_gunNo);
void v_bs_log_txFlag_autoStart(U8_T u8_gunNo); //设置充电鉴权上送标志;
void v_bs_charge_action_ctrl(U8_T u8_gunNo,E_CTRL_TYPE e_type, S_BS_CHAR_CTRL *s_ctrl_data);
void v_remote_gunLock_ctrl(U8_T u8_gunNo,U8_T u8_type);
void v_remote_reboot(U8_T type) ;
void v_cheak_state_change(void);
void v_ftp_update_action(void);
U8_T u8_bs_get_txFlag_autoRwsult(U8_T u8_gunNo) ; //对外获取鉴权结果
U8_T u8_bs_get_log_on_flag();
U8_T u8_card_info_add(char *card_id);
void v_card_info_clear();
void v_bs_get_gun_log_data(U8_T u8_gunNo , S_LOG_DATA *s_log);
void v_bs_gwsdk_set_para(U8_T u8_type, S_SDK_DATA *s_sdk_data);
void v_bs_logUploadOk_updateInfo(U16_T u16_cmplte_bill_index);
void v_bs_get_fee_part_data(U8_T u8_gunNo,U8_T flag,S_LOG_DATA *t_log,U32_T *u32_part_energy,F32_T *f32_rate,F32_T *f32_sevice);
S8_T s8_plat_get_unsettled_order( S_LOG_DATA *s_log,U8_T u8_type);
void v_bs_platform_settlement_confirm(U8_T u8_gunNo);
void v_ocpp_offline_local_authentication_check(U8_T u8_gunNo);
U8_T u8_plat_get_real_order(S_LOG_DATA *s_log,U8_T u8_gunNo);
void v_get_ocpp_cfg_info(char *mag , U16_T u16_len);
U8_T u8_set_ocpp_cfg_info(const char *key,const char *data);
void v_ocpp_get_real_log_file_name(char *fileName,int len);
U8_T u8_bs_get_update_flag();
U8_T u8_bs_get_gun_disable_flag(U8_T u8_gunNo);
void v_ocpp_set_gun_flow_real_state_init(U8_T u8_gunNo);
/** 设置二维码更新标志(CCU621 暂未实现) */
void v_ccu_set_qrcode_flag(U8_T u8_gunNo, U8_T flag);
#ifdef __cplusplus
}
#endif
#endif /* BS_PUBLIC_IMPL_H */