Browse Source

VERSION 1.2.3

storage-in-realtime
zhaohe 11 months ago
parent
commit
d27b31a3ce
  1. 3
      README.md
  2. 2
      appsrc/appsetting/project_port/basic/zappversion.hpp
  3. 41
      appsrc/service/app/add_liquid_service.cpp
  4. 7
      appsrc/service/app/add_liquid_service.hpp
  5. 43
      appsrc/service/app/air_leak_detect_test.cpp
  6. 7
      appsrc/service/app/air_leak_detect_test.hpp
  7. 3
      appsrc/service/app/disinfection_ctrl_service_ext.cpp
  8. 41
      appsrc/service/app/drain_liquid_service.cpp
  9. 5
      appsrc/service/app/drain_liquid_service.hpp
  10. 36
      appsrc/service/app/pipeline_pressure_control.cpp
  11. 5
      appsrc/service/app/pipeline_pressure_control.hpp
  12. 26
      appsrc/service/app_core.cpp
  13. 8
      appsrc/service/app_core.hpp
  14. 34
      appsrc/service/device_check_point_check_service.cpp
  15. 7
      appsrc/service/hardware/disinfectant_weight_update_service.cpp
  16. 2
      appsrc/service/hardware/disinfectant_weight_update_service.hpp

3
README.md

@ -83,6 +83,9 @@ VERSION 1.2.1
VERSION 1.2.2
1. 添加设备异常检测服务
2. 去掉Prompt概念,直接将AppEvent透传给前端
VERSION 1.2.3
1. 所有应用服务添加状态主动上报接口
TODO:
1.添加用户增加用户查重检查

2
appsrc/appsetting/project_port/basic/zappversion.hpp

@ -1,3 +1,3 @@
#pragma once
#define VERSION "1.2.2"
#define VERSION "1.2.3"
#define PROJECT_NAME "TRANSMIT_DM"

41
appsrc/service/app/add_liquid_service.cpp

