Browse Source

ADD device_io_control_service_test

master
zhaohe 2 years ago
parent
commit
355d5616c3
  1. 5
      src/main_control_service.cpp
  2. 4
      src/service/device_io_control_service.cpp
  3. 74
      src/service/device_io_control_service.hpp
  4. 279
      src/service/device_io_control_service_test.cpp
  5. 119
      src/service/device_io_control_service_test.hpp
  6. 4
      src/zservice_container/zservice_container.hpp

5
src/main_control_service.cpp

@ -4,6 +4,7 @@
#include "iflytop/components/zcanreceiver/zcanreceiverhost.hpp" #include "iflytop/components/zcanreceiver/zcanreceiverhost.hpp"
#include "iflytop/core/components/stringutils.hpp" #include "iflytop/core/components/stringutils.hpp"
#include "iflytop/core/core.hpp" #include "iflytop/core/core.hpp"
#include "service/device_io_control_service_test.hpp"
#include "version.hpp" #include "version.hpp"
using namespace iflytop; using namespace iflytop;
using namespace core; using namespace core;
@ -61,7 +62,11 @@ void MainControlService::initialize() {
GET_SERVICE(DisinfectionLogsManager)->initialize(); GET_SERVICE(DisinfectionLogsManager)->initialize();
GET_TO_SERVICE(m_disinfectionLogsManager); GET_TO_SERVICE(m_disinfectionLogsManager);
#if 0
BUILD_AND_REG_SERRVICE(DeviceIoControlService); BUILD_AND_REG_SERRVICE(DeviceIoControlService);
#else
REG_SERRVICE(DeviceIoControlService, new DeviceIoControlServiceTest());
#endif
GET_SERVICE(DeviceIoControlService)->initialize(); GET_SERVICE(DeviceIoControlService)->initialize();
GET_TO_SERVICE(m_deviceIoControlService); GET_TO_SERVICE(m_deviceIoControlService);

4
src/service/device_io_control_service.cpp

@ -260,8 +260,7 @@ int DeviceIoControlService::getWaterImmersionSensor2() {
} }
DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorData1() { DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorData1() {
lock_guard<recursive_mutex> lock(lock_);
lock_guard<recursive_mutex> lock(lock_);
DeviceIoControlService::h2o2sensor_data_t data; DeviceIoControlService::h2o2sensor_data_t data;
// int16_t hydrogen_peroxide_volume; // ppm 0x0100 过氧化氢浓度 // int16_t hydrogen_peroxide_volume; // ppm 0x0100 过氧化氢浓度
// int16_t h2o_h2o2_rs; // %RS * 100 0x0101 过氧化氢相对饱和度 // int16_t h2o_h2o2_rs; // %RS * 100 0x0101 过氧化氢相对饱和度
@ -271,6 +270,7 @@ DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorD
data.humid = m_hpp272_data_1.relative_humidity / 100; data.humid = m_hpp272_data_1.relative_humidity / 100;
data.temp = m_hpp272_data_1.temperature1 / 100; data.temp = m_hpp272_data_1.temperature1 / 100;
data.saturation = m_hpp272_data_1.h2o_h2o2_rs / 100; data.saturation = m_hpp272_data_1.h2o_h2o2_rs / 100;
return data; return data;
} }

74
src/service/device_io_control_service.hpp

