Compare commits

...

2 Commits
2.2.0 ... 2.2.1

Author SHA1 Message Date
87d50a05dd Check error-state if doors are closed 2024-03-19 13:43:45 +01:00
379a5d4e3e Diag: track ErrorState 2024-03-19 13:43:01 +01:00
3 changed files with 49 additions and 3 deletions

View File

@@ -550,10 +550,14 @@ void ATBDeviceControllerPlugin::onAllDoorsClosed()
{
qCritical() << "ATBDeviceControllerPlugin::onAllDoorsClosed()";
if (this->diag->isErrorState()) {
emit this->requestModeOOO();
}
else {
emit this->requestModeIDLE();
this->dbus->finishedBackgroundTask("DOOR_OPEN");
}
// TODO: check for errors and create a machine event
this->dbus->finishedBackgroundTask("DOOR_OPEN");
}
void ATBDeviceControllerPlugin::onNewVoltage(uint32_t voltage)

View File

@@ -13,6 +13,7 @@ DeviceControllerDiag::DeviceControllerDiag(PersistentData *pData, QObject *paren
, isRequestRunning(false)
, flagInterruptDiag(false)
, lastState(DeviceController::State::INITIAL_STATE)
, _isErrorState(false)
, pData(pData)
{
diagRequestTimeoutTimer = new QTimer(this);
@@ -63,6 +64,24 @@ void DeviceControllerDiag::onDiagRequestTimeoutTimerTimeout()
this->flagInterruptDiag = true;
}
bool DeviceControllerDiag::isErrorState()
{
return this->_isErrorState;
}
bool DeviceControllerDiag::isOperatingState()
{
return !this->_isErrorState;
}
QSet<DeviceController::State> DeviceControllerDiag::getCurrentMachineState()
{
return this->machineEventSet;
}
void DeviceControllerDiag::private_startDiag()
{
// check for DiagRequestTimeoutTimerTimeout:
@@ -393,58 +412,72 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result)
case DeviceController::State::A000: // alarm / intrusion
eventClass = EVENT_CLASS::ALARM;
parameter = "alarm / intrusion";
this->_isErrorState = true;
break;
case DeviceController::State::E002: // real time clock error
eventClass = EVENT_CLASS::ERROR;
parameter = "real time clock error";
this->_isErrorState = true;
break;
case DeviceController::State::E003: // voltage error
eventClass = EVENT_CLASS::ERROR;
parameter = "voltage error";
this->_isErrorState = true;
break;
case DeviceController::State::E004: // temperature error
eventClass = EVENT_CLASS::ERROR;
parameter = "temperature error";
this->_isErrorState = true;
break;
case DeviceController::State::E007: // coin safe full
eventClass = EVENT_CLASS::ERROR;
parameter = "coin safe full";
this->_isErrorState = true;
break;
case DeviceController::State::E008: // bill acceptor full
eventClass = EVENT_CLASS::ERROR;
parameter = "bill acceptor full";
this->_isErrorState = true;
break;
case DeviceController::State::E009: // no cash box
eventClass = EVENT_CLASS::ERROR;
parameter = "no cash box";
this->_isErrorState = true;
break;
case DeviceController::State::E010: // coin escrow
eventClass = EVENT_CLASS::ERROR;
parameter = "coin escrow";
this->_isErrorState = true;
break;
case DeviceController::State::E011: // mem error int.ee.
eventClass = EVENT_CLASS::ERROR;
parameter = "mem error int.ee.";
this->_isErrorState = true;
break;
case DeviceController::State::E018: // no paper
eventClass = EVENT_CLASS::ERROR;
parameter = "no paper";
this->_isErrorState = true;
break;
case DeviceController::State::E020: // printer error
eventClass = EVENT_CLASS::ERROR;
parameter = "printer error";
this->_isErrorState = true;
break;
case DeviceController::State::E025: // coin blocker
eventClass = EVENT_CLASS::ERROR;
parameter = "coin blocker";
this->_isErrorState = true;
break;
case DeviceController::State::E026: // error coin validator
eventClass = EVENT_CLASS::ERROR;
parameter = "error coin validator";
this->_isErrorState = true;
break;
case DeviceController::State::E034: // mdb error
eventClass = EVENT_CLASS::ERROR;
parameter = "mdb error";
this->_isErrorState = true;
break;
case DeviceController::State::E071: // cash box change is ongoing
@@ -480,6 +513,7 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result)
break;
case DeviceController::State::O000: // everything is fine
this->machineEventSet.clear();
this->_isErrorState = false;
eventClass = EVENT_CLASS::OPERATE;
parameter = "";
if (this->lastState == DeviceController::State::O000) {

View File

@@ -72,6 +72,13 @@ public:
nsDeviceControllerInterface::COIN_PROCESSOR coinProcessorType;
nsDeviceControllerInterface::BILL_ACCEPTOR billAcceptor;
/**
* return true, if machineEventSet contains an error
*/
bool isErrorState();
bool isOperatingState();
QSet<DeviceController::State> getCurrentMachineState();
public slots:
void diagRequest();
@@ -95,6 +102,7 @@ private:
DeviceController::State lastState;
QSet<DeviceController::State> machineEventSet;
bool _isErrorState;
PersistentData* pData;