@ -18,6 +18,8 @@ void AddLiquidService::initialize() {
REG_EXTFN_VOID(stop, void());
REG_EXTFN_VOID(getState, void());
REG_EXTFN_VOID(getServiceConfig, void());
REG_EXTFN_VOID(startStateReport, void());
REG_EXTFN_VOID(stopStateReport, void());
}
void AddLiquidService::start(int stopatg) {
@ -30,7 +32,6 @@ void AddLiquidService::start(int stopatg) {
THROW_APP_EXCEPTION(getDeviceBusyReason(nowstate), "");
}
if (zsteady_clock().gets() < SENSOR_PREHEART_TIME_S) {
THROW_APP_EXCEPTION(err::kappe_sensor_is_pre_hearting, "");
}
@ -143,11 +144,6 @@ AddLiquidService::state_t AddLiquidService::getWorkstate() { return m_workstate;
void AddLiquidService::start(shared_ptr<MsgProcessContext> cxt, int stopatg) { start(stopatg); }
void AddLiquidService::stop(shared_ptr<MsgProcessContext> cxt) { stop(); }
void AddLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { //
cxt->rely["workState"] = state2str(getWorkstate());
cxt->rely["workStateDisplay"] = state2chstr(getWorkstate());
cxt->rely["nowLiquid"] = m_dwus->getWeight();
}
void AddLiquidService::getServiceConfig(shared_ptr<MsgProcessContext> cxt) {
json cfg;
cfg["maxLiquid"] = PORT.getDisinfectantBucketCapacity();
@ -155,3 +151,36 @@ void AddLiquidService::getServiceConfig(shared_ptr<MsgProcessContext> cxt) {
cfg["updatePeriod"] = 300;
cxt->rely = cfg;
}
void AddLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { cxt->rely = getState(); }
void AddLiquidService::startStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
stateUpdateThread.reset(new Thread("stateUpdateThread", [this]() {
while (!ThisThread().getExitFlag()) {
try {
SEND_CLASS_REPORT(thisClass.className, "stateUpdate", getState());
} catch (const std::exception& e) {
logger->error("stateUpdateThread error:{}", e.what());
}
ThisThread().sleepForMs(500);
}
}));
}
void AddLiquidService::stopStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
}
json AddLiquidService::getState() {
json state;
state["workState"] = state2str(getWorkstate());
state["workStateDisplay"] = state2chstr(getWorkstate());
state["nowLiquid"] = m_dwus->getWeightNoExpection();
return state;
}

7
appsrc/service/app/add_liquid_service.hpp

@ -63,6 +63,8 @@ class AddLiquidService : public enable_shared_from_this<AddLiquidService> {
unique_ptr<Thread> m_thread;
recursive_mutex lock_;
unique_ptr<Thread> stateUpdateThread;
public:
void initialize();
@ -70,13 +72,16 @@ class AddLiquidService : public enable_shared_from_this<AddLiquidService> {
void stop();
state_t getWorkstate();
void start(shared_ptr<MsgProcessContext> cxt,int stopatg);
void start(shared_ptr<MsgProcessContext> cxt, int stopatg);
void stop(shared_ptr<MsgProcessContext> cxt);
void getState(shared_ptr<MsgProcessContext> cxt);
void getServiceConfig(shared_ptr<MsgProcessContext> cxt);
private:
void addLiquidWork(int stopatg, bool& errorflag);
void startStateReport(shared_ptr<MsgProcessContext> cxt);
void stopStateReport(shared_ptr<MsgProcessContext> cxt);
json getState();
};
} // namespace iflytop

43
appsrc/service/app/air_leak_detect_test.cpp

@ -17,6 +17,8 @@ void AirLeakDetectTest::initialize() {
REG_EXTFN_VOID(stop, void());
REG_EXTFN_VOID(getState, void());
REG_EXTFN_VOID(getServiceConfig, void());
REG_EXTFN_VOID(startStateReport, void());
REG_EXTFN_VOID(stopStateReport, void());
}
void AirLeakDetectTest::start(int inflationTimeMs) {
@ -101,14 +103,7 @@ void AirLeakDetectTest::start(shared_ptr<MsgProcessContext> cxt, int inflationTi
start(inflationTimeMs);
}
void AirLeakDetectTest::stop(shared_ptr<MsgProcessContext> cxt) { stop(); }
void AirLeakDetectTest::getState(shared_ptr<MsgProcessContext> cxt) { //
if (PORT.isPipeDM()) {
cxt->rely["workState"] = state2str(getWorkstate());
cxt->rely["workStateDisplay"] = state2chstr(getWorkstate());
cxt->rely["pressure"] = pressurePa / 1000.0;
}
}
void AirLeakDetectTest::getServiceConfig(shared_ptr<MsgProcessContext> cxt) {
if (PORT.isPipeDM()) {
json cfg;
@ -119,4 +114,38 @@ void AirLeakDetectTest::getServiceConfig(shared_ptr<MsgProcessContext> cxt) {
cfg["inflationTimeMs"] = DEFAULT_INFLATION_TIME_MS;
cxt->rely = cfg;
}
}
//
void AirLeakDetectTest::getState(shared_ptr<MsgProcessContext> cxt) { cxt->rely = getState(); }
void AirLeakDetectTest::startStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
stateUpdateThread.reset(new Thread("stateUpdateThread", [this]() {
while (!ThisThread().getExitFlag()) {
try {
SEND_CLASS_REPORT(thisClass.className, "stateUpdate", getState());
} catch (const std::exception& e) {
logger->error("stateUpdateThread error:{}", e.what());
}
ThisThread().sleepForMs(500);
}
}));
}
void AirLeakDetectTest::stopStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
}
json AirLeakDetectTest::getState() {
json state;
state["pressure"] = pressurePa / 1000.0;
state["workState"] = state2str(getWorkstate());
state["workStateDisplay"] = state2chstr(getWorkstate());
return state;
}

7
appsrc/service/app/air_leak_detect_test.hpp

@ -65,6 +65,7 @@ class AirLeakDetectTest : public enable_shared_from_this<AirLeakDetectTest> {
shared_ptr<DeviceIoControlService> m_dics;
unique_ptr<Thread> m_thread;
unique_ptr<Thread> stateUpdateThread;
state_t m_workstate = kidle;
float pressurePa = 0;
@ -72,7 +73,7 @@ class AirLeakDetectTest : public enable_shared_from_this<AirLeakDetectTest> {
public:
void initialize();
void start( int inflationTimeMs);
void start(int inflationTimeMs);
void stop();
state_t getWorkstate();
@ -81,6 +82,10 @@ class AirLeakDetectTest : public enable_shared_from_this<AirLeakDetectTest> {
void getState(shared_ptr<MsgProcessContext> cxt);
void getServiceConfig(shared_ptr<MsgProcessContext> cxt);
void startStateReport(shared_ptr<MsgProcessContext> cxt);
void stopStateReport(shared_ptr<MsgProcessContext> cxt);
json getState();
private:
void airLeakDetectTestThread(int inflationTimeMs);
};

3
appsrc/service/app/disinfection_ctrl_service_ext.cpp

@ -131,9 +131,6 @@ void DisinfectionCtrlServiceExt::startStateReport(shared_ptr<MsgProcessContext>
DisinfectionState state;
json report = getState(state);
SEND_CLASS_REPORT(thisClass.className, "stateUpdate", report);
if ((state) == (DisinfectionState::finished) || (state) == (DisinfectionState::idle)) {
break;
}
ThisThread().sleepForMs(900);
}
}));

