Browse Source

v2.3.0|

master
zhaohe 1 month ago
parent
commit
a6c4a0c373
  1. 6
      README.md
  2. 69
      appdep/iflytop/core/components/zenum_template/zenum_template.hpp
  3. 1
      appsrc/appbase/appbean/project_type_enum.hpp
  4. 4
      appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp
  5. 15
      appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp
  6. 26
      appsrc/appcomponents/canchannel/transmit_disinfection_can_master.cpp
  7. 37
      appsrc/appcomponents/canchannel/transmit_disinfection_can_master.hpp
  8. 2
      appsrc/appconfig/basic/zappversion.hpp
  9. 6
      appsrc/baseservice/front_msg_processer/front_msg_processer.cpp
  10. 10
      appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp
  11. 4
      appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.hpp
  12. 2
      appsrc/service/hardware/base/h2o2_sensor_data_mgr.cpp
  13. 2
      appsrc/service/hardware/device_io_ctrl_service.cpp
  14. 48
      appsrc/service/setting/ext_setting_mgr_service.cpp
  15. 1
      appsrc/service/setting/ext_setting_mgr_service.hpp
  16. 18
      appsrc/service/setting_mgr_service.cpp

6
README.md

@ -162,6 +162,12 @@ VERSION 218
VERSION 2.1.9
1. 修复压力泄露状态切换过早的BUG
VERSION 2.3.0
1. 添加部分调试日志
2. 改进调试页面显示效果
3. 修复部分BUG
TODO:
1.添加用户增加用户查重检查
2.测试如果数据库文件损坏,设备的执行逻辑

69
appdep/iflytop/core/components/zenum_template/zenum_template.hpp