@ -61,71 +61,71 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
public: public:
DeviceIoControlService(); DeviceIoControlService();
void initialize();
void startScan();
virtual void initialize();
virtual void startScan();
public: public:
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
int heatingStrip_getio1();
int heatingStrip_getio2();
int heatingStrip_getstate();
int heatingStrip_getcurrentValue();
void heartingPlate_setPower(bool val);
virtual int heatingStrip_getio1();
virtual int heatingStrip_getio2();
virtual int heatingStrip_getstate();
virtual int heatingStrip_getcurrentValue();
void heartingPlate_setPower(bool val);
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
int airBlower_getio1();
int airBlower_getio2();
int airBlower_getstate();
int airBlower_getcurrentValue();
int airBlower_setState(bool state);
virtual int airBlower_getio1();
virtual int airBlower_getio2();
virtual int airBlower_getstate();
virtual int airBlower_getcurrentValue();
virtual int airBlower_setState(bool state);
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
void airCompressor_setState(bool val);
int airCompressor_getio1();
int airCompressor_getio2();
int airCompressor_getstate();
int airCompressor_getcurrentValue();
virtual void airCompressor_setState(bool val);
virtual int airCompressor_getio1();
virtual int airCompressor_getio2();
virtual int airCompressor_getstate();
virtual int airCompressor_getcurrentValue();
// heatingStrip // heatingStrip
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
int getChargingPump_PumpRPM();
virtual int getChargingPump_PumpRPM();
// 排液泵 // 排液泵
void drainingPump_open();
void drainingPump_close();
virtual void drainingPump_open();
virtual void drainingPump_close();
// 充液泵 // 充液泵
void replenishingFluidsPump_open();
void replenishingFluidsPump_close();
virtual void replenishingFluidsPump_open();
virtual void replenishingFluidsPump_close();
void replenishingFluidsPump_open_for_test(int speed);
void replenishingFluidsPump_close_for_test();
virtual void replenishingFluidsPump_open_for_test(int speed);
virtual void replenishingFluidsPump_close_for_test();
// 喷液泵 // 喷液泵
void sprayLiquidPump_open(int gpm);
void sprayLiquidPump_close();
int sprayLiquidPump_getState();
int sprayLiquidPump_getRPM();
int sprayLiquidPump_getGPM();
virtual void sprayLiquidPump_open(int gpm);
virtual void sprayLiquidPump_close();
virtual int sprayLiquidPump_getState();
virtual int sprayLiquidPump_getRPM();
virtual int sprayLiquidPump_getGPM();
void sprayLiquidPump_open_for_test(int gpm);
void sprayLiquidPump_close_for_test();
virtual void sprayLiquidPump_open_for_test(int gpm);
virtual void sprayLiquidPump_close_for_test();
/****************************************************************************** /******************************************************************************
* * * *
******************************************************************************/ ******************************************************************************/
int getWaterImmersionSensor1();
int getWaterImmersionSensor2();
virtual int getWaterImmersionSensor1();
virtual int getWaterImmersionSensor2();
int getDisinfectantVolume_g(); // g
int getPressureSensorData(int index);
int getDisinfectantVolume_g(); // g
virtual int getPressureSensorData(int index);
typedef struct { typedef struct {
int h2o2; // ppm int h2o2; // ppm
@ -134,7 +134,7 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
int saturation; // 相对饱和度 %RS int saturation; // 相对饱和度 %RS
} h2o2sensor_data_t; } h2o2sensor_data_t;
h2o2sensor_data_t getH2O2SenSorData1();
virtual h2o2sensor_data_t getH2O2SenSorData1();
typedef struct { typedef struct {
h2o2sensor_data_t h2o2sensor_data[3]; h2o2sensor_data_t h2o2sensor_data[3];
@ -146,6 +146,6 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
int max_saturation; int max_saturation;
} all_h2o2sensor_data_t; } all_h2o2sensor_data_t;
bool getAllSensorData(DeviceIoControlService::all_h2o2sensor_data_t& data);
virtual bool getAllSensorData(DeviceIoControlService::all_h2o2sensor_data_t& data);
}; };
} // namespace iflytop } // namespace iflytop

279
src/service/device_io_control_service_test.cpp