41
appsrc/service/app/drain_liquid_service.cpp

@ -15,6 +15,8 @@ void DrainLiquidService::initialize() {
REG_EXTFN_VOID(stop, void());
REG_EXTFN_VOID(getState, void());
REG_EXTFN_VOID(getServiceConfig, void());
REG_EXTFN_VOID(startStateReport, void());
REG_EXTFN_VOID(stopStateReport, void());
}
void DrainLiquidService::start() {
@ -25,7 +27,6 @@ void DrainLiquidService::start() {
THROW_APP_EXCEPTION(getDeviceBusyReason(nowstate), "");
}
if (DS->getDeviceState() != DeviceState::Idle) {
THROW_APP_EXCEPTION(err::kappe_state_is_busy, "");
}
@ -77,11 +78,6 @@ void DrainLiquidService::start(shared_ptr<MsgProcessContext> cxt) { //
start();
}
void DrainLiquidService::stop(shared_ptr<MsgProcessContext> cxt) { stop(); }
void DrainLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { //
cxt->rely["workState"] = state2str(getWorkstate());
cxt->rely["workStateDisplay"] = state2chstr(getWorkstate());
cxt->rely["nowLiquid"] = m_dwus->getWeight();
}
void DrainLiquidService::getServiceConfig(shared_ptr<MsgProcessContext> cxt) {
json cfg;
@ -130,3 +126,36 @@ void DrainLiquidService::workThread() {
m_dics->AddLiquidPump_stop();
m_dics->SprayPump_stop();
}
void DrainLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { cxt->rely = getState(); }
void DrainLiquidService::startStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
stateUpdateThread.reset(new Thread("stateUpdateThread", [this]() {
while (!ThisThread().getExitFlag()) {
try {
SEND_CLASS_REPORT(thisClass.className, "stateUpdate", getState());
} catch (const std::exception& e) {
logger->error("stateUpdateThread error:{}", e.what());
}
ThisThread().sleepForMs(500);
}
}));
}
void DrainLiquidService::stopStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
}
json DrainLiquidService::getState() {
json state;
state["workState"] = state2str(getWorkstate());
state["workStateDisplay"] = state2chstr(getWorkstate());
state["nowLiquid"] = m_dwus->getWeightNoExpection();
return state;
}

5
appsrc/service/app/drain_liquid_service.hpp

