diff --git a/.clang-format b/.clang-format index 45866f9..cefd31d 100644 --- a/.clang-format +++ b/.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 diff --git a/iflytoplinuxsdk b/iflytoplinuxsdk index 0b3d9f6..a98acfa 160000 --- a/iflytoplinuxsdk +++ b/iflytoplinuxsdk @@ -1 +1 @@ -Subproject commit 0b3d9f6313df93b5d895ecf7723c5c5dfff4ea16 +Subproject commit a98acfa311912201672637c608f368e2778aabdc diff --git a/src/db/db_service.cpp b/src/db/db_service.cpp index 0f5d75c..67532f7 100644 --- a/src/db/db_service.cpp +++ b/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(where(c(&Setting::id) == 1)).size() == 0) // - storage.insert(Setting{1, "stoped_gs", "消毒停止过氧化氢溶度", 0, 2000, 0, 1800}); - - if (storage.get_all(where(c(&Setting::id) == 2)).size() == 0) - storage.insert(Setting{2, "continued_gs", "消毒继续过氧化氢溶度", 0, 2000, 0, 1500}); - - if (storage.get_all(where(c(&Setting::id) == 3)).size() == 0) - storage.insert(Setting{3, "stoped_satur", "消毒停止过氧化氢相对饱和度", 0, 100, 0, 85}); - - if (storage.get_all(where(c(&Setting::id) == 4)).size() == 0) - storage.insert(Setting{4, "continued_satur", "消毒继续过氧化氢相对饱和度", 0, 100, 0, 70}); - - if (storage.get_all(where(c(&Setting::id) == 5)).size() == 0) // - storage.insert(Setting{5, "max_humidity", "允许消毒最大湿度", 0, 100, 0, 90}); - - if (storage.get_all(where(c(&Setting::id) == 6)).size() == 0) - storage.insert(Setting{6, "drainage_pump_speed", "排液蠕动泵转速", 0, 90, 0, 90}); // g/min - - if (storage.get_all(where(c(&Setting::id) == 7)).size() == 0) - storage.insert(Setting{7, "injection_pump_speed", "喷射蠕动泵转速", 0, 50, 0, 50}); // g/min - - if (storage.get_all(where(c(&Setting::id) == 8)).size() == 0) // - storage.insert(Setting{8, "pre_heat_time_s", "预热时间", 0, 600, 0, 120}); - - if (storage.get_all(where(c(&Setting::id) == 9)).size() == 0) // - storage.insert(Setting{9, "stoped_humi", "消毒停止相对湿度", 0, 100, 0, 85}); - - if (storage.get_all(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(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 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 DBService::delFormula(int id) { lock_guard lock(lock_); diff --git a/src/main_control_service.cpp b/src/main_control_service.cpp index 9a310db..2306a6c 100644 --- a/src/main_control_service.cpp +++ b/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 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 continued_humi = jsonGet(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_ptrupdateFormula(jsonGet(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_ptrupdateFormula(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; diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 6c03d51..0c60c22 100644 --- a/src/service/device_io_control_service.cpp +++ b/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); diff --git a/src/service/device_io_control_service.hpp b/src/service/device_io_control_service.hpp index ebdad39..ae17436 100644 --- a/src/service/device_io_control_service.hpp +++ b/src/service/device_io_control_service.hpp @@ -101,8 +101,8 @@ class DeviceIoControlService : public enable_shared_from_this