Diag: track ErrorState

This commit is contained in:
Siegfried Siegert 2024-03-19 13:43:01 +01:00
parent 6a08cf0b62
commit 379a5d4e3e
Signed by: SiegfriedSiegert
GPG Key ID: 68371E015E8F0B03
2 changed files with 42 additions and 0 deletions

View File

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

View File

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