|
|
@ -30,9 +30,10 @@ static bool isInTestMode() { |
|
|
|
// kdraw_bar_disinfection_box = 4, // 手持拉杆箱消毒机
|
|
|
|
// kh2o2_ext_sensor = 5, // 外部H2O2传感器
|
|
|
|
|
|
|
|
#define CAN_MASTER TransmitDisinfectionCanMaster::ins()
|
|
|
|
#define GET_BOARDID() (ProjectPort::ins().getId(COMPONENT).boardId)
|
|
|
|
#define GET_SUBID() (ProjectPort::ins().getId(COMPONENT).subId)
|
|
|
|
#define CAN_MASTER TransmitDisinfectionCanMaster::ins()
|
|
|
|
#define GET_BOARDID() (ProjectPort::ins().getId(COMPONENT).boardId)
|
|
|
|
#define GET_SUBID() (ProjectPort::ins().getId(COMPONENT).subId)
|
|
|
|
#define VIRTUAL_DEVICE() (isInTestMode() || !ProjectPort::ins().isDeviceTypeInited())
|
|
|
|
|
|
|
|
void DeviceIoControlService::initialize() { |
|
|
|
GET_TO_SERVICE(m_config); |
|
|
@ -74,7 +75,7 @@ void DeviceIoControlService::initialize() { |
|
|
|
REG_FN_VOID(SprayPumpPostPS_readPa, void(void)); |
|
|
|
REG_FN_VOID(AddLiquidPumpPostPS_readPa, void(void)); |
|
|
|
|
|
|
|
if (isInTestMode()) { |
|
|
|
if (VIRTUAL_DEVICE()) { |
|
|
|
logger->warn("run in pc, skip initialize device io control service"); |
|
|
|
return; |
|
|
|
} else { |
|
|
@ -114,7 +115,7 @@ void DeviceIoControlService::initialize() { |
|
|
|
|
|
|
|
heartThread.reset(new Thread("heartThread", [this]() { |
|
|
|
while (true) { |
|
|
|
if (isInTestMode()) { |
|
|
|
if (VIRTUAL_DEVICE()) { |
|
|
|
std::this_thread::sleep_for(std::chrono::seconds(60)); |
|
|
|
continue; |
|
|
|
} |
|
|
@ -228,25 +229,25 @@ int DeviceIoControlService::AddLiquidPump_addLiquid() { |
|
|
|
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed); |
|
|
|
logger->info(" AddLiquidPump_addLiquid, pumpspeed={}", pumpspeed); |
|
|
|
|
|
|
|
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::AddLiquidPump_drainLiquid() { |
|
|
|
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed); |
|
|
|
logger->info(" AddLiquidPump_drainLiquid, pumpspeed={}", -pumpspeed); |
|
|
|
|
|
|
|
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), -pumpspeed); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), -pumpspeed); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::AddLiquidPump_run(int rpm) { |
|
|
|
logger->info(" AddLiquidPump_run, rpm={}", rpm); |
|
|
|
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int DeviceIoControlService::AddLiquidPump_stop() { |
|
|
|
logger->info(" AddLiquidPump_stop"); |
|
|
|
if (!isInTestMode()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID()); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID()); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -256,17 +257,17 @@ int DeviceIoControlService::AddLiquidPump_stop() { |
|
|
|
int DeviceIoControlService::SprayPump_start(int32_t gpm) { |
|
|
|
int pumpspeed_rpm = ProjectPort::ins().gpm2speed(gpm); |
|
|
|
logger->info(" SprayPump_start, gpm={}, rpm={}", gpm, pumpspeed_rpm); |
|
|
|
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed_rpm); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed_rpm); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::SprayPump_stop() { |
|
|
|
logger->info(" SprayPump_stop"); |
|
|
|
if (!isInTestMode()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID()); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID()); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) { |
|
|
|
logger->info(" SprayPump_startInRPM, rpm={}", rpm); |
|
|
|
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -275,18 +276,18 @@ int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) { |
|
|
|
#define COMPONENT HardwareComponent::Blower
|
|
|
|
int DeviceIoControlService::Blower_ctrl(int power) { |
|
|
|
logger->info(" Blower_ctrl, power={}", power); |
|
|
|
if (!isInTestMode()) CAN_MASTER->blowerCtrl(GET_BOARDID(), power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), power); |
|
|
|
usleep(1000 * 1000); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::Blower_close() { |
|
|
|
logger->info(" Blower_close"); |
|
|
|
if (!isInTestMode()) CAN_MASTER->blowerCtrl(GET_BOARDID(), 0); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), 0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
float DeviceIoControlService::Blower_readEI() { |
|
|
|
logger->info(" Blower_readEI"); |
|
|
|
if (!isInTestMode()) return CAN_MASTER->blowerReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->blowerReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -295,24 +296,24 @@ float DeviceIoControlService::Blower_readEI() { |
|
|
|
#define COMPONENT HardwareComponent::AirCompressor
|
|
|
|
int DeviceIoControlService::AC_ctrl(int power) { |
|
|
|
logger->info(" AC_ctrl, power={}", power); |
|
|
|
if (!isInTestMode()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power); |
|
|
|
usleep(1000 * 1000); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::AC_ctrlNoDelay(int power) { |
|
|
|
logger->info(" AC_ctrl, power={}", power); |
|
|
|
if (!isInTestMode()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int DeviceIoControlService::AC_close() { |
|
|
|
logger->info(" AC_close"); |
|
|
|
if (!isInTestMode()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), 0); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), 0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
float DeviceIoControlService::AC_readEI() { |
|
|
|
// logger->info(" AC_readEI");
|
|
|
|
if (!isInTestMode()) return CAN_MASTER->airCompressorReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->airCompressorReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -321,23 +322,23 @@ float DeviceIoControlService::AC_readEI() { |
|
|
|
#define COMPONENT HardwareComponent::Heater
|
|
|
|
int DeviceIoControlService::Heater_ctrl(int power) { |
|
|
|
logger->info(" Heater_ctrl, power={}", power); |
|
|
|
if (!isInTestMode()) CAN_MASTER->heaterCtrl(GET_BOARDID(), power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), power); |
|
|
|
usleep(1000 * 1000); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::Heater_close() { |
|
|
|
logger->info(" Heater_close"); |
|
|
|
if (!isInTestMode()) CAN_MASTER->heaterCtrl(GET_BOARDID(), 0); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), 0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
float DeviceIoControlService::Heater_readEI() { |
|
|
|
// logger->info(" Heater_readEI");
|
|
|
|
if (!isInTestMode()) return CAN_MASTER->heaterReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
float DeviceIoControlService::Heater_readTemperature() { |
|
|
|
// logger->info(" Heater_readTemperature");
|
|
|
|
if (!isInTestMode()) return CAN_MASTER->heaterReadTemperature(GET_BOARDID()) / 10.0; |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadTemperature(GET_BOARDID()) / 10.0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -346,7 +347,7 @@ float DeviceIoControlService::Heater_readTemperature() { |
|
|
|
#define COMPONENT HardwareComponent::WarningLight
|
|
|
|
int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warning) { //
|
|
|
|
logger->debug(" WarningLight_setState, r={}, g={}, b={}, warning={}", r, g, b, warning); |
|
|
|
if (!isInTestMode()) CAN_MASTER->warningLightSetState(GET_BOARDID(), r, g, b, warning); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->warningLightSetState(GET_BOARDID(), r, g, b, warning); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -360,11 +361,11 @@ int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warni |
|
|
|
int DeviceIoControlService::PosiPressureProp_setValve(int valveValue) { //
|
|
|
|
valveValue = valveValue / 100.0 * 255; |
|
|
|
logger->info(" PosiPressureProp_setValve, valveValue={}", valveValue); |
|
|
|
if (!isInTestMode()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::PosiPressureProp_readPos() { |
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID()); |
|
|
|
pos = pos / 255.0 * 100; |
|
|
|
return pos; |
|
|
@ -372,7 +373,7 @@ int DeviceIoControlService::PosiPressureProp_readPos() { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
bool DeviceIoControlService::PosiPressureProp_isBusy() { |
|
|
|
if (!isInTestMode()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID()); |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID()); |
|
|
|
return false; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -381,11 +382,11 @@ bool DeviceIoControlService::PosiPressureProp_isBusy() { |
|
|
|
int DeviceIoControlService::NegaPressureProp_setValve(int valveValue) { |
|
|
|
valveValue = valveValue / 100.0 * 255; |
|
|
|
logger->info(" NegaPressureProp_setValve, valveValue={}", valveValue); |
|
|
|
if (!isInTestMode()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::NegaPressureProp_readPos() { |
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID()); |
|
|
|
pos = pos / 255.0 * 100; |
|
|
|
return pos; |
|
|
@ -393,7 +394,7 @@ int DeviceIoControlService::NegaPressureProp_readPos() { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
bool DeviceIoControlService::NegaPressureProp_isBusy() { |
|
|
|
if (!isInTestMode()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID()); |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID()); |
|
|
|
return false; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
@ -402,11 +403,11 @@ bool DeviceIoControlService::NegaPressureProp_isBusy() { |
|
|
|
|
|
|
|
int DeviceIoControlService::AirLeakDetectTestModeCtrl_setMode(AirLeakTestMode mode) { |
|
|
|
logger->info(" AirLeakDetectTestModeCtrl_setMode, mode={}", mode); |
|
|
|
if (!isInTestMode()) CAN_MASTER->airLeakDetectTestSetMode(GET_BOARDID(), mode.getId()); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airLeakDetectTestSetMode(GET_BOARDID(), mode.getId()); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() { |
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int val = CAN_MASTER->airLeakDetectTestGetMode(GET_BOARDID()); |
|
|
|
return AirLeakTestMode(val); |
|
|
|
} |
|
|
@ -419,12 +420,12 @@ AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() { |
|
|
|
#define COMPONENT HardwareComponent::ExtChSelector
|
|
|
|
int DeviceIoControlService::ExtChSelector_selectCh(int ch) { |
|
|
|
logger->info(" ExtChSelector_selectCh, ch={}", ch); |
|
|
|
if (!isInTestMode()) CAN_MASTER->extChSelectorSetCh(GET_BOARDID(), ch); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->extChSelectorSetCh(GET_BOARDID(), ch); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
bool DeviceIoControlService::ExtChSelector_isOnline() { |
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
try { |
|
|
|
CAN_MASTER->extChSelectorGetCh(GET_BOARDID()); |
|
|
|
return true; |
|
|
@ -436,7 +437,7 @@ bool DeviceIoControlService::ExtChSelector_isOnline() { |
|
|
|
} |
|
|
|
int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) { |
|
|
|
logger->info(" ExtChSelector_trySelectCh, ch={}", ch); |
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
try { |
|
|
|
ExtChSelector_selectCh(GET_BOARDID()); |
|
|
|
} catch (const std::exception &e) { |
|
|
@ -452,21 +453,21 @@ int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) { |
|
|
|
// 蒸发仓水浸
|
|
|
|
#define COMPONENT HardwareComponent::EvaporationBinWS
|
|
|
|
bool DeviceIoControlService::WaterSensor_readEvaporationBin() { |
|
|
|
if (!isInTestMode()) return CAN_MASTER->evaporationTankWSReadState(GET_BOARDID()); |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->evaporationTankWSReadState(GET_BOARDID()); |
|
|
|
return false; |
|
|
|
} |
|
|
|
#undef COMPONENT
|
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::DeviceBottomWS
|
|
|
|
bool DeviceIoControlService::WaterSensor_readDeviceBottom() { |
|
|
|
if (!isInTestMode()) return CAN_MASTER->bottomWSReadState(GET_BOARDID()); |
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->bottomWSReadState(GET_BOARDID()); |
|
|
|
return false; |
|
|
|
} // 设备底部水浸
|
|
|
|
#undef COMPONENT
|
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::ACPostPS
|
|
|
|
int DeviceIoControlService::ACPostPS_readPa() { //
|
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().ACPostPS_To_Pa(val); |
|
|
|
} |
|
|
@ -476,7 +477,7 @@ int DeviceIoControlService::ACPostPS_readPa() { // |
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::AirLeakDetectPS
|
|
|
|
int DeviceIoControlService::AirLeakDetectPS_readPa() { //
|
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().AirLeakDetectPS_To_Pa(val); |
|
|
|
} |
|
|
@ -486,7 +487,7 @@ int DeviceIoControlService::AirLeakDetectPS_readPa() { // |
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::LiquidWeightPS
|
|
|
|
int DeviceIoControlService::LiquidWeightPS_readPa() { //
|
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().LiquidWeightPS_To_Pa(val); |
|
|
|
} |
|
|
@ -496,7 +497,7 @@ int DeviceIoControlService::LiquidWeightPS_readPa() { // |
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::SprayPumpPostPS
|
|
|
|
int DeviceIoControlService::SprayPumpPostPS_readPa() { //
|
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().SprayPumpPostPS_To_Pa(val); |
|
|
|
} |
|
|
@ -506,7 +507,7 @@ int DeviceIoControlService::SprayPumpPostPS_readPa() { // |
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::AddLiquidPumpPostPS
|
|
|
|
int DeviceIoControlService::AddLiquidPumpPostPS_readPa() { //
|
|
|
|
if (!isInTestMode()) { |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().AddLiquidPumpPostPS_To_Pa(val); |
|
|
|
} |
|
|
|