@ -55,6 +55,7 @@ class DrainLiquidService : public enable_shared_from_this<DrainLiquidService> {
state_t m_workstate = kidle;
unique_ptr<Thread> m_thread;
recursive_mutex lock_;
unique_ptr<Thread> stateUpdateThread;
public:
void initialize();
@ -70,6 +71,10 @@ class DrainLiquidService : public enable_shared_from_this<DrainLiquidService> {
private:
void workThread();
void startStateReport(shared_ptr<MsgProcessContext> cxt);
void stopStateReport(shared_ptr<MsgProcessContext> cxt);
json getState();
};
} // namespace iflytop

36
appsrc/service/app/pipeline_pressure_control.cpp

@ -25,7 +25,8 @@ void PipelinePressureControl::initialize() {
REG_EXTFN(setIntensity, void(int), intensity);
REG_EXTFN_VOID(getState, void(void));
REG_EXTFN_VOID(getConfig, void(void));
REG_EXTFN_VOID(startStateReport, void());
REG_EXTFN_VOID(stopStateReport, void());
m_type = PressureType::constantPressure;
m_intensity = 0;
@ -89,7 +90,34 @@ void PipelinePressureControl::setIntensity(shared_ptr<MsgProcessContext> cxt, in
m_intensity = intensity;
syncPressureValueState();
}
void PipelinePressureControl::getState(shared_ptr<MsgProcessContext> cxt) {
cxt->rely["type"] = m_type;
cxt->rely["intensity"] = m_intensity;
void PipelinePressureControl::getState(shared_ptr<MsgProcessContext> cxt) { cxt->rely = getState(); }
void PipelinePressureControl::startStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
stateUpdateThread.reset(new Thread("stateUpdateThread", [this]() {
while (!ThisThread().getExitFlag()) {
try {
SEND_CLASS_REPORT(thisClass.className, "stateUpdate", getState());
} catch (const std::exception& e) {
logger->error("stateUpdateThread error:{}", e.what());
}
ThisThread().sleepForMs(500);
}
}));
}
void PipelinePressureControl::stopStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
}
json PipelinePressureControl::getState() {
json state;
state["type"] = m_type;
state["intensity"] = m_intensity;
return state;
}

5
appsrc/service/app/pipeline_pressure_control.hpp

@ -56,6 +56,7 @@ class PipelinePressureControl : public enable_shared_from_this<PipelinePressureC
shared_ptr<DeviceStateService> m_ds;
shared_ptr<DeviceIoControlService> m_dics;
shared_ptr<GConfig> m_gConfig;
unique_ptr<Thread> stateUpdateThread;
PressureType m_type;
int m_intensity = 0;
@ -72,6 +73,10 @@ class PipelinePressureControl : public enable_shared_from_this<PipelinePressureC
void getState(shared_ptr<MsgProcessContext> cxt);
void getConfig(shared_ptr<MsgProcessContext> cxt);
void startStateReport(shared_ptr<MsgProcessContext> cxt);
void stopStateReport(shared_ptr<MsgProcessContext> cxt);
json getState();
private:
};

26
appsrc/service/app_core.cpp

@ -175,6 +175,8 @@ void AppCore::initialize() {
REG_EXTFN_VOID(getState, void(void));
REG_EXTFN(appEventConfirm, void(string), evenid);
REG_EXTFN_VOID(startStateReport, void(void));
REG_EXTFN_VOID(stopStateReport, void(void));
};
int AppCore::demofn(int a, int b) { return 0; }
@ -224,3 +226,27 @@ json AppCore::getState() {
}
return ret;
}
void AppCore::startStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
stateUpdateThread.reset(new Thread("stateUpdateThread", [this]() {
while (!ThisThread().getExitFlag()) {
try {
SEND_CLASS_REPORT(thisClass.className, "stateUpdate", getState());
} catch (const std::exception& e) {
logger->error("stateUpdateThread error:{}", e.what());
}
ThisThread().sleepForMs(500);
}
}));
}
void AppCore::stopStateReport(shared_ptr<MsgProcessContext> cxt) {
if (stateUpdateThread) {
stateUpdateThread->join();
stateUpdateThread = nullptr;
}
}

8
appsrc/service/app_core.hpp

