From 4bfb23c8a5f8e4eb523b8dfddfe622a4b2020e51 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 8 Jul 2025 14:36:40 +0800 Subject: [PATCH] =?UTF-8?q?v3.1.4=20|=20=E5=A2=9E=E5=8A=A0=E6=9B=B4?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E7=9A=84=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_protocols/apperrorcode/app_errorcode_mgr.hpp | 53 +++--- .../appbase/appevent/app_warning_promopt_event.hpp | 7 +- .../canchannel/com/zscanprotocol_com.cpp | 10 +- .../canchannel/com/zscanprotocol_com.hpp | 3 +- appsrc/appconfig/basic/zappversion.hpp | 2 +- appsrc/baseservice/app_event_bus.hpp | 8 +- .../front_msg_processer/front_msg_processer.cpp | 9 +- .../iflytop_front_end_service.cpp | 12 +- appsrc/internationalization.cpp | 175 ++++++++++++++++++++ appsrc/internationalization.hpp | 24 +++ appsrc/service/app/add_liquid_service.cpp | 2 +- .../disinfection_ctrl_service.cpp | 2 +- appsrc/service/app/drain_liquid_service.cpp | 2 +- appsrc/service/app_core.cpp | 63 +------- appsrc/service/debug_page_test_service.cpp | 177 +++++---------------- appsrc/service/debug_page_test_service.hpp | 25 +-- appsrc/service/device_monitor_service.cpp | 4 +- appsrc/service/disinfection_logs_service.cpp | 5 +- appsrc/service/hardware/device_io_ctrl_service.cpp | 12 +- 19 files changed, 319 insertions(+), 276 deletions(-) create mode 100644 appsrc/internationalization.cpp create mode 100644 appsrc/internationalization.hpp diff --git a/app_protocols/apperrorcode/app_errorcode_mgr.hpp b/app_protocols/apperrorcode/app_errorcode_mgr.hpp index ff17615..8c6b8b5 100644 --- a/app_protocols/apperrorcode/app_errorcode_mgr.hpp +++ b/app_protocols/apperrorcode/app_errorcode_mgr.hpp @@ -12,37 +12,36 @@ namespace iflytop { using namespace std; -class EcodeInfo { - public: - int code; - string info; - EcodeInfo(int code, const string& info) : code(code), info(info) {} -}; +// class EcodeInfo { +// public: +// int code; +// string info; +// EcodeInfo(int code, const string& info) : code(code), info(info) {} +// }; -class AppEcodeInfoMgr { - map> ecodeInfoMap; +// class AppEcodeInfoMgr { +// map> ecodeInfoMap; - public: - static AppEcodeInfoMgr& ins() { - static AppEcodeInfoMgr instance; - static bool inited = false; - if (!inited) { - inited = true; - } - return instance; - } +// public: +// static AppEcodeInfoMgr& ins() { +// static AppEcodeInfoMgr instance; +// static bool inited = false; +// if (!inited) { +// inited = true; +// } +// return instance; +// } - void regEcodeInfo(int code, const string& info) { ecodeInfoMap[code] = make_shared(code, info); } +// void regEcodeInfo(int code, const string& info) { ecodeInfoMap[code] = make_shared(code, info); } - string getEcodeInfo(int code) { - auto it = ecodeInfoMap.find(code); - if (it != ecodeInfoMap.end()) { - return it->second->info; - } - return fmt::format("unkown({})", code); - } -}; +// string getEcodeInfo(int code) { +// auto it = ecodeInfoMap.find(code); +// if (it != ecodeInfoMap.end()) { +// return it->second->info; +// } +// return fmt::format("unkown({})", code); +// } +// }; -static inline string ecode2str(int32_t ecode) { return AppEcodeInfoMgr::ins().getEcodeInfo(ecode); } } // namespace iflytop \ No newline at end of file diff --git a/appsrc/appbase/appevent/app_warning_promopt_event.hpp b/appsrc/appbase/appevent/app_warning_promopt_event.hpp index 7f6f98a..4a06dfe 100644 --- a/appsrc/appbase/appevent/app_warning_promopt_event.hpp +++ b/appsrc/appbase/appevent/app_warning_promopt_event.hpp @@ -8,12 +8,11 @@ class AppWarningPromoptEvent : public IAppEvent { string description; string traceinfo; - // ecode2str(appWarningPromoptEvent->getEcode()), extmessage public: - AppWarningPromoptEvent(int ecode) : IAppEvent(AppEventType::AppWarningPromoptEvent), ecode(ecode) { description = ecode2str(ecode); } + AppWarningPromoptEvent(int ecode, string description) : IAppEvent(AppEventType::AppWarningPromoptEvent), ecode(ecode), description(description) { traceinfo = ""; } AppWarningPromoptEvent(const appexception &e) : IAppEvent(AppEventType::AppWarningPromoptEvent) { ecode = e.ecode; - description = ecode2str(ecode); + description = e.what(); traceinfo = e.traceinfo; } virtual ~AppWarningPromoptEvent() {} @@ -24,7 +23,7 @@ class AppWarningPromoptEvent : public IAppEvent { /******************************************************************************* * JSON * *******************************************************************************/ - NLOHMANN_DEFINE_TYPE_INTRUSIVE(AppWarningPromoptEvent, uuid,type, ecode, traceinfo, description); + NLOHMANN_DEFINE_TYPE_INTRUSIVE(AppWarningPromoptEvent, uuid, type, ecode, traceinfo, description); virtual json toJson() { return json(*this); } }; diff --git a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp index c3242dd..ba81845 100644 --- a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp +++ b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp @@ -5,6 +5,7 @@ #include "app_protocols/appexception/appexception.hpp" #include "appcomponents/linuxsocket/unix_socket.hpp" #include "iflytop/core/basic/zbin.hpp" +#include "internationalization.hpp" #include "tdcan_protocol.hpp" using namespace iflytop; @@ -103,7 +104,7 @@ shared_ptr ZSCanProtocolCom::base_callcmd(int32_t to, int32_t cmdid, ui if (m_receipt_frame->ptype == kerror_receipt) { int32_t ecode = *(int32_t *)m_receipt_frame->params; - THROW_APP_EXCEPTION(ecode, ecode2str(ecode).c_str()); + THROW_APP_EXCEPTION(ecode, Internationalization::ecode2description(ecode, cmdid, to, param, paramLen)); } shared_ptr receipt = make_shared(); @@ -117,7 +118,7 @@ shared_ptr ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t lock_guard lock(m_lock); usleep(10 * 1000); logger->debug("tx [to:{}, cmd:{}, param:{}({}) ] overtime:{}", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen, overtime); - + int32_t ecode; for (size_t i = 0; i <= 5; i++) { try { shared_ptr receipt = base_callcmd(to, cmdid, param, paramLen, overtime); @@ -129,12 +130,14 @@ shared_ptr ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t } logger->warn("systemctl restart iflytoptdcan.service"); system("systemctl restart iflytoptdcan.service"); + ecode = e.ecode; usleep(1000 * 1000); continue; } else if (e.ecode == kerr_subdevice_overtime) { if (i != 0) { logger->warn("tx [to:{}, cmd:{}, param:{}({}) ] subdevice overtime, try again {}", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen, i); } + ecode = e.ecode; usleep(1000 * 1000); continue; } @@ -143,7 +146,7 @@ shared_ptr ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t break; } - THROW_APP_EXCEPTION(kerr_overtime, "overtime"); + THROW_APP_EXCEPTION(ecode, Internationalization::ecode2description(ecode, cmdid, to, param, paramLen)); return nullptr; } shared_ptr ZSCanProtocolCom::callcmd0(int32_t to, int32_t cmdid, int32_t overtime) { return callcmd(to, cmdid, nullptr, 0, overtime); } @@ -183,7 +186,6 @@ shared_ptr ZSCanProtocolCom::callcmd5(int32_t to, int32_t cmdid, int32_ return callcmd(to, cmdid, (uint8_t *)param, 20, overtime); } -string ZSCanProtocolCom::ecode2str(int ecode) { return AppEcodeInfoMgr::ins().getEcodeInfo(ecode); } void ZSCanProtocolCom::callOnReport(uint8_t from, uint8_t *hex, uint32_t hexlen) { shared_ptr hexbin = make_shared(hex, hexlen); diff --git a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp index b5b471e..1f032c4 100644 --- a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp +++ b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp @@ -24,7 +24,6 @@ using namespace std; namespace zscanprotocol { #define TDCAN_DEFUALT_OVERTIME 1000 -typedef function ecode2str_t; class RxReceiptContext { public: @@ -98,7 +97,7 @@ class ZSCanProtocolCom { void callOnReport(uint8_t from, uint8_t *hex, uint32_t hexlen); private: - string ecode2str(int ecode); + // string ecode2str(int ecode); shared_ptr base_callcmd(int32_t to, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime); }; } // namespace zscanprotocol diff --git a/appsrc/appconfig/basic/zappversion.hpp b/appsrc/appconfig/basic/zappversion.hpp index a093783..36a59d2 100644 --- a/appsrc/appconfig/basic/zappversion.hpp +++ b/appsrc/appconfig/basic/zappversion.hpp @@ -1,3 +1,3 @@ #pragma once -#define VERSION "3.1.3" +#define VERSION "3.1.4" #define PROJECT_NAME "TRANSMIT_DM" \ No newline at end of file diff --git a/appsrc/baseservice/app_event_bus.hpp b/appsrc/baseservice/app_event_bus.hpp index bc6ccc7..d07ce21 100644 --- a/appsrc/baseservice/app_event_bus.hpp +++ b/appsrc/baseservice/app_event_bus.hpp @@ -14,6 +14,7 @@ #include "appbase/appbase.hpp" #include "appbase/appevent/app_events.hpp" #include "appconfig/appconfig.hpp" +#include "internationalization.hpp" // namespace iflytop { @@ -40,7 +41,12 @@ class AppEventBus : public enable_shared_from_this { } void push(shared_ptr event); - void pushWarningPromptEvent(int ecode) { push(make_shared(ecode)); } + void pushWarningPromptEvent(int ecode, string description = "") { + if (description.empty()) { + description = Internationalization::ecode2description(ecode); + } + push(make_shared(ecode, description)); + } void pushWarningPromptEvent(appexception e) { push(make_shared(e)); } void pushPromoptEvent(string info) { push(make_shared(info)); } diff --git a/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp b/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp index 8ba1322..09acca1 100644 --- a/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp +++ b/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp @@ -1,6 +1,7 @@ #include "front_msg_processer.hpp" #include "iflytop/core/error/error_code.hpp" +#include "internationalization.hpp" using namespace iflytop; @@ -174,11 +175,13 @@ void FrontMsgProcesser::processMsg(shared_ptr cxt) { m_msgProcesserMap[key]->fn(cxt); logger->debug(" call: end"); if (cxt->ackcode != 0) cxt->receipt["ackcode"] = cxt->ackcode; - if (int(cxt->receipt["ackcode"]) != 0) cxt->receipt["message"] = fmt::format("{}", ecode2str(cxt->receipt["ackcode"]) + cxt->ackcodeExtMessage); + if (int(cxt->receipt["ackcode"]) != 0) { + cxt->receipt["message"] = Internationalization::ecode2description(int(cxt->receipt["ackcode"])); + } cxt->receipt["rely"] = cxt->rely; } catch (const appexception& e) { cxt->receipt["ackcode"] = e.ecode; - cxt->receipt["message"] = fmt::format("{}", ecode2str(cxt->receipt["ackcode"]) + e.description); + cxt->receipt["message"] = e.what(); cxt->receipt["traceinfo"] = fmt::format("{}", e.traceinfo); logger->error("appexception: {}", e.what()); } @@ -186,7 +189,7 @@ void FrontMsgProcesser::processMsg(shared_ptr cxt) { } else { logger->error("unknown command: {}", key); cxt->receipt["ackcode"] = err::kappe_cmd_not_support; - cxt->receipt["message"] = fmt::format("{}", ecode2str(cxt->receipt["ackcode"])); + cxt->receipt["message"] = Internationalization::ecode2description(err::kappe_cmd_not_support); } logger->debug("processMsg end"); } diff --git a/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp b/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp index cf81e2a..84c81ea 100644 --- a/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp +++ b/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp @@ -185,36 +185,36 @@ void IflytopFrontEndService::processRxMessage(weak_ptr webSocket, str // json parse error logger->error("process rx json failed,exception:{},{}", e.what(), msgtext); receipt["ackcode"] = err::kappe_parse_json_err; - receipt["message"] = ecode2str(err::kappe_parse_json_err) + "," + e.what(); + receipt["message"] = string("pase json fail, ") + e.what(); ws->sendText(receipt.dump(1)); } catch (const detail::invalid_iterator& e) { // json parse error logger->error("process rx json failed,exception:{},{}", e.what(), msgtext); receipt["ackcode"] = err::kappe_parse_json_err; - receipt["message"] = ecode2str(err::kappe_parse_json_err) + "," + e.what(); + receipt["message"] = string("pase json fail, ") + e.what(); ws->sendText(receipt.dump(1)); } catch (const detail::type_error& e) { // json parse error logger->error("process rx json failed,exception:{},{}", e.what(), msgtext); receipt["ackcode"] = err::kappe_parse_json_err; - receipt["message"] = ecode2str(err::kappe_parse_json_err) + "," + e.what(); + receipt["message"] = string("pase json fail, ") + e.what(); ws->sendText(receipt.dump(1)); } catch (const detail::out_of_range& e) { // json parse error logger->error("process rx json failed,exception:{},{}", e.what(), msgtext); receipt["ackcode"] = err::kappe_parse_json_err; - receipt["message"] = ecode2str(err::kappe_parse_json_err) + "," + e.what(); + receipt["message"] = string("pase json fail, ") + e.what(); ws->sendText(receipt.dump(1)); } catch (const detail::other_error& e) { // json parse error logger->error("process rx json failed,exception:{},{}", e.what(), msgtext); receipt["ackcode"] = err::kappe_parse_json_err; - receipt["message"] = ecode2str(err::kappe_parse_json_err); + receipt["message"] = string("pase json fail, "); ws->sendText(receipt.dump(1)); } catch (const std::exception& e) { logger->error("process rx json failed,exception:{},{}", e.what(), msgtext); receipt["ackcode"] = err::kappe_std_exception; - receipt["message"] = ecode2str(err::kappe_std_exception) + "," + e.what(); + receipt["message"] = string("catch std exception") + "," + e.what(); ws->sendText(receipt.dump(1)); } diff --git a/appsrc/internationalization.cpp b/appsrc/internationalization.cpp new file mode 100644 index 0000000..103daa4 --- /dev/null +++ b/appsrc/internationalization.cpp @@ -0,0 +1,175 @@ +#include "internationalization.hpp" + +#include "app_protocols/apperrorcode/apperrorcode.hpp" +using namespace iflytop; +using namespace std; +using namespace transmit_disfection_protocol; +using namespace iflytop::err; +class EcodeInfo { + public: + int code; + string info; + EcodeInfo(int code, const string& info) : code(code), info(info) {} +}; + +class CmdInfo { + public: + int cmdid; + string info; + CmdInfo(int cmdid, const string& info) : cmdid(cmdid), info(info) {} +}; + +static EcodeInfo chEcodeInfo[] = { + {kerr_overtime, "通信超时"}, + {kerr_invalid_param, "非法参数"}, + {kerr_invalid_param_num, "参数数量错误"}, + {kerr_subdevice_offline, "485总线设备异常"}, + {kerr_function_not_support, "代码错误方法不支持"}, + {kerr_subdevice_overtime, "485总线设备通信超时"}, + {kerr_motor_reset_error, "电机复位错误"}, + {kerr_motor_subdevice_offline, "电机子设备离线"}, + {kerr_motor_driver_error, "电机驱动器错误"}, + {kerr_motor_undervoltage_error, "电机欠压错误"}, + {kerr_motor_unkown_error, "电机未知错误"}, + {kerr_motor_overtemperature_flag, "电机过温"}, + {kerr_motor_overtemperature_pre_warning_flag, "电机过温预警"}, + {kerr_motor_short_to_ground_indicator_phase_A, "电机A相短接"}, + {kerr_motor_short_to_ground_indicator_phase_B, "电机B相短接"}, + {kerr_motor_open_load_indicator_phase_A, "电机A相过载"}, + {kerr_motor_open_load_indicator_phase_B, "电机B相过载"}, + {kerr_motor_standstill_indicator, "电机异常停止"}, + {kerr_AirBlowerError, "空压机异常"}, + {kerr_HeaterError, "加热片异常"}, + {kerr_BlowerError, "鼓风机异常"}, + {kerr_ProportionalValveError, "气密性测试专用空压机异常"}, + + {kappe_code_error, "代码错误"}, + {kappe_component_cfg_not_find, "组件配置未找到"}, + {kappe_cmd_not_support, "命令不支持"}, + {kappe_parse_json_err, "解析json错误"}, + {kappe_std_exception, "标准库异常"}, + {kappe_db_operate_error, "数据库操作错误"}, + {kappe_missing_param, "缺少参数"}, + {kappe_param_num_err, "参数个数错误"}, + {kappe_param_value_err, "参数值错误"}, + {kappe_user_not_exist, "用户不存在"}, + {kappe_passwd_error, "密码错误"}, + {kappe_user_exist, "用户已存在"}, + {kappe_disinfectant_insufficient, "消毒液不足"}, + {kappe_the_bottom_of_the_device_has_water, "硬件仓内有液体"}, + {kappe_the_evaporation_bin_has_water, "蒸发仓内有液体"}, + {kappe_the_sensor_is_prehearting, "传感器正在预热"}, + {kappe_not_detect_udisk, "未检测到U盘"}, + {kappe_udisk_wr_fail, "U盘读写错误"}, + {kappe_open_file_error, "文件操作错误"}, + {kappe_adding_liquid_is_already_in_place, "液体已加到位"}, + {kappe_adding_liquid_is_greater_than_the_maximum_capacity_of_the_device, "加液大于设备最大容量"}, + {kappe_sensor_is_pre_hearting, "传感器正在预热"}, + {kappe_state_is_busy, "设备忙"}, + {kappe_is_adding_liquid, "加液中"}, + {kappe_is_draining_liquid, "排液中"}, + {kappe_is_disinfecting, "消毒中"}, + {kappe_is_air_leak_detect_testing, "气密性测试中"}, + {kappe_setting_id_outof_range, "设置ID超出范围"}, + {kappe_exception_flag_is_setted, "设备硬件异常"}, + {kappe_disinfection_state_is_wrong, "消毒状态错误"}, + {kappe_liquid_ctrl_reboot, "液路板复位"}, + {kappe_power_control_reboot, "功率板复位"}, + {kappe_device_type_not_init, "设备未初始化"}, + +}; + +static CmdInfo cmdInfo[] = { + {kfn_read_board_info, "读取子板信息"}, + {kfn_force_report, "强制上报"}, + {kfn_read_sysinfo, "读取子板系统信息"}, + {kfn_read_taskinfo, "读取子板任务信息"}, + {kfn_heart_ping, "心跳PING"}, + {kfn_clear_reset_flag, "清除复位标志"}, + {kfn_enable_report, "启用上报"}, + {kfn_reset_board, "复位子板"}, + {kreport_heatpacket_pong, "心跳PONG"}, + {kreport_exception_error, "异常错误上报"}, + {kreport_device_reset, "设备复位上报"}, + {kfn_pump_rotate, "泵机控制"}, + {kfn_pump_stop, "泵机控制"}, + {kfn_pump_set_ihold_irun_idelay, "泵机设置IHOLD参数"}, + {kfn_pump_set_acc, "泵机设置加速参数"}, + {kfn_pump_ping, "泵机PING"}, + {kfn_pump_set_ramp, "泵机设置RAMP"}, + {kfn_pump_set_tzw, "泵机设置TZW"}, + {kfn_pump_set_subic_reg, "泵机设置子IC寄存器"}, + {kfn_pump_get_subic_reg, "泵机获取子IC寄存器"}, + {kfn_pump_is_run, "泵机是否在运行"}, + {kfn_heater_ctrl, "加热片控制"}, + {kfn_heater_ctrl_safe_valve, "加热片安全阀控制"}, + {kfn_heater_read_ei, "读取加热片电流"}, + {kfn_heater_read_temperature_data, "读取加热片温度数据"}, + {kfn_heater_read_ei_adc_raw, "读取加热片电流ADC原始数据"}, + {kfn_heater_read_temperature_data_adc_raw, "读取加热片温度数据ADC原始数据"}, + {kfn_heater_is_open, "加热片是否开启"}, + {kfn_h2o2_sensor_read_calibration_date, "读取H2O2传感器校准日期"}, + {kfn_h2o2_sensor_read_sub_ic_errorcode, "读取H2O2传感器子IC错误码"}, + {kfn_h2o2_sensor_read_sub_ic_reg, "读取H2O2传感器子IC寄存器"}, + {kreport_h2o2_sensor_data, "H2O2传感器数据上报"}, + {kfn_triple_warning_light_ctl, "三色警示灯控制"}, + {kfn_triple_warning_light_read_state, "三色警示灯读取状态"}, + {kfn_evaporation_tank_water_sensor_read_state, "读取蒸发仓水位传感器状态"}, + {kfn_device_bottom_water_sensor_read_state, "读取设备底部水位传感器状态"}, + {kreport_evaporation_bin_water_sensor, "蒸发仓水位传感器上报"}, + {kreport_device_bottom_water_sensor, "设备底部水位传感器上报"}, + {kfn_blower_ctrl, "风机控制"}, + {kfn_blower_ctrl_safe_valve, "风机安全阀控制"}, + {kfn_blower_read_ei, "读取风机电流"}, + {kfn_blower_is_error, "读取风机电气异常状态"}, + {kfn_blower_read_ei_adc_raw, "读取风机电流ADC原始数据"}, + {kfn_blower_is_open, "读取风机是否开启"}, + {kfn_air_compressor_ctrl, "空压机控制"}, + {kfn_air_compressor_ctrl_safe_valve, "空压机安全阀控制"}, + {kfn_air_compressor_read_ei, "读取空压机电流"}, + {kfn_air_compressor_read_ei_adc_raw, "读取空压机电流ADC原始数据"}, + {kfn_air_compressor_is_open, "读取空压机是否开启"}, + {kfn_air_leak_detect_ac_ctrl, "空压机气密性测试控制"}, + {kfn_air_leak_detect_ac_is_open, "空压机气密性测试是否开启"}, + {kfn_psbus_read_data, "读取PSBUS数据"}, + {kfn_psbus_scan, "扫描PSBUS设备"}, + {kfn_psbus_start_report, "开始PSBUS设备上报"}, + {kfn_psbus_stop_report, "停止PSBUS设备上报"}, + {kreport_pressure_data, "压力数据上报"}, + {kfn_proportional_set_valve, "设置比例阀"}, + {kfn_proportional_read_pos, "读取比例阀位置"}, + {kfn_proportional_is_busy, "比例阀是否忙碌"}, + {kfn_air_leak_test_set_mode, "设置气密性测试模式"}, + {kfn_air_leak_test_get_mode, "读取气密性测试模式"}, + {kfn_ext_ch_selector_set_ch, "设置外部通道选择器通道"}, + {kfn_ext_ch_selector_get_ch, "获取外部通道选择器通道"}, + {kfn_set_add_fluid_channel_selector_valve, "设置加液通道选择阀"}, + {kfn_disinfectant_bucket_level_sensor_read_level, "读取消毒液桶液位传感器"}, + +}; + +string Internationalization::ecode2description(int ecode) { + for (const auto& e : chEcodeInfo) { + if (e.code == ecode) { + return fmt::format("{}({})", e.info, e.code); + } + } + return fmt::format("错误码{}", ecode); +} + +string Internationalization::cmdid2str(int cmdid) { + for (const auto& c : cmdInfo) { + if (c.cmdid == cmdid) { + return fmt::format("{}({})", c.info, c.cmdid); + } + } + return fmt::format("命令ID{}", cmdid); +} + +string Internationalization::ecode2description(int ecode, int32_t toboard, int32_t cmdid, uint8_t* param, int32_t paramLen) { // + if (cmdid == kfn_proportional_set_valve) { + int32_t subid = ((int32_t*)param)[0]; + return fmt::format("{},设置比例阀{}异常", ecode, subid); + } + return fmt::format("{},执行{}错误", ecode, cmdid2str(cmdid)); +} diff --git a/appsrc/internationalization.hpp b/appsrc/internationalization.hpp new file mode 100644 index 0000000..818de72 --- /dev/null +++ b/appsrc/internationalization.hpp @@ -0,0 +1,24 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include + +#include "app_protocols/transmit_disfection_protocol/transmit_disfection_protocol.hpp" +#include "iflytop/core/spdlogfactory/logger_factory.hpp" + +namespace iflytop { +using namespace std; +class Internationalization { + public: + static string cmdid2str(int cmdid); + + static string ecode2description(int ecode); + static string ecode2description(int ecode, int32_t toboard, int32_t cmdid, uint8_t* param, int32_t paramLen); +}; + +} // namespace iflytop \ No newline at end of file diff --git a/appsrc/service/app/add_liquid_service.cpp b/appsrc/service/app/add_liquid_service.cpp index 14c5b42..eebbe24 100644 --- a/appsrc/service/app/add_liquid_service.cpp +++ b/appsrc/service/app/add_liquid_service.cpp @@ -133,7 +133,7 @@ void AddLiquidService::addLiquidWork(int stopatg, bool& errorflag) { if (m_dics->WaterSensor_readDeviceBottom()) { logger->error("the bottom of the device has water"); - AppEventBus::ins()->push(make_shared(err::kappe_the_bottom_of_the_device_has_water)); + AppEventBus::ins()->pushWarningPromptEvent(err::kappe_the_bottom_of_the_device_has_water); errorflag = true; m_dics->AddLiquidPump_stop(); return; diff --git a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp index 9914811..bd558e8 100644 --- a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp +++ b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp @@ -332,7 +332,7 @@ void DisinfectionCtrlService::pushSnapshot(shared_ptr logger->info(tracecontent); AppEventBus::ins()->push(make_shared(ss)); if (ss->ecode != 0) { - AppEventBus::ins()->push(make_shared(ss->ecode)); + AppEventBus::ins()->pushWarningPromptEvent(ss->ecode); } } diff --git a/appsrc/service/app/drain_liquid_service.cpp b/appsrc/service/app/drain_liquid_service.cpp index f5d04bd..3ae02ab 100644 --- a/appsrc/service/app/drain_liquid_service.cpp +++ b/appsrc/service/app/drain_liquid_service.cpp @@ -133,7 +133,7 @@ void DrainLiquidService::workThread() { } if (m_dics->WaterSensor_readDeviceBottom()) { - AppEventBus::ins()->push(make_shared(err::kappe_the_bottom_of_the_device_has_water)); + AppEventBus::ins()->pushWarningPromptEvent(err::kappe_the_bottom_of_the_device_has_water,""); break; } diff --git a/appsrc/service/app_core.cpp b/appsrc/service/app_core.cpp index 3aee78f..e090686 100644 --- a/appsrc/service/app_core.cpp +++ b/appsrc/service/app_core.cpp @@ -45,68 +45,7 @@ void AppCore::dosystem(string order, bool dump) { } static void installEcodeInfo() { - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_overtime, "通信超时"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_invalid_param, "非法参数"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_invalid_param_num, "参数数量错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_subdevice_offline, "485总线设备异常"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_function_not_support, "代码错误方法不支持"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_subdevice_overtime, "485总线设备通信超时"); - - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_reset_error, "电机复位错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_subdevice_offline, "电机子设备离线"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_driver_error, "电机驱动器错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_undervoltage_error, "电机欠压错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_unkown_error, "电机未知错误"); - - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_overtemperature_flag, "电机过温"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_overtemperature_pre_warning_flag, "电机过温预警"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_short_to_ground_indicator_phase_A, "电机A相短接"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_short_to_ground_indicator_phase_B, "电机B相短接"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_open_load_indicator_phase_A, "电机A相过载"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_open_load_indicator_phase_B, "电机B相过载"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_standstill_indicator, "电机异常停止"); - - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_AirBlowerError, "空压机异常"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_HeaterError, "加热片异常"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_BlowerError, "鼓风机异常"); - AppEcodeInfoMgr::ins().regEcodeInfo(kerr_ProportionalValveError, "气密性测试专用空压机异常"); - - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_code_error, "代码错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_component_cfg_not_find, "组件配置未找到"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_cmd_not_support, "命令不支持"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_parse_json_err, "解析json错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_std_exception, "标准库异常"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_db_operate_error, "数据库操作错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_missing_param, "缺少参数"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_param_num_err, "参数个数错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_param_value_err, "参数值错误"); - - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_user_not_exist, "用户不存在"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_passwd_error, "密码错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_user_exist, "用户已存在"); - - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_disinfectant_insufficient, "消毒液不足"); - - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_the_bottom_of_the_device_has_water, "硬件仓内有液体"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_the_evaporation_bin_has_water, "蒸发仓内有液体"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_the_sensor_is_prehearting, "传感器正在预热"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_not_detect_udisk, "未检测到U盘"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_udisk_wr_fail, "U盘读写错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_open_file_error, "文件操作错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_adding_liquid_is_already_in_place, "液体已加到位"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_adding_liquid_is_greater_than_the_maximum_capacity_of_the_device, "加液大于设备最大容量"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_sensor_is_pre_hearting, "传感器正在预热"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_state_is_busy, "设备忙"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_is_adding_liquid, "加液中"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_is_draining_liquid, "排液中"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_is_disinfecting, "消毒中"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_is_air_leak_detect_testing, "气密性测试中"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_setting_id_outof_range, "设置ID超出范围"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_exception_flag_is_setted, "设备硬件异常"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_disinfection_state_is_wrong, "消毒状态错误"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_liquid_ctrl_reboot, "液路板复位"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_power_control_reboot, "功率板复位"); - AppEcodeInfoMgr::ins().regEcodeInfo(kappe_device_type_not_init, "设备未初始化"); + } void AppCore::initialize() { diff --git a/appsrc/service/debug_page_test_service.cpp b/appsrc/service/debug_page_test_service.cpp index a5da3da..4b7aac5 100644 --- a/appsrc/service/debug_page_test_service.cpp +++ b/appsrc/service/debug_page_test_service.cpp @@ -6,178 +6,83 @@ void DebugPageTestService::initialize() { REG_CLASS("代码调试"); REG_EXTFN_VOID(enterTestMode, void(void)); + REG_EXTFN_DISPNAME(enterTestMode, "进入测试模式(不控制硬件)"); REG_EXTFN_VOID(exitTestMode, void(void)); + REG_EXTFN_DISPNAME(exitTestMode, "退出测试模式"); + + REG_EXTFN_VOID(startGenFakeH2O2Data, void(void)); + REG_EXTFN_DISPNAME(startGenFakeH2O2Data, "开始生成H2O2数据"); + REG_EXTFN(setInteralFakeSensorData, void(int32_t, int32_t, int32_t), ho2o, rs, rh); + REG_EXTFN_DISPNAME(setInteralFakeSensorData, "设置内部传感器数据"); + REG_EXTFN(setExtWiredFakeSensor1Data, void(int32_t, int32_t, int32_t), ho2o, rs, rh); + REG_EXTFN_DISPNAME(setExtWiredFakeSensor1Data, "设置<外部>有线传感器[1]数据"); + REG_EXTFN(setExtWiredFakeSensor2Data, void(int32_t, int32_t, int32_t), ho2o, rs, rh); + REG_EXTFN_DISPNAME(setExtWiredFakeSensor2Data, "设置<外部>有线传感器[2]数据"); - REG_EXTFN_VOID(startGenFakeHighH2O2Data, void(void)); - REG_EXTFN_DISPNAME(startGenFakeHighH2O2Data, "开始生成高H2O2数据"); - REG_EXTFN_VOID(startGenFakeZeroH2O2Data, void(void)); - REG_EXTFN_DISPNAME(startGenFakeZeroH2O2Data, "开始生成零H2O2数据"); REG_EXTFN_VOID(stopGenFakeH2O2Data, void(void)); REG_EXTFN_DISPNAME(stopGenFakeH2O2Data, "停止生成H2O2数据"); REG_EXTFN_VOID(triggerAppWarningPromoptEvent, void(void)); + REG_EXTFN_DISPNAME(triggerAppWarningPromoptEvent, "触发警告弹窗"); REG_EXTFN(triggerPromptEvent, void(string), message); - - // REG_EXTFN(test_int, int(json), param0); - // REG_EXTFN(test_int, int(SettingId), param0); - // REG_EXTFN(test_int, int(int), param0); - // REG_EXTFN(test_string, void(string), param0); - // REG_EXTFN(test_float, void(float), param0); - // REG_EXTFN(test_double, void(double), param0); - // REG_EXTFN(test_bool, void(bool), param0); - // REG_EXTFN(test_vector_int, void(vector), param0); - // REG_EXTFN(test_vector_string, void(vector), param0); - // REG_EXTFN(test_vector_double, void(vector), param0); - // REG_EXTFN(test_vecto_json, void(vector), param0); - // REG_EXTFN(test_vecto_bool, void(vector), param0); - // REG_EXTFN(test_vecto_enum, void(vector), param0); + REG_EXTFN_DISPNAME(triggerPromptEvent, "触发消息通知弹窗"); } -void DebugPageTestService::test_json(shared_ptr cxt, json param0) {} -void DebugPageTestService::test_enum(shared_ptr cxt, SettingId param0) {} -void DebugPageTestService::test_int(shared_ptr cxt, int param0) {} -void DebugPageTestService::test_string(shared_ptr cxt, string param0) {} -void DebugPageTestService::test_float(shared_ptr cxt, float param0) {} -void DebugPageTestService::test_double(shared_ptr cxt, double param0) {} -void DebugPageTestService::test_bool(shared_ptr cxt, bool param0) {} -void DebugPageTestService::test_vector_int(shared_ptr cxt, vector param0) {} -void DebugPageTestService::test_vector_string(shared_ptr cxt, vector param0) {} -void DebugPageTestService::test_vector_double(shared_ptr cxt, vector param0) {} -void DebugPageTestService::test_vecto_json(shared_ptr cxt, vector param0) {} -void DebugPageTestService::test_vecto_bool(shared_ptr cxt, vector param0) {} -void DebugPageTestService::test_vecto_enum(shared_ptr cxt, vector param0) {} + // void DebugPageTestService::enterTestMode(shared_ptr cxt) { DS->setTestMode(true); } void DebugPageTestService::exitTestMode(shared_ptr cxt) { DS->setTestMode(false); } -typedef struct { - float h2o2[3]; - float rh[3]; - float temp[3]; - float rs[3]; - bool random[3]; - bool enable[3]; -} fake_h2o2_data_cache_t; -#if 0 - -#endif -void DebugPageTestService::startGenFakeZeroH2O2Data(shared_ptr cxt) { +void DebugPageTestService::startGenFakeH2O2Data(shared_ptr cxt) { if (m_genFakeH2O2DataThread) { m_genFakeH2O2DataThread->join(); m_genFakeH2O2DataThread = nullptr; } m_genFakeH2O2DataThread.reset(new Thread("genFakeH2O2DataThread", [this]() { + memset(&reportData, 0, sizeof(reportData)); while (!ThisThread().getExitFlag()) { ThisThread().sleepForMs(1000); - report_h2o2_data_t reportData; - reportData.rh = 50 * 10; - reportData.h2o2 = 0; - reportData.temp = 25 * 10; // 温度是整数,乘以10 - reportData.rs = 50 * 10; // rs is in %RS, convert to float - - h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::Internal, 1, &reportData); + if (online[0]) { + h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::Internal, 1, &reportData[0]); + } else if (online[1]) { + h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::WiredExtSensor, 1, &reportData[1]); + } else if (online[2]) { + h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::WiredExtSensor, 2, &reportData[2]); + } } })); } - -void DebugPageTestService::startGenFakeHighH2O2Data(shared_ptr cxt) { +void DebugPageTestService::stopGenFakeH2O2Data(shared_ptr cxt) { if (m_genFakeH2O2DataThread) { m_genFakeH2O2DataThread->join(); m_genFakeH2O2DataThread = nullptr; } - - m_genFakeH2O2DataThread.reset(new Thread("genFakeH2O2DataThread", [this]() { - while (!ThisThread().getExitFlag()) { - ThisThread().sleepForMs(1000); - - report_h2o2_data_t reportData; - reportData.rh = 50 * 10; - reportData.h2o2 = 400; - reportData.temp = 25 * 10; // 温度是整数,乘以10 - reportData.rs = 50 * 10; // rs is in %RS, convert to float - - h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::Internal, 1, &reportData); - } - })); } -void DebugPageTestService::startGenFakeH2O2Data(shared_ptr cxt, json data) { - if (m_genFakeH2O2DataThread) { - m_genFakeH2O2DataThread->join(); - m_genFakeH2O2DataThread = nullptr; - } - - fake_h2o2_data_cache_t cache; - for (size_t i = 0; i < 3; i++) { - cache.h2o2[i] = data[i]["h2o2"]; - cache.rh[i] = data[i]["rh"]; - cache.temp[i] = data[i]["temp"]; - cache.rs[i] = data[i]["rs"]; - cache.random[i] = data[i]["random"]; - cache.enable[i] = data[i]["enable"]; - } - - m_genFakeH2O2DataThread.reset(new Thread("genFakeH2O2DataThread", [this, cache]() { - while (!ThisThread().getExitFlag()) { - ThisThread().sleepForMs(1000); - - for (size_t i = 0; i < 3; i++) { - if (cache.enable[i]) { - float h2o2 = cache.random[i] ? (rand() % 100) : cache.h2o2[i]; - float rh = cache.random[i] ? (rand() % 100) : cache.rh[i]; - float temp = cache.random[i] ? (rand() % 100) : cache.temp[i]; - float rs = cache.random[i] ? (rand() % 100) : cache.rs[i]; - - logger->debug("genFakeH2O2DataThread: h2o2={}, rh={}, temp={}, rs={}", h2o2, rh, temp, rs); - report_h2o2_data_t reportData; - reportData.rh = rh * 10; - reportData.h2o2 = h2o2; - reportData.temp = temp * 10; // 温度是整数,乘以10 - reportData.rs = rs * 10; // rs is in %RS, convert to float - - if (i == 0) { - h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::Internal, 1, &reportData); - } else if (i == 1) { - h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::WiredExtSensor, 1, &reportData); - } else if (i == 2) { - h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::WiredExtSensor, 2, &reportData); - } - } - } - } - })); +void DebugPageTestService::setExtWiredFakeSensor1Data(shared_ptr cxt, int32_t ho2o, int32_t rs, int32_t rh) { + reportData[1].h2o2 = ho2o; + reportData[1].rs = rs; + reportData[1].rh = rh; + online[1] = true; } -void DebugPageTestService::stopGenFakeH2O2Data(shared_ptr cxt) { - if (m_genFakeH2O2DataThread) { - m_genFakeH2O2DataThread->join(); - m_genFakeH2O2DataThread = nullptr; - } +void DebugPageTestService::setExtWiredFakeSensor2Data(shared_ptr cxt, int32_t ho2o, int32_t rs, int32_t rh) { + reportData[2].h2o2 = ho2o; + reportData[2].rs = rs; + reportData[2].rh = rh; + online[2] = true; } -void DebugPageTestService::getGenFakeH2O2DataDemoJson(shared_ptr cxt) { - json ret; - ret["messageType"] = "Command"; - ret["fnName"] = "startGenFakeH2O2Data"; - ret["className"] = "DebugPageTestService"; - ret["messageId"] = "123"; - ret["timeStamp"] = 123; - ret["params"]["data"] = json::array(); - for (size_t i = 0; i < 3; i++) { - json item; - item["h2o2"] = 0; - item["rh"] = 0; - item["temp"] = 0; - item["rs"] = 0; - item["random"] = true; - item["enable"] = true; - ret["params"]["data"].push_back(item); - } - cxt->rely = ret; + +void DebugPageTestService::setInteralFakeSensorData(shared_ptr cxt, int32_t ho2o, int32_t rs, int32_t rh) { + reportData[0].h2o2 = ho2o; + reportData[0].rs = rs; + reportData[0].rh = rh; + online[0] = true; } void DebugPageTestService::triggerAppWarningPromoptEvent(shared_ptr cxt) { // - AppEventBus::ins()->pushWarningPromptEvent(err::kappe_disinfectant_insufficient); + AppEventBus::ins()->pushWarningPromptEvent(err::kappe_disinfectant_insufficient,""); } void DebugPageTestService::triggerPromptEvent(shared_ptr cxt, string message) { // AppEventBus::ins()->pushPromoptEvent(message); diff --git a/appsrc/service/debug_page_test_service.hpp b/appsrc/service/debug_page_test_service.hpp index 62a9473..62ee92a 100644 --- a/appsrc/service/debug_page_test_service.hpp +++ b/appsrc/service/debug_page_test_service.hpp @@ -17,6 +17,9 @@ class DebugPageTestService : public enable_shared_from_this m_genFakeH2O2DataThread; SERVICE(H2O2SensorStateSyncService, h2o2SensorStateSyncService); + report_h2o2_data_t reportData[3] = {0}; + bool online[3] = {true, false, false}; + public: void initialize(); @@ -27,26 +30,12 @@ class DebugPageTestService : public enable_shared_from_this cxt); void exitTestMode(shared_ptr cxt); - void startGenFakeZeroH2O2Data(shared_ptr cxt); - void startGenFakeH2O2Data(shared_ptr cxt, json data); - void startGenFakeHighH2O2Data(shared_ptr cxt); + void startGenFakeH2O2Data(shared_ptr cxt); void stopGenFakeH2O2Data(shared_ptr cxt); - void getGenFakeH2O2DataDemoJson(shared_ptr cxt); - - void test_json(shared_ptr cxt, json param0); - void test_enum(shared_ptr cxt, SettingId param0); - void test_int(shared_ptr cxt, int param0); - void test_string(shared_ptr cxt, string param0); - void test_float(shared_ptr cxt, float param0); - void test_double(shared_ptr cxt, double param0); - void test_bool(shared_ptr cxt, bool param0); - void test_vector_int(shared_ptr cxt, vector param0); - void test_vector_string(shared_ptr cxt, vector param0); - void test_vector_double(shared_ptr cxt, vector param0); - void test_vecto_json(shared_ptr cxt, vector param0); - void test_vecto_bool(shared_ptr cxt, vector param0); - void test_vecto_enum(shared_ptr cxt, vector param0); + void setInteralFakeSensorData(shared_ptr cxt, int32_t ho2o, int32_t rs, int32_t rh); + void setExtWiredFakeSensor1Data(shared_ptr cxt,int32_t ho2o, int32_t rs, int32_t rh); + void setExtWiredFakeSensor2Data(shared_ptr cxt,int32_t ho2o, int32_t rs, int32_t rh); }; } // namespace iflytop diff --git a/appsrc/service/device_monitor_service.cpp b/appsrc/service/device_monitor_service.cpp index 893c97e..a252369 100644 --- a/appsrc/service/device_monitor_service.cpp +++ b/appsrc/service/device_monitor_service.cpp @@ -30,7 +30,7 @@ void DeviceMonitorService::initialize() { // logger->error("Evaporation bin water sensor triggered"); triggerError = true; - AppEventBus::ins()->push(make_shared(err::kappe_the_evaporation_bin_has_water)); + AppEventBus::ins()->pushWarningPromptEvent(err::kappe_the_evaporation_bin_has_water); } } else { bool trigger = false; @@ -60,7 +60,7 @@ void DeviceMonitorService::initialize() { // logger->error("Device bottom water sensor triggered"); triggerError = true; - AppEventBus::ins()->push(make_shared(err::kappe_the_bottom_of_the_device_has_water)); + AppEventBus::ins()->pushWarningPromptEvent(err::kappe_the_bottom_of_the_device_has_water); } } else { bool trigger = false; diff --git a/appsrc/service/disinfection_logs_service.cpp b/appsrc/service/disinfection_logs_service.cpp index fa09018..ba4f229 100644 --- a/appsrc/service/disinfection_logs_service.cpp +++ b/appsrc/service/disinfection_logs_service.cpp @@ -18,6 +18,7 @@ #include "appbase/utils/zsimplepdf.hpp" #include "appdep/components/ziconv.hpp" #include "utils/app_timeid_generator.hpp" +#include "internationalization.hpp" using namespace std; using namespace iflytop; typedef DisinfectionRecordCSVHeader CSVHeader; @@ -274,7 +275,7 @@ void DisinfectionLogsService::dumpDisinfectionRecord(string sessionId, listtime, "%Y-%m-%d %H:%M:%S")); if (s->ecode != 0) { - csv.addValue(lineNum, m_csvHeaderDict.getChName(CSVHeader::state), /*****************/ "错误:" + ecode2str(s->ecode)); + csv.addValue(lineNum, m_csvHeaderDict.getChName(CSVHeader::state), /*****************/ "错误:" + Internationalization::ecode2description(s->ecode)); lineNum++; continue; } @@ -373,7 +374,7 @@ void DisinfectionLogsService::dumpDisinfectionToPrinterLog(string sessionId, lis if (snapshot->ecode != 0) { content += fmt::format("{}\n", AppTimeIdGenerator::format_zsystem_tp(snapshot->time)); - content += fmt::format("错误: {}\n", ecode2str(snapshot->ecode)); + content += fmt::format("错误: {}\n", Internationalization::ecode2description(snapshot->ecode)); continue; } diff --git a/appsrc/service/hardware/device_io_ctrl_service.cpp b/appsrc/service/hardware/device_io_ctrl_service.cpp index ce5baf0..53be677 100644 --- a/appsrc/service/hardware/device_io_ctrl_service.cpp +++ b/appsrc/service/hardware/device_io_ctrl_service.cpp @@ -1,4 +1,6 @@ #include "device_io_ctrl_service.hpp" + +#include "internationalization.hpp" using namespace iflytop; using namespace std; using namespace core; @@ -42,7 +44,7 @@ static bool isInTestMode() { void DeviceIoControlService::initialize() { REG_CLASS("底层设备控制(Debug)"); - + REG_FN_VOID(AddLiquidPump_addLiquid, void(void)); REG_FN(AddLiquidPump_run, void(int), rpm); REG_FN_VOID(AddLiquidPump_drainLiquid, void(void)); @@ -174,8 +176,8 @@ int DeviceIoControlService::processReportMsg(uint8_t from, uint8_t *hex, uint32_ processHeartReportMsg(from, ack); } else if (packet->fnid == kreport_exception_error) { report_exeception_data_t *ack = (report_exeception_data_t *)packet->params; - logger->error(" REPORT [Exception][FROM:{}] subid:{:x} ecode:{}", from, ack->subid, ecode2str(ack->ecode)); - AppEventBus::ins()->pushWarningPromptEvent(ack->ecode); + logger->error(" REPORT [Exception][FROM:{}] subid:{:x} ecode:{}", from, ack->subid, Internationalization::ecode2description(ack->ecode)); + AppEventBus::ins()->pushWarningPromptEvent(ack->ecode,""); } else if (packet->fnid == kreport_pressure_data) { report_pressure_data_t *ack = (report_pressure_data_t *)packet->params; string info; @@ -196,10 +198,10 @@ int DeviceIoControlService::processReportMsg(uint8_t from, uint8_t *hex, uint32_ logger->warn(" REPORT [DeviceReset][FROM:{}] reason:{}", from, packet->params[0]); if (FIXBOARDID_LC_BOARD == from) { logger->error("Detected board:{} is rebooting, push warning prompt.", from); - AppEventBus::ins()->push(make_shared(err::kappe_liquid_ctrl_reboot)); + AppEventBus::ins()->pushWarningPromptEvent(err::kappe_liquid_ctrl_reboot); } else if (FIXBOARDID_PC_BOARD == from) { logger->error("Detected board:{} is rebooting, push warning prompt.", from); - AppEventBus::ins()->push(make_shared(err::kappe_power_control_reboot)); + AppEventBus::ins()->pushWarningPromptEvent(err::kappe_power_control_reboot); } } else {