@ -34,40 +34,41 @@
#define ZENUM_IMPL4(type, enumname) ret.push_back(#enumname);
#define ZENUM_IMPL5(type, enumname) ret.push_back(enumname);
#define ZENUM_DECLAR(name, elist) \
namespace iflytop { \
using namespace std; \
using namespace nlohmann; \
class name { \
public: \
typedef enum { elist(name, ZENUM_IMPL1) kunkown } enum_val_t; \
enum_val_t id; \
elist(name, ZENUM_IMPL2) public : name() {} \
name(enum_val_t id) : id(id) {} \
name(int id) : id((enum_val_t)id) {} \
name(string str) : id(toEnum(str)) {} \
enum_val_t getId() const { return id; } \
bool eq(string val) const { return (toString(id) == val); } \
bool eq(enum_val_t id) const { return (this->id == id); } \
bool eq(int id) const { return (this->id == id); } \
static string toString(enum_val_t enu) { \
switch (enu) { elist(name, ZENUM_TO_STR_IMPL) default : return "unknown"; } \
} \
static enum_val_t toEnum(string str) { elist(name, ZENUM_TO_ENUM_IMPL) return kunkown; } \
operator string() const { return toString(id); } \
operator int() const { return int(id); } \
bool operator==(const name& setid) const { return id == setid.id; } \
static vector<string> getEnumStrList() { \
vector<string> ret; \
elist(name, ZENUM_IMPL4) return ret; \
} \
static vector<name> getEnumList() { \
vector<name> ret; \
elist(name, ZENUM_IMPL5) return ret; \
} \
}; \
static inline void to_json(json& j, const name& setid) { j = setid.toString(setid.getId()); } \
static inline void from_json(const json& j, name& setid) { setid = name(string(j)); } \
#define ZENUM_DECLAR(name, elist) \
namespace iflytop { \
using namespace std; \
using namespace nlohmann; \
class name { \
public: \
typedef enum { elist(name, ZENUM_IMPL1) kunkown } enum_val_t; \
enum_val_t id; \
elist(name, ZENUM_IMPL2) public : name() {} \
name(enum_val_t id) : id(id) {} \
name(int id) : id((enum_val_t)id) {} \
name(string str) : id(toEnum(str)) {} \
enum_val_t getId() const { return id; } \
bool eq(string val) const { return (toString(id) == val); } \
bool eq(enum_val_t id) const { return (this->id == id); } \
bool eq(int id) const { return (this->id == id); } \
string toString() const { return toString(id); } \
static string toString(enum_val_t enu) { \
switch (enu) { elist(name, ZENUM_TO_STR_IMPL) default : return "unknown"; } \
} \
static enum_val_t toEnum(string str) { elist(name, ZENUM_TO_ENUM_IMPL) return kunkown; } \
operator string() const { return toString(id); } \
operator int() const { return int(id); } \
bool operator==(const name& setid) const { return id == setid.id; } \
static vector<string> getEnumStrList() { \
vector<string> ret; \
elist(name, ZENUM_IMPL4) return ret; \
} \
static vector<name> getEnumList() { \
vector<name> ret; \
elist(name, ZENUM_IMPL5) return ret; \
} \
}; \
static inline void to_json(json& j, const name& setid) { j = setid.toString(setid.getId()); } \
static inline void from_json(const json& j, name& setid) { setid = name(string(j)); } \
}
#define ZENUM_IMPL(name, elist) \

1
appsrc/appbase/appbean/project_type_enum.hpp

@ -10,4 +10,3 @@
marco(type, DT100N) /**/
ZENUM_DECLAR(ProjectTypeEnum, ProjectTypeEnumLIST);

4
appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp

@ -115,7 +115,7 @@ shared_ptr<Receipt> ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t
shared_ptr<Receipt> receipt;
lock_guard<mutex> lock(m_lock);
usleep(10 * 1000);
logger->debug("tx [to:{}, cmd:{}, param:{}({}) ]", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen);
logger->debug("tx [to:{}, cmd:{}, param:{}({}) ] overtime:{}", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen,overtime);
for (size_t i = 0; i <= 5; i++) {
try {
@ -132,7 +132,7 @@ shared_ptr<Receipt> ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t
continue;
} else if (e.ecode == kerr_subdevice_overtime) {
if (i != 0) {
logger->warn("tx [to:{}, cmd:{}, param:{}({}) ] subdevice overtime, try again %d", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen, i);
logger->warn("tx [to:{}, cmd:{}, param:{}({}) ] subdevice overtime, try again {}", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen, i);
}
usleep(1000 * 1000);
continue;

15
appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp

@ -22,6 +22,7 @@
namespace iflytop {
using namespace std;
namespace zscanprotocol {
#define TDCAN_DEFUALT_OVERTIME 1000
typedef function<string(int ecode)> ecode2str_t;
@ -83,13 +84,13 @@ class ZSCanProtocolCom {
public:
void initialize();
shared_ptr<Receipt> callcmd(int32_t to, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime = 100);
shared_ptr<Receipt> callcmd0(int32_t to, int32_t cmdid, int32_t overtime = 100);
shared_ptr<Receipt> callcmd1(int32_t to, int32_t cmdid, int32_t param0, int32_t overtime = 100);
shared_ptr<Receipt> callcmd2(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t overtime = 100);
shared_ptr<Receipt> callcmd3(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t overtime = 100);
shared_ptr<Receipt> callcmd4(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t overtime = 100);
shared_ptr<Receipt> callcmd5(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t param4, int32_t overtime = 100);
shared_ptr<Receipt> callcmd(int32_t to, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime = TDCAN_DEFUALT_OVERTIME);
shared_ptr<Receipt> callcmd0(int32_t to, int32_t cmdid, int32_t overtime = TDCAN_DEFUALT_OVERTIME);
shared_ptr<Receipt> callcmd1(int32_t to, int32_t cmdid, int32_t param0, int32_t overtime = TDCAN_DEFUALT_OVERTIME);
shared_ptr<Receipt> callcmd2(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t overtime = TDCAN_DEFUALT_OVERTIME);
shared_ptr<Receipt> callcmd3(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t overtime = TDCAN_DEFUALT_OVERTIME);
shared_ptr<Receipt> callcmd4(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t overtime = TDCAN_DEFUALT_OVERTIME);
shared_ptr<Receipt> callcmd5(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t param4, int32_t overtime = TDCAN_DEFUALT_OVERTIME);
void sendraw(int32_t from, int32_t to, uint8_t *data, size_t len);

26
appsrc/appcomponents/canchannel/transmit_disinfection_can_master.cpp

@ -12,26 +12,26 @@ void TransmitDisinfectionCanMaster::initialize() {
ack_read_board_info_data_t TransmitDisinfectionCanMaster::readboardinfo(int to) {
ack_read_board_info_data_t ack;
auto receipt = m_com->callcmd0(to, kfn_read_board_info, DEFUALT_OVERTIME);
auto receipt = m_com->callcmd0(to, kfn_read_board_info);
memcpy(&ack, receipt->getPacket()->params, sizeof(ack));
return ack;
}
ack_sysinfo_t TransmitDisinfectionCanMaster::readsysinfo(int to) {
ack_sysinfo_t ack;
auto receipt = m_com->callcmd0(to, kfn_read_sysinfo, DEFUALT_OVERTIME);
auto receipt = m_com->callcmd0(to, kfn_read_sysinfo);
memcpy(&ack, receipt->getPacket()->params, sizeof(ack));
return ack;
}
ask_taskinfo_t TransmitDisinfectionCanMaster::readtaskinfo(int to, int32_t taskoff) {
ask_taskinfo_t ack;
auto receipt = m_com->callcmd1(to, kfn_read_taskinfo, taskoff, DEFUALT_OVERTIME);
auto receipt = m_com->callcmd1(to, kfn_read_taskinfo, taskoff);
memcpy(&ack, receipt->getPacket()->params, sizeof(ack));
return ack;
}
void TransmitDisinfectionCanMaster::clearResetFlag(int to) { m_com->callcmd0(to, kfn_clear_reset_flag, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::clearResetFlag(int to) { m_com->callcmd0(to, kfn_clear_reset_flag); }
void TransmitDisinfectionCanMaster::pingAllBoard() {
try {
@ -40,21 +40,21 @@ void TransmitDisinfectionCanMaster::pingAllBoard() {
}
return;
}
void TransmitDisinfectionCanMaster::enableReport(int to, bool enable) { m_com->callcmd1(to, kfn_enable_report, enable, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::enableReport(int to, bool enable) { m_com->callcmd1(to, kfn_enable_report, enable); }
void TransmitDisinfectionCanMaster::pumpRotate(int boardid, int subid, int rpm) { m_com->callcmd2(boardid, kfn_pump_rotate, subid, rpm, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::pumpStop(int boardid, int subid) { m_com->callcmd1(boardid, kfn_pump_stop, subid, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::pumpRotate(int boardid, int subid, int rpm) { m_com->callcmd2(boardid, kfn_pump_rotate, subid, rpm); }
void TransmitDisinfectionCanMaster::pumpStop(int boardid, int subid) { m_com->callcmd1(boardid, kfn_pump_stop, subid); }
void TransmitDisinfectionCanMaster::pumpSetIholdIrunIdelay(int boardid, int subid, int ihold, int irun, int idelay) {
m_com->callcmd4(boardid, kfn_pump_set_ihold_irun_idelay, subid, irun, ihold, idelay, DEFUALT_OVERTIME);
m_com->callcmd4(boardid, kfn_pump_set_ihold_irun_idelay, subid, irun, ihold, idelay);
}
void TransmitDisinfectionCanMaster::pumpSetRamp(int boardid, int index, int vs, int a1, int amx, int v1) { m_com->callcmd5(boardid, kfn_pump_set_ramp, index, vs, a1, amx, v1, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::pumpSetTzw(int boardid, int index, int tzw) { m_com->callcmd2(boardid, kfn_pump_set_tzw, index, tzw, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::pumpSetSubicReg(int boardid, int subid, int regadd, int val) { m_com->callcmd3(boardid, kfn_pump_set_subic_reg, subid, regadd, val, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::pumpSetRamp(int boardid, int index, int vs, int a1, int amx, int v1) { m_com->callcmd5(boardid, kfn_pump_set_ramp, index, vs, a1, amx, v1); }
void TransmitDisinfectionCanMaster::pumpSetTzw(int boardid, int index, int tzw) { m_com->callcmd2(boardid, kfn_pump_set_tzw, index, tzw); }
void TransmitDisinfectionCanMaster::pumpSetSubicReg(int boardid, int subid, int regadd, int val) { m_com->callcmd3(boardid, kfn_pump_set_subic_reg, subid, regadd, val); }
int TransmitDisinfectionCanMaster::pumpGetSubicReg(int boardid, int subid, int regadd) {
shared_ptr<Receipt> receipt = m_com->callcmd2(boardid, kfn_pump_get_subic_reg, subid, regadd, DEFUALT_OVERTIME);
shared_ptr<Receipt> receipt = m_com->callcmd2(boardid, kfn_pump_get_subic_reg, subid, regadd);
return *(int32_t *)receipt->getPacket()->params;
}
void TransmitDisinfectionCanMaster::pumpPing(int32_t boardid) { m_com->callcmd1(boardid, kfn_pump_ping, boardid, DEFUALT_OVERTIME); }
void TransmitDisinfectionCanMaster::pumpPing(int32_t boardid) { m_com->callcmd1(boardid, kfn_pump_ping, boardid); }
/***********************************************************************************************************************
* blower *

37
appsrc/appcomponents/canchannel/transmit_disinfection_can_master.hpp

@ -15,7 +15,6 @@
//
#include "app_protocols/transmit_disfection_protocol/transmit_disfection_protocol.hpp"
#include "appcomponents/canchannel/com/zscanprotocol_com.hpp"
#define DEFUALT_OVERTIME 500
namespace iflytop {
using namespace std;
@ -46,7 +45,7 @@ class TransmitDisinfectionCanMaster {
void clearResetFlag(int to);
void pingAllBoard();
void enableReport(int to, bool enable);
void resetBoard(int to) { m_com->callcmd0(to, kfn_reset_board, DEFUALT_OVERTIME); }
void resetBoard(int to) { m_com->callcmd0(to, kfn_reset_board); }
void h2o2SensorReadCalibrationDate(int boardid, int32_t *year, int32_t *month, int32_t *day) { //
auto ret = m_com->callcmd0(boardid, kfn_h2o2_sensor_read_calibration_date);
@ -54,7 +53,7 @@ class TransmitDisinfectionCanMaster {
*month = ret->getContent(1);
*day = ret->getContent(2);
}
int h2o2SensorReadSubIcErrorcode(int boardid) { return m_com->callcmd0(boardid, kfn_h2o2_sensor_read_sub_ic_errorcode, DEFUALT_OVERTIME)->getContent(0); }
int h2o2SensorReadSubIcErrorcode(int boardid) { return m_com->callcmd0(boardid, kfn_h2o2_sensor_read_sub_ic_errorcode)->getContent(0); }
uint8_t *h2o2SensorReadSubIcReg(int boardid, int reg, int num) { return m_com->callcmd2(boardid, kfn_h2o2_sensor_read_sub_ic_reg, reg, num)->getByte(); }
/***********************************************************************************************************************
@ -68,7 +67,7 @@ class TransmitDisinfectionCanMaster {
void pumpSetSubicReg(int boardid, int subid, int regadd, int val);
int pumpGetSubicReg(int boardid, int subid, int regadd);
void pumpPing(int32_t boardid);
int32_t pumpIsRun(int boardid, int subid) { return m_com->callcmd1(boardid, kfn_pump_is_run, subid, DEFUALT_OVERTIME)->getContent(0); }
int32_t pumpIsRun(int boardid, int subid) { return m_com->callcmd1(boardid, kfn_pump_is_run, subid)->getContent(0); }
/***********************************************************************************************************************
* blower *
@ -79,7 +78,7 @@ class TransmitDisinfectionCanMaster {
int blowerReadEI(int boardid);
int blowerReadEIAdcRaw(int boardid);
int blowerReadElectricIsError(int boardid);
int blowserIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_blower_is_open, DEFUALT_OVERTIME)->getContent(0); }
int blowserIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_blower_is_open)->getContent(0); }
/***********************************************************************************************************************
* air_compressor *
@ -88,10 +87,10 @@ class TransmitDisinfectionCanMaster {
void airCompressorCtrlSafeValve(int boardid, int valve_state);
int airCompressorReadEI(int boardid);
int airCompressorReadEIAdcRaw(int boardid);
int airCompressorIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_compressor_is_open, DEFUALT_OVERTIME)->getContent(0); }
int airCompressorIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_compressor_is_open)->getContent(0); }
int airLeakDetectTestACCtrl(int boardid, int32_t val);
int airLeakDetectTestACIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_detect_ac_is_open, DEFUALT_OVERTIME)->getContent(0); }
int airLeakDetectTestACIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_detect_ac_is_open)->getContent(0); }
/***********************************************************************************************************************
* heater *
@ -102,7 +101,7 @@ class TransmitDisinfectionCanMaster {
int heaterReadTemperature(int boardid);
int heaterReadEIAdcRaw(int boardid);
int heaterReadTemperatureAdcRaw(int boardid);
int heaterIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_heater_is_open, DEFUALT_OVERTIME)->getContent(0); }
int heaterIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_heater_is_open)->getContent(0); }
void warningLightSetState(int boardid, int r, int g, int b, int warning);
void warningLightReadState(int boardid, int *r, int *g, int *b, int *warning) {
@ -118,24 +117,24 @@ class TransmitDisinfectionCanMaster {
int32_t psBusReadData(int boardid, int subid);
ack_psbus_scan_t psBusScan(int boardid);
void psBusStartReport(int boardid, int period) { m_com->callcmd1(boardid, kfn_psbus_start_report, period, DEFUALT_OVERTIME); }
void psBusStopReport(int boardid) { m_com->callcmd0(boardid, kfn_psbus_stop_report, DEFUALT_OVERTIME); }
void psBusStartReport(int boardid, int period) { m_com->callcmd1(boardid, kfn_psbus_start_report, period); }
void psBusStopReport(int boardid) { m_com->callcmd0(boardid, kfn_psbus_stop_report); }
void proportionalSetValve(int boardid, int valveId, int valveValue) { m_com->callcmd2(boardid, kfn_proportional_set_valve, valveId, valveValue, DEFUALT_OVERTIME); }
int proportionalReadPos(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_read_pos, valveId, DEFUALT_OVERTIME)->getContent(0); }
int proportionalIsBusy(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_is_busy, valveId, DEFUALT_OVERTIME)->getContent(0); }
void proportionalSetValve(int boardid, int valveId, int valveValue) { m_com->callcmd2(boardid, kfn_proportional_set_valve, valveId, valveValue); }
int proportionalReadPos(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_read_pos, valveId)->getContent(0); }
int proportionalIsBusy(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_is_busy, valveId)->getContent(0); }
void airLeakDetectTestSetMode(int boardid, int mode) { m_com->callcmd1(boardid, kfn_air_leak_test_set_mode, mode, DEFUALT_OVERTIME); }
int airLeakDetectTestGetMode(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_test_get_mode, DEFUALT_OVERTIME)->getContent(0); }
void airLeakDetectTestSetMode(int boardid, int mode) { m_com->callcmd1(boardid, kfn_air_leak_test_set_mode, mode); }
int airLeakDetectTestGetMode(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_test_get_mode)->getContent(0); }
void extChSelectorSetCh(int boardid, int ch) { m_com->callcmd1(boardid, kfn_ext_ch_selector_set_ch, ch, DEFUALT_OVERTIME); }
int extChSelectorGetCh(int boardid) { return m_com->callcmd0(boardid, kfn_ext_ch_selector_get_ch, DEFUALT_OVERTIME)->getContent(0); }
void extChSelectorSetCh(int boardid, int ch) { m_com->callcmd1(boardid, kfn_ext_ch_selector_set_ch, ch); }
int extChSelectorGetCh(int boardid) { return m_com->callcmd0(boardid, kfn_ext_ch_selector_get_ch)->getContent(0); }
// cmd: state ,true打开进气阀,false关闭进气阀门 加液进气电磁阀(打开,可以正常加液排液,关闭后加液泵倒转可以排空管路
void setAddFluidChannelSelectorValve(int boardid, bool val) { m_com->callcmd1(boardid, kfn_set_add_fluid_channel_selector_valve, val, DEFUALT_OVERTIME); }
void setAddFluidChannelSelectorValve(int boardid, bool val) { m_com->callcmd1(boardid, kfn_set_add_fluid_channel_selector_valve, val); }
int liquidLevelReadIoState(int boardid) {
auto receipt = m_com->callcmd1(boardid, kfn_disinfectant_bucket_level_sensor_read_level, DEFUALT_OVERTIME);
auto receipt = m_com->callcmd0(boardid, kfn_disinfectant_bucket_level_sensor_read_level);
return receipt->getContent(0);
}
};

2
appsrc/appconfig/basic/zappversion.hpp

@ -1,3 +1,3 @@
#pragma once
#define VERSION "2.2.7"
#define VERSION "2.3.0"
#define PROJECT_NAME "TRANSMIT_DM"

6
appsrc/baseservice/front_msg_processer/front_msg_processer.cpp

@ -64,6 +64,7 @@ json FrontMsgProcesser::geFnList() {
}
void FrontMsgProcesser::processMsg(shared_ptr<MsgProcessContext> cxt) {
logger->debug("processMsg");
string className = cxt->cmd["className"];
string fnName = cxt->cmd["fnName"];
string key = className + "." + fnName;
@ -72,7 +73,7 @@ void FrontMsgProcesser::processMsg(shared_ptr<MsgProcessContext> cxt) {
string fn = className + "." + fnName;
string param = cxt->cmd["params"].dump();
// logger->info("call: {}->({})", fn, param);
// logger->debug("call: {}->({})", fn, param);
if (fn == "FNScheduler.geFnList") {
cxt->receipt["ackcode"] = 0;
@ -87,7 +88,9 @@ void FrontMsgProcesser::processMsg(shared_ptr<MsgProcessContext> cxt) {
cxt->receipt["fromFn"] = m_msgProcesserMap[key]->fnName;
try {
logger->debug(" call: {}->({})", fn, param);
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 (cxt->rely.empty() == false) cxt->receipt["rely"] = cxt->rely;
@ -103,4 +106,5 @@ void FrontMsgProcesser::processMsg(shared_ptr<MsgProcessContext> cxt) {
cxt->receipt["ackcode"] = err::kappe_cmd_not_support;
cxt->receipt["message"] = fmt::format("{}", ecode2str(cxt->receipt["ackcode"]));
}
logger->debug("processMsg end");
}

10
appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp

@ -78,9 +78,7 @@ void IflytopFrontEndService::sendReport(json reportType, json report) {
auto clients = m_reportServer->getClients();
for (auto& each : clients) {
if (each) {
each->sendText(report.dump());
}
}
auto serverClients = m_server->getClients();
for (auto& each : serverClients) {
@ -114,22 +112,26 @@ void IflytopFrontEndService::onMessageCallback(weak_ptr<WebSocket> webSocket, sh
logger->info(" {}: {}", it.first, it.second);
}
m_workQueue->enQueue([this, webSocket]() { onConnect(webSocket); });
// m_workQueue->enQueue([this, webSocket]() { onConnect(webSocket); });
} else if (msg->type == ix::WebSocketMessageType::Message) {
logger->debug("downlink msg: {}", msg->str);
string msgtext = msg->str;
m_workQueue->enQueue([this, webSocket, msgtext]() {
logger->debug("");
logger->debug("------------->process rx");
try {
processRxMessage(webSocket, msgtext);
} catch (const std::exception& e) {
logger->error("catch exception,processRxMessage error: {}", e.what());
}
logger->debug("<-------------process rx end\n");
});
} else if (msg->type == ix::WebSocketMessageType::Close) {
logger->info("{} Closed connection", msg->closeInfo.remote);
m_workQueue->enQueue([this, webSocket]() { onDisconnect(webSocket); });
// m_workQueue->enQueue([this, webSocket]() { onDisconnect(webSocket); });
}
}
void IflytopFrontEndService::processRxMessage(weak_ptr<WebSocket> webSocket, string rxmsg) {

4
appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.hpp

@ -37,8 +37,8 @@ class IflytopFrontEndService : public enable_shared_from_this<IflytopFrontEndSer
public:
// nod::signal<void(weak_ptr<WebSocket> webSocket, const ix::WebSocketMessagePtr& msg)> onMessage;
nod::signal<void(weak_ptr<WebSocket> webSocket)> onConnect;
nod::signal<void(weak_ptr<WebSocket> webSocket)> onDisconnect;
// nod::signal<void(weak_ptr<WebSocket> webSocket)> onConnect;
// nod::signal<void(weak_ptr<WebSocket> webSocket)> onDisconnect;
nod::signal<void(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt)> onMessage;
private:

2
appsrc/service/hardware/base/h2o2_sensor_data_mgr.cpp

@ -99,6 +99,8 @@ void H2O2SensorDataMgr::updateH2o2SensorData(uint8_t sensorId, report_h2o2_data_
if (logcnt < 10 || GET_SERVICE(DeviceStateService)->getDeviceState() == DeviceState::Disinfection) {
logger->info("update h2o2 : {} {}", sensorId, json(h2o2data).dump());
} else {
logger->debug("update h2o2 : {} {}", sensorId, json(h2o2data).dump());
}
if (zsteady_clock().gets() > SENSOR_PREHEART_TIME_S) {

2
appsrc/service/hardware/device_io_ctrl_service.cpp

@ -179,8 +179,6 @@ int DeviceIoControlService::processReportMsg(uint8_t from, uint8_t *hex, uint32_
if (DS->isTestMode()) return 0;
tdcan_frame_t *packet = (tdcan_frame_t *)hex;
logger->info("Rx.....");
return 0;
if (packet->fnid == kreport_h2o2_sensor_data) {
report_h2o2_data_t *h2o2data = (report_h2o2_data_t *)packet->params;
int sensorId = 0;

48
appsrc/service/setting/ext_setting_mgr_service.cpp

@ -13,6 +13,7 @@ void ExtSettingMgrService::initialize() {
// REG_EXTFN(setprojectType, void(ProjectTypeEnum));
// REG_EXTFN(setDeviceType, void(ProjectTypeEnum));
REG_EXTFN(setDeviceInfo, json(ProjectTypeEnum, int, int, int, int, int), deviceType, year, month, day, index);
REG_EXTFN(setDeviceInfo2, json(string), id);
REG_EXTFN(setCanIF, void(string));
REG_EXTFN(setCanBitrate, void(int32_t));
@ -85,28 +86,37 @@ void ExtSettingMgrService::setH2o2SensorExpireTimeMonth(shared_ptr<MsgProcessCon
void ExtSettingMgrService::setEmptyThePipeLineTimeS(shared_ptr<MsgProcessContext> cxt, int32_t val) { DeviceExtSettingDAO::ins()->setEmptyThePipeLineTimeS(val); }
void ExtSettingMgrService::setEmptyingLiquidStorageTankCondtionG(shared_ptr<MsgProcessContext> cxt, int32_t val) { DeviceExtSettingDAO::ins()->setEmptyingLiquidStorageTankCondtionG(val); }
void ExtSettingMgrService::setDeviceInfo(shared_ptr<MsgProcessContext> cxt, ProjectTypeEnum type, int year, int month, int day, int index) {
string deviceIdPrefix;
if (type == ProjectTypeEnum::DT600N) {
DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT600N);
deviceIdPrefix = "DT600N";
} else if (type == ProjectTypeEnum::DT600B) {
DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT600B);
deviceIdPrefix = "DT600B";
} else if (type == ProjectTypeEnum::DT300N) {
DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT300N);
deviceIdPrefix = "DT300N";
} else if (type == ProjectTypeEnum::DT300W) {
DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT300W);
deviceIdPrefix = "DT300W";
} else if (type == ProjectTypeEnum::DT100N) {
DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT100N);
deviceIdPrefix = "DT100N";
}
DeviceExtSettingDAO::ins()->setprojectType(type);
DeviceExtSettingDAO::ins()->setDeviceType(type);
DeviceExtSettingDAO::ins()->setDeviceId(fmt::format("{}{:0>2d}{:0>2d}{:0>2d}{:0>3d}", deviceIdPrefix, year, month, day, index));
DeviceExtSettingDAO::ins()->setDeviceId(fmt::format("{}{:0>2d}{:0>2d}{:0>2d}{:0>3d}", type, year, month, day, index));
cxt->rely["extSettings"] = DeviceExtSettingDAO::ins()->getDeviceExtSettingAsJson();
}
void ExtSettingMgrService::setDeviceInfo2(shared_ptr<MsgProcessContext> cxt, string id) {
// DT300N250403001
// 解析DT300N250403001
int deviceTypeLen = id.length() - 9;
if (deviceTypeLen < 6) {
cxt->rely["error"] = fmt::format("设备ID格式错误,设备ID长度{}<15", id.length());
return;
}
string deviceType = id.substr(0, deviceTypeLen);
ProjectTypeEnum dtype = ProjectTypeEnum(deviceType);
if (dtype.getId() == ProjectTypeEnum::kunkown) {
cxt->rely["error"] = fmt::format("设备ID格式错误,不支持的设备类型:{}", deviceType);
return;
}
int year = stoi(id.substr(deviceTypeLen, 2));
int month = stoi(id.substr(deviceTypeLen + 2, 2));
int day = stoi(id.substr(deviceTypeLen + 4, 2));
int index = stoi(id.substr(deviceTypeLen + 6, 3));
DeviceExtSettingDAO::ins()->setprojectType(dtype);
DeviceExtSettingDAO::ins()->setDeviceType(dtype);
DeviceExtSettingDAO::ins()->setDeviceId(fmt::format("{}{:0>2d}{:0>2d}{:0>2d}{:0>3d}", dtype.toString(), year, month, day, index));
}
void ExtSettingMgrService::rebootDevice(shared_ptr<MsgProcessContext> cxt) { system("reboot"); }
void ExtSettingMgrService::restartProgram(shared_ptr<MsgProcessContext> cxt) { system("systemctl restart zapp &"); }

1
appsrc/service/setting/ext_setting_mgr_service.hpp

@ -26,6 +26,7 @@ class ExtSettingMgrService : public enable_shared_from_this<ExtSettingMgrService
void showHelp(shared_ptr<MsgProcessContext> cxt);
void setDeviceInfo(shared_ptr<MsgProcessContext> cxt, ProjectTypeEnum type, int year, int month, int day, int index);
void setDeviceInfo2(shared_ptr<MsgProcessContext> cxt, string id);
void setDeviceId(shared_ptr<MsgProcessContext> cxt, string deviceId);

18
appsrc/service/setting_mgr_service.cpp

@ -41,12 +41,26 @@ void SettingMgrService::addNewFormula(shared_ptr<MsgProcessContext> cxt) {
}
void SettingMgrService::delFormula(shared_ptr<MsgProcessContext> cxt, string formula_id) {
auto oldformulaName = FORMULA_DB->getFormula(formula_id, "name");
string formulaName;
try {
formulaName = FORMULA_DB->getFormula(formula_id, "name");
} catch (const std::exception& e) {
}
FORMULA_DB->deleteFormula(formula_id);
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("删除配方 {}", oldformulaName));
if (!formulaName.empty()) {
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("删除配方 {}", formulaName));
}
return;
}
void SettingMgrService::updateFormula(shared_ptr<MsgProcessContext> cxt, string formula_id, json formula) {
// 检查 formula中的所有字段是否都是string类型
for (auto& item : formula.items()) {
if (!item.value().is_string()) {
THROW_APP_EXCEPTION(err::kappe_code_error, fmt::format("formula item {} is not string", item.key()));
}
}
FORMULA_DB->updateFormula(formula_id, formula);
return;
}

Loading…
Cancel
Save