@ -42,8 +42,7 @@ class AppCore : public enable_shared_from_this<AppCore> {
unique_ptr<WorkQueue> wq;
list<shared_ptr<IAppEvent>> appEventList;
recursive_mutex appEventListMutex;
unique_ptr<Thread> stateUpdateThread;
public:
AppCore() {};
@ -52,10 +51,11 @@ class AppCore : public enable_shared_from_this<AppCore> {
private:
void getState(shared_ptr<MsgProcessContext> cxt);
void appEventConfirm(shared_ptr<MsgProcessContext> cxt, string appevenid);
void startStateReport(shared_ptr<MsgProcessContext> cxt);
void stopStateReport(shared_ptr<MsgProcessContext> cxt);
json getState();
private:
json getState();
void dosystem(string order, bool dump);
void loop();
int demofn(int a, int b);

34
appsrc/service/device_check_point_check_service.cpp

@ -8,8 +8,8 @@
using namespace iflytop;
void DeviceCheckPointCheckService::initialize() { //
checkPoints.push_back(CheckPoint(kCheckPointCode_evaporationBinWSTrigger, "蒸发仓内液位检查", false));
checkPoints.push_back(CheckPoint(kCheckPointCode_deviceBottomWSTrigger, "硬件仓液位检测", false));
checkPoints.push_back(CheckPoint(kCheckPointCode_evaporationBinWSTrigger, "蒸发仓内液位检查", true));
checkPoints.push_back(CheckPoint(kCheckPointCode_deviceBottomWSTrigger, "硬件仓液位检测", true));
REG_TYPE(CheckPoint);
REG_TYPE(vector<CheckPoint>);
@ -31,24 +31,30 @@ void DeviceCheckPointCheckService::initialize() { //
// 检查各个检查点
for (auto& checkPoint : checkPoints) {
CheckPointCode_t checkPointIndex = checkPoint.index;
if (checkPointIndex == kCheckPointCode_evaporationBinWSTrigger) {
if (GET_SERVICE(DeviceIoControlService)->WaterSensor_readEvaporationBin()) {
checkPoint.passed = true;
} else {
checkPoint.passed = false;
}
} else if (checkPointIndex == kCheckPointCode_deviceBottomWSTrigger) {
if (GET_SERVICE(DeviceIoControlService)->WaterSensor_readDeviceBottom()) {
checkPoint.passed = true;
} else {
checkPoint.passed = false;
try {
if (checkPointIndex == kCheckPointCode_evaporationBinWSTrigger) {
if (GET_SERVICE(DeviceIoControlService)->WaterSensor_readEvaporationBin()) {
checkPoint.passed = false;
} else {
checkPoint.passed = true;
}
} else if (checkPointIndex == kCheckPointCode_deviceBottomWSTrigger) {
if (GET_SERVICE(DeviceIoControlService)->WaterSensor_readDeviceBottom()) {
checkPoint.passed = false;
} else {
checkPoint.passed = true;
}
}
} catch (const std::exception& e) {
//
// 硬件错误这里不做处理
}
}
bool newstate = isPassed();
if (newstate != oldstate) {
if (newstate) {
if (!newstate) {
if (DS->getDeviceState() == DeviceState::Disinfection) {
GET_SERVICE(DisinfectionCtrlService)->stop();
} else if (DS->getDeviceState() == DeviceState::AddingLiquid) {

7
appsrc/service/hardware/disinfectant_weight_update_service.cpp

@ -13,6 +13,13 @@ void DisinfectantWeightUpdateService::initialize() { //
}));
}
}
float DisinfectantWeightUpdateService::getWeightNoExpection() {
try {
return getWeight();
} catch (const std::exception& e) {
return -1;
}
}
float DisinfectantWeightUpdateService::getWeight() { //
if (DS->isTestMode()) {

2
appsrc/service/hardware/disinfectant_weight_update_service.hpp

@ -50,6 +50,8 @@ class DisinfectantWeightUpdateService : public enable_shared_from_this<Disinfect
void initialize();
float getWeight();
float getWeightNoExpection();
public:
void updateWeightThread();
};

Loading…
Cancel
Save