|
|
@ -33,7 +33,12 @@ static bool isInTestMode() { |
|
|
|
#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())
|
|
|
|
#define VIRTUAL_DEVICE() (isInTestMode())
|
|
|
|
|
|
|
|
#define CHECK_IS_DEVICETYPE_INITED() \
|
|
|
|
if (!ProjectPort::ins().isDeviceTypeInited()) { \ |
|
|
|
throw appexception(err::kappe_device_type_not_init, "DEVICE TYPE NOT INITED"); \ |
|
|
|
} |
|
|
|
|
|
|
|
void DeviceIoControlService::initialize() { |
|
|
|
REG_FN_VOID(AddLiquidPump_addLiquid, void(void)); |
|
|
@ -227,6 +232,7 @@ int DeviceIoControlService::processReportMsg(uint8_t from, uint8_t *hex, uint32_ |
|
|
|
// 加液泵控制
|
|
|
|
#define COMPONENT HardwareComponent::AddLiquidPump
|
|
|
|
int DeviceIoControlService::AddLiquidPump_addLiquid() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed); |
|
|
|
logger->info(" AddLiquidPump_addLiquid, pumpspeed={}", pumpspeed); |
|
|
|
|
|
|
@ -234,19 +240,24 @@ int DeviceIoControlService::AddLiquidPump_addLiquid() { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::AddLiquidPump_drainLiquid() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed); |
|
|
|
logger->info(" AddLiquidPump_drainLiquid, pumpspeed={}", -pumpspeed); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), -pumpspeed); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::AddLiquidPump_run(int rpm) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" AddLiquidPump_run, rpm={}", rpm); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int DeviceIoControlService::AddLiquidPump_stop() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" AddLiquidPump_stop"); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID()); |
|
|
|
return 0; |
|
|
@ -256,17 +267,23 @@ int DeviceIoControlService::AddLiquidPump_stop() { |
|
|
|
// 喷雾泵控制
|
|
|
|
#define COMPONENT HardwareComponent::SprayPump
|
|
|
|
int DeviceIoControlService::SprayPump_start(int32_t gpm) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
int pumpspeed_rpm = ProjectPort::ins().gpm2speed(gpm); |
|
|
|
logger->info(" SprayPump_start, gpm={}, rpm={}", gpm, pumpspeed_rpm); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed_rpm); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::SprayPump_stop() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" SprayPump_stop"); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID()); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" SprayPump_startInRPM, rpm={}", rpm); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm); |
|
|
|
return 0; |
|
|
@ -276,12 +293,16 @@ int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) { |
|
|
|
// 鼓风机控制
|
|
|
|
#define COMPONENT HardwareComponent::Blower
|
|
|
|
int DeviceIoControlService::Blower_ctrl(int power) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" Blower_ctrl, power={}", power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), power); |
|
|
|
usleep(1000 * 1000); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::Blower_close() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" Blower_close"); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), 0); |
|
|
|
return 0; |
|
|
@ -296,23 +317,31 @@ float DeviceIoControlService::Blower_readEI() { |
|
|
|
// 空压机控制
|
|
|
|
#define COMPONENT HardwareComponent::AirCompressor
|
|
|
|
int DeviceIoControlService::AC_ctrl(int power) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" AC_ctrl, power={}", power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power); |
|
|
|
usleep(1000 * 1000); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::AC_ctrlNoDelay(int power) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" AC_ctrl, power={}", power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int DeviceIoControlService::AC_close() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" AC_close"); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), 0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
float DeviceIoControlService::AC_readEI() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
// logger->info(" AC_readEI");
|
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->airCompressorReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
return 0; |
|
|
@ -322,22 +351,30 @@ float DeviceIoControlService::AC_readEI() { |
|
|
|
// 加热器控制
|
|
|
|
#define COMPONENT HardwareComponent::Heater
|
|
|
|
int DeviceIoControlService::Heater_ctrl(int power) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" Heater_ctrl, power={}", power); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), power); |
|
|
|
usleep(1000 * 1000); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::Heater_close() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" Heater_close"); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), 0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
float DeviceIoControlService::Heater_readEI() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
// logger->info(" Heater_readEI");
|
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadEI(GET_BOARDID()) / 1000.0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
float DeviceIoControlService::Heater_readTemperature() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
// logger->info(" Heater_readTemperature");
|
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadTemperature(GET_BOARDID()) / 10.0; |
|
|
|
return 0; |
|
|
@ -346,7 +383,9 @@ float DeviceIoControlService::Heater_readTemperature() { |
|
|
|
|
|
|
|
// 三色指示灯控制
|
|
|
|
#define COMPONENT HardwareComponent::WarningLight
|
|
|
|
int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warning) { //
|
|
|
|
int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warning) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
//
|
|
|
|
logger->debug(" WarningLight_setState, r={}, g={}, b={}, warning={}", r, g, b, warning); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->warningLightSetState(GET_BOARDID(), r, g, b, warning); |
|
|
|
return 0; |
|
|
@ -359,13 +398,17 @@ int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warni |
|
|
|
// 气密性测试空压机控制
|
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::PositivePressureProportional
|
|
|
|
int DeviceIoControlService::PosiPressureProp_setValve(int valveValue) { //
|
|
|
|
int DeviceIoControlService::PosiPressureProp_setValve(int valveValue) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
//
|
|
|
|
valveValue = valveValue / 100.0 * 255; |
|
|
|
logger->info(" PosiPressureProp_setValve, valveValue={}", valveValue); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::PosiPressureProp_readPos() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID()); |
|
|
|
pos = pos / 255.0 * 100; |
|
|
@ -374,6 +417,8 @@ int DeviceIoControlService::PosiPressureProp_readPos() { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
bool DeviceIoControlService::PosiPressureProp_isBusy() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID()); |
|
|
|
return false; |
|
|
|
} |
|
|
@ -381,12 +426,16 @@ bool DeviceIoControlService::PosiPressureProp_isBusy() { |
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::NegativePressureProportional
|
|
|
|
int DeviceIoControlService::NegaPressureProp_setValve(int valveValue) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
valveValue = valveValue / 100.0 * 255; |
|
|
|
logger->info(" NegaPressureProp_setValve, valveValue={}", valveValue); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int DeviceIoControlService::NegaPressureProp_readPos() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID()); |
|
|
|
pos = pos / 255.0 * 100; |
|
|
@ -395,6 +444,8 @@ int DeviceIoControlService::NegaPressureProp_readPos() { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
bool DeviceIoControlService::NegaPressureProp_isBusy() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID()); |
|
|
|
return false; |
|
|
|
} |
|
|
@ -403,11 +454,15 @@ bool DeviceIoControlService::NegaPressureProp_isBusy() { |
|
|
|
#define COMPONENT HardwareComponent::AirLeakDetectTestModeCtrl
|
|
|
|
|
|
|
|
int DeviceIoControlService::AirLeakDetectTestModeCtrl_setMode(AirLeakTestMode mode) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" AirLeakDetectTestModeCtrl_setMode, mode={}", mode); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->airLeakDetectTestSetMode(GET_BOARDID(), mode.getId()); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int val = CAN_MASTER->airLeakDetectTestGetMode(GET_BOARDID()); |
|
|
|
return AirLeakTestMode(val); |
|
|
@ -420,12 +475,16 @@ AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() { |
|
|
|
// ExtChSelector
|
|
|
|
#define COMPONENT HardwareComponent::ExtChSelector
|
|
|
|
int DeviceIoControlService::ExtChSelector_selectCh(int ch) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" ExtChSelector_selectCh, ch={}", ch); |
|
|
|
if (!VIRTUAL_DEVICE()) CAN_MASTER->extChSelectorSetCh(GET_BOARDID(), ch); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
bool DeviceIoControlService::ExtChSelector_isOnline() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
try { |
|
|
|
CAN_MASTER->extChSelectorGetCh(GET_BOARDID()); |
|
|
@ -437,6 +496,8 @@ bool DeviceIoControlService::ExtChSelector_isOnline() { |
|
|
|
return false; |
|
|
|
} |
|
|
|
int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
logger->info(" ExtChSelector_trySelectCh, ch={}", ch); |
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
try { |
|
|
@ -454,6 +515,8 @@ int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) { |
|
|
|
// 蒸发仓水浸
|
|
|
|
#define COMPONENT HardwareComponent::EvaporationBinWS
|
|
|
|
bool DeviceIoControlService::WaterSensor_readEvaporationBin() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->evaporationTankWSReadState(GET_BOARDID()); |
|
|
|
return false; |
|
|
|
} |
|
|
@ -461,13 +524,17 @@ bool DeviceIoControlService::WaterSensor_readEvaporationBin() { |
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::DeviceBottomWS
|
|
|
|
bool DeviceIoControlService::WaterSensor_readDeviceBottom() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
|
|
|
|
if (!VIRTUAL_DEVICE()) return CAN_MASTER->bottomWSReadState(GET_BOARDID()); |
|
|
|
return false; |
|
|
|
} // 设备底部水浸
|
|
|
|
#undef COMPONENT
|
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::ACPostPS
|
|
|
|
int DeviceIoControlService::ACPostPS_readPa() { //
|
|
|
|
int DeviceIoControlService::ACPostPS_readPa() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
//
|
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().ACPostPS_To_Pa(val); |
|
|
@ -477,7 +544,9 @@ int DeviceIoControlService::ACPostPS_readPa() { // |
|
|
|
#undef COMPONENT
|
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::AirLeakDetectPS
|
|
|
|
int DeviceIoControlService::AirLeakDetectPS_readPa() { //
|
|
|
|
int DeviceIoControlService::AirLeakDetectPS_readPa() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
//
|
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().AirLeakDetectPS_To_Pa(val); |
|
|
@ -487,7 +556,9 @@ int DeviceIoControlService::AirLeakDetectPS_readPa() { // |
|
|
|
#undef COMPONENT
|
|
|
|
|
|
|
|
#define COMPONENT HardwareComponent::LiquidWeightPS
|
|
|
|
int DeviceIoControlService::LiquidWeightPS_readPa() { //
|
|
|
|
int DeviceIoControlService::LiquidWeightPS_readPa() { |
|
|
|
CHECK_IS_DEVICETYPE_INITED(); |
|
|
|
//
|
|
|
|
if (!VIRTUAL_DEVICE()) { |
|
|
|
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID()); |
|
|
|
return ProjectPort::ins().LiquidWeightPS_To_Pa(val); |
|
|
|