Browse Source

update

master
zhaohe 2 years ago
parent
commit
f661ee5cb0
  1. 2
      .clang-format
  2. 2
      iflytoplinuxsdk
  3. 65
      src/db/db_service.cpp
  4. 45
      src/main_control_service.cpp
  5. 34
      src/service/device_io_control_service.cpp
  6. 7
      src/service/device_io_control_service.hpp
  7. 16
      src/service/device_io_control_service_test.cpp
  8. 4
      src/service/device_io_control_service_test.hpp

2
.clang-format

@ -2,7 +2,7 @@
# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
Language: Cpp
BasedOnStyle: Google
ColumnLimit: 160
ColumnLimit: 200
AlignConsecutiveMacros: true
AlignConsecutiveDeclarations: true
AlignConsecutiveAssignments: true

2
iflytoplinuxsdk

@ -1 +1 @@
Subproject commit 0b3d9f6313df93b5d895ecf7723c5c5dfff4ea16
Subproject commit a98acfa311912201672637c608f368e2778aabdc

65
src/db/db_service.cpp

@ -58,6 +58,26 @@ using namespace nlohmann;
make_column("behavior", &UserBehaviorRecord::behavior), /**/ \
make_column("behaviorinfo", &UserBehaviorRecord::behaviorinfo))
/*******************************************************************************
* *
*******************************************************************************/
static Setting config_settings_table[] = {
{.id = 1, .name = "stoped_gs", .name_ch = "消毒停止过氧化氢溶度", .val_lower_limit = 0, .val_upper_limit = 2000, .permission_level = 0, .val = 1800},
{.id = 2, .name = "continued_gs", .name_ch = "消毒继续过氧化氢溶度", .val_lower_limit = 0, .val_upper_limit = 2000, .permission_level = 0, .val = 1500},
{.id = 3, .name = "stoped_satur", .name_ch = "消毒停止过氧化氢相对饱和度", .val_lower_limit = 0, .val_upper_limit = 100, .permission_level = 0, .val = 85},
{.id = 4, .name = "continued_satur", .name_ch = "消毒继续过氧化氢相对饱和度", .val_lower_limit = 0, .val_upper_limit = 100, .permission_level = 0, .val = 70},
{.id = 5, .name = "max_humidity", .name_ch = "允许消毒最大湿度", .val_lower_limit = 0, .val_upper_limit = 100, .permission_level = 0, .val = 90},
{.id = 6, .name = "drainage_pump_speed", .name_ch = "排液蠕动泵转速", .val_lower_limit = 0, .val_upper_limit = 90, .permission_level = 0, .val = 90},
{.id = 7, .name = "injection_pump_speed", .name_ch = "喷射蠕动泵转速", .val_lower_limit = 0, .val_upper_limit = 50, .permission_level = 0, .val = 50},
{.id = 8, .name = "pre_heat_time_s", .name_ch = "预热时间", .val_lower_limit = 0, .val_upper_limit = 600, .permission_level = 0, .val = 120},
{.id = 9, .name = "stoped_humi", .name_ch = "消毒停止相对湿度", .val_lower_limit = 0, .val_upper_limit = 100, .permission_level = 0, .val = 85},
{.id = 10, .name = "continued_humi", .name_ch = "消毒继续相对湿度", .val_lower_limit = 0, .val_upper_limit = 100, .permission_level = 0, .val = 70},
{.id = 11, .name = "proportional_valve_default_value", .name_ch = "正负压默认开合比例", .val_lower_limit = 0, .val_upper_limit = 100, .permission_level = 0, .val = 10},
};
#define ZARRARY_SIZE(val) (sizeof(val) / sizeof(val[0]))
DBService::DBService(/* args */) {}
void DBService::initialize() {
@ -115,35 +135,11 @@ id setting_name setting_name_ch val_upper_limit val_lower_limi
auto storage = make_storage(SETTING_DB, SETTING_DB_STRUCT);
storage.sync_schema();
if (storage.get_all<Setting>(where(c(&Setting::id) == 1)).size() == 0) //
storage.insert(Setting{1, "stoped_gs", "消毒停止过氧化氢溶度", 0, 2000, 0, 1800});
if (storage.get_all<Setting>(where(c(&Setting::id) == 2)).size() == 0)
storage.insert(Setting{2, "continued_gs", "消毒继续过氧化氢溶度", 0, 2000, 0, 1500});
if (storage.get_all<Setting>(where(c(&Setting::id) == 3)).size() == 0)
storage.insert(Setting{3, "stoped_satur", "消毒停止过氧化氢相对饱和度", 0, 100, 0, 85});
if (storage.get_all<Setting>(where(c(&Setting::id) == 4)).size() == 0)
storage.insert(Setting{4, "continued_satur", "消毒继续过氧化氢相对饱和度", 0, 100, 0, 70});
if (storage.get_all<Setting>(where(c(&Setting::id) == 5)).size() == 0) //
storage.insert(Setting{5, "max_humidity", "允许消毒最大湿度", 0, 100, 0, 90});
if (storage.get_all<Setting>(where(c(&Setting::id) == 6)).size() == 0)
storage.insert(Setting{6, "drainage_pump_speed", "排液蠕动泵转速", 0, 90, 0, 90}); // g/min
if (storage.get_all<Setting>(where(c(&Setting::id) == 7)).size() == 0)
storage.insert(Setting{7, "injection_pump_speed", "喷射蠕动泵转速", 0, 50, 0, 50}); // g/min
if (storage.get_all<Setting>(where(c(&Setting::id) == 8)).size() == 0) //
storage.insert(Setting{8, "pre_heat_time_s", "预热时间", 0, 600, 0, 120});
if (storage.get_all<Setting>(where(c(&Setting::id) == 9)).size() == 0) //
storage.insert(Setting{9, "stoped_humi", "消毒停止相对湿度", 0, 100, 0, 85});
if (storage.get_all<Setting>(where(c(&Setting::id) == 10)).size() == 0) //
storage.insert(Setting{10, "continued_humi", "消毒继续相对湿度", 0, 100, 0, 70});
for (size_t i = 0; i < ZARRARY_SIZE(config_settings_table); i++) {
if (storage.get_all<Setting>(where(c(&Setting::id) == config_settings_table[i].id)).size() == 0) {
storage.insert(config_settings_table[i]);
}
}
suc = true;
} catch (const std::exception& e) {
@ -458,8 +454,8 @@ json DBService::getAllFormulaJson() {
return jret;
}
void DBService::addFormula(string formula_id, string loglevel, string stoped_gs, string continued_gs, string stoped_satur, string continued_satur,
string stoped_humi, string continued_humi, string injection_pump_speed) {
void DBService::addFormula(string formula_id, string loglevel, string stoped_gs, string continued_gs, string stoped_satur, string continued_satur, string stoped_humi, string continued_humi,
string injection_pump_speed) {
lock_guard<recursive_mutex> lock(lock_);
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
@ -479,10 +475,9 @@ void DBService::addFormula(string formula_id, string loglevel, string stoped_gs,
formulatable.sync_schema();
}
void DBService::addFormula(string formula_id, int loglevel, int stoped_gs, int continued_gs, int stoped_satur, int continued_satur, int stoped_humi,
int continued_humi, int injection_pump_speed) {
addFormula(formula_id, to_string(loglevel), to_string(stoped_gs), to_string(continued_gs), to_string(stoped_satur), to_string(continued_satur),
to_string(stoped_humi), to_string(continued_humi), to_string(injection_pump_speed));
void DBService::addFormula(string formula_id, int loglevel, int stoped_gs, int continued_gs, int stoped_satur, int continued_satur, int stoped_humi, int continued_humi, int injection_pump_speed) {
addFormula(formula_id, to_string(loglevel), to_string(stoped_gs), to_string(continued_gs), to_string(stoped_satur), to_string(continued_satur), to_string(stoped_humi), to_string(continued_humi),
to_string(injection_pump_speed));
}
shared_ptr<db::Formula> DBService::delFormula(int id) {
lock_guard<recursive_mutex> lock(lock_);

45
src/main_control_service.cpp

@ -143,6 +143,14 @@ void MainControlService::initialize() {
thisThread.sleepForMs(1000);
}
}));
m_deviceIoControlService->airCompressor_setState(0);
m_deviceIoControlService->airBlower_setState(0);
m_deviceIoControlService->AirInletProportionalValve_setState(0);
m_deviceIoControlService->AirOutletProportionalValve_setState(0);
m_deviceIoControlService->heartingPlate_setPower(false);
m_deviceIoControlService->drainingPump_close();
m_deviceIoControlService->sprayLiquidPump_close();
};
// {"command":"startReplenishingFluids","messageId":"startReplenishingFluids","stopAt":123}
@ -241,8 +249,7 @@ void MainControlService::processFrontEndMessage_userOperate(weak_ptr<WebSocket>
receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist);
return;
}
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_permission_level,
fmt::format("({},{})", user->uid, permission_level));
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_permission_level, fmt::format("({},{})", user->uid, permission_level));
return;
}
if (cmdstr == "updateUserUid") {
@ -372,8 +379,7 @@ void MainControlService::processFrontEndMessage_Disinfection(weak_ptr<WebSocket>
continued_humi = jsonGet<int>(cmd["continued_humi"]);
}
m_disinfectionCtrlService->changeDisinfectionParameter(injection_pump_speed, stoped_gs, continued_gs, stoped_satur, continued_satur, stoped_humi,
continued_humi);
m_disinfectionCtrlService->changeDisinfectionParameter(injection_pump_speed, stoped_gs, continued_gs, stoped_satur, continued_satur, stoped_humi, continued_humi);
return;
}
@ -582,8 +588,7 @@ void MainControlService::processFrontEndMessage_processFormulaCmd(weak_ptr<WebSo
}
auto formula = m_dbService->updateFormula(jsonGet<int>(cmd["id"]), cmd["column"], val_str);
if (formula) {
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_formula,
fmt::format("({},{},{})", formula->formula_id, cmd["column"], val_str));
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_formula, fmt::format("({},{},{})", formula->formula_id, cmd["column"], val_str));
}
return;
}
@ -621,8 +626,7 @@ void MainControlService::processFrontEndMessage_processFormulaCmd(weak_ptr<WebSo
}
m_dbService->updateFormula(formula);
if (oldname != formula_id) {
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_formula_name,
fmt::format("({}->{})", oldname, formula->formula_id));
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_formula_name, fmt::format("({}->{})", oldname, formula->formula_id));
}
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_formula, fmt::format("({})", formula->formula_id));
return;
@ -777,8 +781,6 @@ void MainControlService::processFrontEndMessage_DeviceIOControlService(weak_ptr<
receipt["ack"][0] = m_deviceIoControlService->airCompressor_getValve2();
return;
}
// airCompressor_setValve1
// airCompressor_setValve2
if (cmdstr == "DeviceIOControlService.AirInletProportionalValve_setState") {
m_deviceIoControlService->AirInletProportionalValve_setState(cmd["params"][0]);
return;
@ -796,6 +798,29 @@ void MainControlService::processFrontEndMessage_DeviceIOControlService(weak_ptr<
m_deviceIoControlService->AirOutletProportionalValve_setState(cmd["params"][0]);
return;
}
//
if (cmdstr == "DeviceIOControlService.AirProportionalValve_setState") {
m_deviceIoControlService->AirProportionalValve_setState(cmd["params"][0], cmd["params"][1]);
return;
}
if (cmdstr == "DeviceIOControlService.AirProportionalValve_getState") {
int32_t ack0;
int32_t ack1;
receipt["ackcode"] = m_deviceIoControlService->AirProportionalValve_getState(&ack0, &ack1);
receipt["ack"][0] = ack0;
receipt["ack"][1] = ack1;
return;
}
if (cmdstr == "DeviceIOControlService.AirProportionalValve_isBusy") {
int32_t ack0;
receipt["ackcode"] = m_deviceIoControlService->AirProportionalValve_isBusy(&ack0);
receipt["ack"][0] = ack0;
return;
}
if (cmdstr == "DeviceIOControlService.AirOutletProportionalValve_setState") {
m_deviceIoControlService->AirOutletProportionalValve_setState(cmd["params"][0]);
return;
}
}
json MainControlService::createSensorDataJson() {
json report;

34
src/service/device_io_control_service.cpp

@ -104,10 +104,14 @@ void DeviceIoControlService::startScan() {
void DeviceIoControlService::airCompressor_setState(int32_t val) {
logger->info("airCompressor_setState:{}", val);
if (val > 0) {
airCompressor_setValve1(1);
airCompressor_setValve2(1);
m_zcanHost->writeio(0, 1);
usleep(500 * 100);
m_zcanHost->writeio(1, 1);
} else {
// airCompressor_setValve1(0);
// airCompressor_setValve2(0);
m_zcanHost->writeio(1, 0);
usleep(500 * 100);
m_zcanHost->writeio(0, 0);
@ -136,27 +140,45 @@ int DeviceIoControlService::airCompressor_setValve2(int32_t val) {
m_airCompressor_valve2State = val;
return m_zcanHost->call(kcmd_air_compressor_valve2_set, val);
}
int DeviceIoControlService::airCompressor_getValve1() { return m_airCompressor_valve1State; }
int DeviceIoControlService::airCompressor_getValve2() { return m_airCompressor_valve2State; }
int DeviceIoControlService::airCompressor_getChannelIndex() { return m_airCompressor_channelIndex; }
int DeviceIoControlService::airCompressor_getValve1() { return m_airCompressor_valve1State; }
int DeviceIoControlService::airCompressor_getValve2() { return m_airCompressor_valve2State; }
int DeviceIoControlService::airCompressor_getChannelIndex() { return m_airCompressor_channelIndex; }
float DeviceIoControlService::airCompressor_getPressure() { return m_pressure_sensor_data[2].value / 10.0; }
float DeviceIoControlService::airCompressor_getPressureDirect() {
int32_t ack = 0;
m_zcanHost->call(kcmd_air_compressor_read_pressure, &ack);
return ack/10.0;
return ack / 10.0;
}
void DeviceIoControlService::AirInletProportionalValve_setState(int32_t val) {
m_AirInletProportionalValve_state = val;
m_zcanHost->call(kcmd_set_proportional_valve, 1, val);
m_zcanHost->call(kcmd_proportional_set_valve, 1, val);
}
void DeviceIoControlService::AirOutletProportionalValve_setState(int32_t val) {
m_AirOutletProportionalValve_state = val;
m_zcanHost->call(kcmd_set_proportional_valve, 2, val);
m_zcanHost->call(kcmd_proportional_set_valve, 2, val);
}
int32_t DeviceIoControlService::AirInletProportionalValve_getState() { return m_AirInletProportionalValve_state; }
int32_t DeviceIoControlService::AirOutletProportionalValve_getState() { return m_AirOutletProportionalValve_state; }
int32_t DeviceIoControlService::AirProportionalValve_setState(int32_t inlet, int32_t outlet) {
m_zcanHost->call(kcmd_proportional_set_valve, 1, inlet);
m_zcanHost->call(kcmd_proportional_set_valve, 2, outlet);
m_AirInletProportionalValve_state = inlet;
m_AirOutletProportionalValve_state = outlet;
return 0;
}
int32_t DeviceIoControlService::AirProportionalValve_getState(int32_t* inlet, int32_t* outlet) {
*inlet = m_AirInletProportionalValve_state;
*outlet = m_AirOutletProportionalValve_state;
return 0;
}
int32_t DeviceIoControlService::AirProportionalValve_isBusy(int32_t* isbusy) {
*isbusy = 0;
return m_zcanHost->call(kcmd_proportional_read_state, isbusy);
}
int DeviceIoControlService::airCompressor_getstate() { return m_zcanHost->read_writeio_state_cache(0) && m_zcanHost->read_writeio_state_cache(1); }
int DeviceIoControlService::airBlower_setState(bool val) {
logger->info("airBlower_setState:{}", val);

7
src/service/device_io_control_service.hpp

@ -101,8 +101,8 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
virtual int airCompressor_getio2();
virtual int airCompressor_getstate();
virtual int airCompressor_getcurrentValue();
virtual int airCompressor_setValve1(int32_t val);//0关闭通道 1打开通道
virtual int airCompressor_setValve2(int32_t val);//0关闭通道 1打开通道
virtual int airCompressor_setValve1(int32_t val); // 0关闭通道 1打开通道
virtual int airCompressor_setValve2(int32_t val); // 0关闭通道 1打开通道
virtual int airCompressor_getValve1();
virtual int airCompressor_getValve2();
virtual float airCompressor_getPressure();
@ -118,6 +118,9 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
virtual int32_t AirInletProportionalValve_getState();
virtual int32_t AirOutletProportionalValve_getState();
virtual int32_t AirProportionalValve_setState(int32_t inlet, int32_t outlet);
virtual int32_t AirProportionalValve_getState(int32_t* inlet, int32_t* outlet);
virtual int32_t AirProportionalValve_isBusy(int32_t* isbusy);
// heatingStrip
/*******************************************************************************
* *

16
src/service/device_io_control_service_test.cpp

@ -318,4 +318,18 @@ bool DeviceIoControlServiceTest::getAllSensorData(DeviceIoControlServiceTest::al
void DeviceIoControlServiceTest::AirInletProportionalValve_setState(int32_t val) { m_AirInletProportionalValve_state = val; }
void DeviceIoControlServiceTest::AirOutletProportionalValve_setState(int32_t val) { m_AirOutletProportionalValve_state = val; }
int32_t DeviceIoControlServiceTest::AirInletProportionalValve_getState() { return m_AirInletProportionalValve_state; }
int32_t DeviceIoControlServiceTest::AirOutletProportionalValve_getState() { return m_AirOutletProportionalValve_state; }
int32_t DeviceIoControlServiceTest::AirOutletProportionalValve_getState() { return m_AirOutletProportionalValve_state; }
int32_t DeviceIoControlServiceTest::AirProportionalValve_setState(int32_t inlet, int32_t outlet) {
m_AirInletProportionalValve_state = inlet;
m_AirOutletProportionalValve_state = outlet;
return 0;
}
int32_t DeviceIoControlServiceTest::AirProportionalValve_isBusy(int32_t* isbusy) {
*isbusy = 0;
return 0;
}
int32_t DeviceIoControlServiceTest::AirProportionalValve_getState(int32_t* inlet, int32_t* outlet) {
*inlet = m_AirInletProportionalValve_state;
*outlet = m_AirOutletProportionalValve_state;
return 0;
}

4
src/service/device_io_control_service_test.hpp

@ -100,6 +100,10 @@ class DeviceIoControlServiceTest : public DeviceIoControlService {
virtual int32_t AirInletProportionalValve_getState() override;
virtual int32_t AirOutletProportionalValve_getState() override;
virtual int32_t AirProportionalValve_setState(int32_t inlet, int32_t outlet) override;
virtual int32_t AirProportionalValve_isBusy(int32_t* isbusy) override;
virtual int32_t AirProportionalValve_getState(int32_t* inlet, int32_t* outlet) override;
// heatingStrip
/*******************************************************************************

Loading…
Cancel
Save