@ -0,0 +1,279 @@
#include "device_io_control_service_test.hpp"
using namespace iflytop;
using namespace std;
#if 0
ID ID
- 3 PC2 0
- 3 PC3 1
- 3 PC4 2
- 3 PC5 3
- 3 PC6 4
- 3 PC7 5
#endif
#define IN_TEST 1
void DeviceIoControlServiceTest::initialize() {}
void DeviceIoControlServiceTest::startScan() {}
void DeviceIoControlServiceTest::airCompressor_setState(bool val) {
logger->info("airCompressor_setState:{}", val);
if (val) {
m_airCompressor_State = true;
} else {
m_airCompressor_State = false;
}
}
int DeviceIoControlServiceTest::airCompressor_getio1() {
if (m_airCompressor_State) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::airCompressor_getio2() {
if (m_airCompressor_State) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::airCompressor_getcurrentValue() {
if (m_airCompressor_State) {
return 2;
}
return 0;
}
int DeviceIoControlServiceTest::airCompressor_getstate() {
if (m_airCompressor_State) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::airBlower_setState(bool val) {
logger->info("airBlower_setState:{}", val);
m_airBlower_State = val;
return 0;
}
int DeviceIoControlServiceTest::airBlower_getio1() {
if (m_airBlower_State) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::airBlower_getio2() {
if (m_airBlower_State) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::airBlower_getstate() {
if (m_airBlower_State) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::airBlower_getcurrentValue() {
if (m_airBlower_State) {
return 2;
}
return 0;
}
// heatingStrip
void DeviceIoControlServiceTest::heartingPlate_setPower(bool val) {
logger->info("heartingPlate_setPower:{}", val);
m_heartingPlate_power = val;
}
int DeviceIoControlServiceTest::heatingStrip_getio1() {
if (m_heartingPlate_power) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::heatingStrip_getio2() {
if (m_heartingPlate_power) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::heatingStrip_getstate() {
if (m_heartingPlate_power) {
return 1;
}
return 0;
}
int DeviceIoControlServiceTest::heatingStrip_getcurrentValue() {
if (m_heartingPlate_power) {
return 2;
}
return 0;
}
//
int DeviceIoControlServiceTest::getChargingPump_PumpRPM() { return 0; }
static bool drainingPump_state;
void DeviceIoControlServiceTest::drainingPump_open() {
logger->info("drainingPump_open");
drainingPump_state = true;
}
void DeviceIoControlServiceTest::drainingPump_close() {
logger->info("drainingPump_close");
drainingPump_state = false;
}
static bool replenishingFluidsPump_state;
void DeviceIoControlServiceTest::replenishingFluidsPump_open() {
logger->info("replenishingFluidsPump_open");
replenishingFluidsPump_state = true;
}
void DeviceIoControlServiceTest::replenishingFluidsPump_close() {
logger->info("replenishingFluidsPump_close");
replenishingFluidsPump_state = false;
}
void DeviceIoControlServiceTest::replenishingFluidsPump_open_for_test(int gpm) {
logger->info("replenishingFluidsPump_open_for_test {}", gpm);
replenishingFluidsPump_state = true;
}
void DeviceIoControlServiceTest::replenishingFluidsPump_close_for_test() {
logger->info("replenishingFluidsPump_close_for_test");
replenishingFluidsPump_state = false;
}
/*******************************************************************************
* sprayLiquidPump *
*******************************************************************************/
static bool sprayLiquidPump_state;
void DeviceIoControlServiceTest::sprayLiquidPump_open(int gpm) {
logger->info("sprayLiquidPump_open");
sprayLiquidPump_state = true;
}
void DeviceIoControlServiceTest::sprayLiquidPump_close() {
logger->info("sprayLiquidPump_close");
sprayLiquidPump_state = false;
}
void DeviceIoControlServiceTest::sprayLiquidPump_open_for_test(int gpm) {
logger->info("sprayLiquidPump_open_for_test {}", gpm);
sprayLiquidPump_state = true;
}
void DeviceIoControlServiceTest::sprayLiquidPump_close_for_test() {
logger->info("sprayLiquidPump_close");
sprayLiquidPump_state = false;
}
int DeviceIoControlServiceTest::sprayLiquidPump_getRPM() { return 300; }
int DeviceIoControlServiceTest::sprayLiquidPump_getGPM() { return 30; }
int DeviceIoControlServiceTest::sprayLiquidPump_getState() { //
return (sprayLiquidPump_getRPM() != 0);
}
/*******************************************************************************
* SensorState *
*******************************************************************************/
int DeviceIoControlServiceTest::getDisinfectantVolume_g() { return 1000; }
int DeviceIoControlServiceTest::getPressureSensorData(int index) { return 1000; }
int DeviceIoControlServiceTest::getWaterImmersionSensor1() { return 0; }
int DeviceIoControlServiceTest::getWaterImmersionSensor2() { return 0; }
DeviceIoControlService::h2o2sensor_data_t DeviceIoControlServiceTest::getH2O2SenSorData1() {
DeviceIoControlService::h2o2sensor_data_t data;
static bool isPumpOpen = false;
static int h2o2 = 0;
if (!isPumpOpen && sprayLiquidPump_getState() != 0) {
isPumpOpen = true;
h2o2 = 0;
}
if (isPumpOpen && sprayLiquidPump_getState() == 0) {
isPumpOpen = false;
}
if (isPumpOpen) {
h2o2 += 10;
} else {
if (h2o2 <= 10) {
h2o2 -= 1;
} else {
h2o2 -= 10;
}
}
if (h2o2 < 0) {
h2o2 = 0;
}
data.h2o2 = h2o2;
data.humid = 12;
data.temp = 34;
data.saturation = 56;
return data;
}
bool DeviceIoControlServiceTest::getAllSensorData(DeviceIoControlServiceTest::all_h2o2sensor_data_t& data) {
data = {0};
data.h2o2sensor_data[0] = getH2O2SenSorData1();
data.h2o2sensor_status[0] = true;
data.h2o2sensor_status[1] = false;
data.h2o2sensor_status[2] = false;
/**
* @brief
*/
data.min_h2o2 = -1;
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) {
if (data.h2o2sensor_status[i]) {
if (data.min_h2o2 < 0) {
data.min_h2o2 = data.h2o2sensor_data[i].h2o2;
} else if (data.h2o2sensor_data[i].h2o2 < data.min_h2o2) {
data.min_h2o2 = data.h2o2sensor_data[i].h2o2;
}
}
}
data.max_h2o2 = -1;
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) {
if (data.h2o2sensor_status[i]) {
if (data.max_h2o2 < 0) {
data.max_h2o2 = data.h2o2sensor_data[i].h2o2;
} else if (data.h2o2sensor_data[i].h2o2 > data.max_h2o2) {
data.max_h2o2 = data.h2o2sensor_data[i].h2o2;
}
}
}
/**
* @brief
*/
data.max_saturation = -1;
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) {
if (data.h2o2sensor_status[i]) {
if (data.max_saturation < 0) {
data.max_saturation = data.h2o2sensor_data[i].saturation;
} else if (data.h2o2sensor_data[i].saturation > data.max_saturation) {
data.max_saturation = data.h2o2sensor_data[i].saturation;
}
}
}
/**
* @brief 湿
*/
data.max_humid = -1;
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) {
if (data.h2o2sensor_status[i]) {
if (data.max_humid < 0) {
data.max_humid = data.h2o2sensor_data[i].humid;
} else if (data.h2o2sensor_data[i].humid > data.max_humid) {
data.max_humid = data.h2o2sensor_data[i].humid;
}
}
}
return true;
}

119
src/service/device_io_control_service_test.hpp

@ -0,0 +1,119 @@
//
// Created by zwsd
//
#pragma once
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <mutex>
#include <set>
#include <sstream>
#include <string>
#include <vector>
#include "device_io_control_service.hpp"
#include "iflytop/components/zcanreceiver/zcanhost.hpp"
#include "iflytop/core/core.hpp"
#include "zservice_container/zservice_container.hpp"
// lock_guard<mutex> lock(lock_);
#include <mutex>
// std::lock_guard<std::recursive_mutex> lock(lock_);
/**
* @brief
*
* service: DeviceIoControlService
*
* :
* :
* :
* :
*
*/
namespace iflytop {
using namespace std;
using namespace core;
class DeviceIoControlServiceTest : public DeviceIoControlService {
ENABLE_LOGGER(DeviceIoControlServiceTest);
bool m_airCompressor_State;
bool m_airBlower_State;
bool m_heartingPlate_power;
public:
virtual void initialize();
virtual void startScan();
public:
/*******************************************************************************
* *
*******************************************************************************/
virtual int heatingStrip_getio1();
virtual int heatingStrip_getio2();
virtual int heatingStrip_getstate();
virtual int heatingStrip_getcurrentValue();
void heartingPlate_setPower(bool val);
/*******************************************************************************
* *
*******************************************************************************/
virtual int airBlower_getio1();
virtual int airBlower_getio2();
virtual int airBlower_getstate();
virtual int airBlower_getcurrentValue();
virtual int airBlower_setState(bool state);
/*******************************************************************************
* *
*******************************************************************************/
virtual void airCompressor_setState(bool val);
virtual int airCompressor_getio1();
virtual int airCompressor_getio2();
virtual int airCompressor_getstate();
virtual int airCompressor_getcurrentValue();
// heatingStrip
/*******************************************************************************
* *
*******************************************************************************/
virtual int getChargingPump_PumpRPM();
// 排液泵
virtual void drainingPump_open();
virtual void drainingPump_close();
// 充液泵
virtual void replenishingFluidsPump_open();
virtual void replenishingFluidsPump_close();
virtual void replenishingFluidsPump_open_for_test(int speed);
virtual void replenishingFluidsPump_close_for_test();
// 喷液泵
virtual void sprayLiquidPump_open(int gpm);
virtual void sprayLiquidPump_close();
virtual int sprayLiquidPump_getState();
virtual int sprayLiquidPump_getRPM();
virtual int sprayLiquidPump_getGPM();
virtual void sprayLiquidPump_open_for_test(int gpm);
virtual void sprayLiquidPump_close_for_test();
virtual h2o2sensor_data_t getH2O2SenSorData1();
/******************************************************************************
* *
******************************************************************************/
virtual int getWaterImmersionSensor1();
virtual int getWaterImmersionSensor2();
int getDisinfectantVolume_g(); // g
virtual int getPressureSensorData(int index);
virtual bool getAllSensorData(DeviceIoControlService::all_h2o2sensor_data_t& data);
};
} // namespace iflytop

4
src/zservice_container/zservice_container.hpp

@ -192,6 +192,10 @@ class ServiceContrainer {
shared_ptr<type> type##_val(new type(__VA_ARGS__)); \ shared_ptr<type> type##_val(new type(__VA_ARGS__)); \
ServiceContrainer::get().regService(type##_val); ServiceContrainer::get().regService(type##_val);
#define REG_SERRVICE(type,object) \
shared_ptr<type> type##_val(object); \
ServiceContrainer::get().regService(type##_val);
#define BUILD_AND_REG_MOCK_SERRVICE(type, mocktype, ...) \ #define BUILD_AND_REG_MOCK_SERRVICE(type, mocktype, ...) \
logger->info("build {}.....", #type); \ logger->info("build {}.....", #type); \
shared_ptr<type> type##_val(new mocktype(__VA_ARGS__)); \ shared_ptr<type> type##_val(new mocktype(__VA_ARGS__)); \

Loading…
Cancel
Save