/** ****************************************************************************** * @file system_data.h * @brief 系统数据交互模块头文件 * * 该模块负责系统信息、充电信息获取、充电控制等功能 * 为参数配置、文件获取等功能预留接口 ****************************************************************************** */ #ifndef __SYSTEM_DATA_H #define __SYSTEM_DATA_H #include #include "publicdata/public_define.h" #include "tcp_ser/system_paracfg.h" #include "tcp_ser/tcp_protocol.h" #ifdef __cplusplus extern "C" { #endif /* 函数声明 */ const char* param_type_to_string(param_data_type_t type); int param_get_value_as_string(const param_map_item_t *item, char *buffer, uint32_t size); uint32_t param_get_enable_bit_value(uint16_t param_id, uint8_t op_flag, uint32_t value); uint32_t param_get_netcomm_bit_value(uint16_t param_id, uint8_t op_flag, uint32_t value); int param_set_value_from_string(const param_map_item_t *item, const char *value_str); /* 参数映射表获取函数 */ const param_map_item_t* param_get_basic_map(void); uint16_t param_get_basic_map_size(void); const param_map_item_t* param_get_network_map(void); uint16_t param_get_network_map_size(void); const param_map_item_t* param_get_meter_map(void); uint16_t param_get_meter_map_size(void); const param_map_item_t* param_get_enable_map(void); uint16_t param_get_enable_map_size(void); const param_map_item_t* param_get_fee_map(void); uint16_t param_get_fee_map_size(void); const param_map_item_t* param_get_sdk_map(void); uint16_t param_get_sdk_map_size(void); const param_map_item_t* param_get_qrcode_map(void); uint16_t param_get_qrcode_map_size(void); /* 故障信息获取函数 */ void tcp_get_system_fault_data(tcp_fault_info_response_t *response); int tcp_process_custom_data(const tcp_custom_data_t *request, tcp_custom_data_t *response); /* ================= 历史记录(HistoryOperations) ================= */ #define HISTORY_TIME_STR_SIZE 32 #define HISTORY_CONTENT_STR_SIZE 640 #define HISTORY_QUERY_MAX_RECORDS 20 /** * @brief 历史查询一包记录的传输缓冲区(体积大,勿在栈上分配;用 pvPortMalloc 申请并在用后 vPortFree) */ typedef struct tcp_history_query_xfer { char time_buf[HISTORY_QUERY_MAX_RECORDS][HISTORY_TIME_STR_SIZE]; char content_buf[HISTORY_QUERY_MAX_RECORDS][HISTORY_CONTENT_STR_SIZE]; } tcp_history_query_xfer_t; /** * @brief 获取历史记录总数 * @param historyType "fault"|"charging"|"card" * @return 总条数 */ uint16_t tcp_history_get_total_count(const char *historyType); /** * @brief 根据 startIndex(0=最新) 构建单包记录内容 * * @param historyType "fault"|"charging"|"card" * @param startIndex 距离最新的偏移 * @param fetchCount 请求条数(实际会受 HISTORY_QUERY_MAX_RECORDS 与设备实际数量约束) * @param time_buf [HISTORY_QUERY_MAX_RECORDS][HISTORY_TIME_STR_SIZE] fault/charging填充 * @param content_buf [HISTORY_QUERY_MAX_RECORDS][HISTORY_CONTENT_STR_SIZE] 三种类型均填充 * @param outIncludeTime 输出:1=返回time字段,0=不返回time字段 * @param outTotalCount 输出:设备该类型总条数 * @return 返回实际填充的记录条数(<=fetchCount) */ uint16_t tcp_history_build_records(const char *historyType, uint16_t startIndex, uint16_t fetchCount, char (*time_buf)[HISTORY_TIME_STR_SIZE], char (*content_buf)[HISTORY_CONTENT_STR_SIZE], uint8_t *outIncludeTime, uint16_t *outTotalCount); /** * @brief 清除历史记录(全部) * @param historyType "fault"|"charging"|"card" * @param outMessage 输出提示信息(可选) * @param outMessageSize outMessage大小(可选) * @return 0=成功,非0=失败 */ int tcp_history_clear_records(const char *historyType, char *outMessage, uint32_t outMessageSize); #ifdef __cplusplus } #endif #endif /* __SYSTEM_DATA_H */