#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平台B,0不使能 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,当前SOC;type=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 */