Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
6c2717c56b
|
|||
816182c87b
|
|||
492d3a107a
|
|||
962cd01eac
|
|||
d66363da46
|
|||
7b25f86d6b
|
@@ -82,6 +82,8 @@ PLUGIN_STATE ATBDeviceControllerPlugin::initDCPlugin(QObject *eventReceiver, con
|
|||||||
this->diag = new DeviceControllerDiag(this->persistentData, this);
|
this->diag = new DeviceControllerDiag(this->persistentData, this);
|
||||||
connect(this->diag, &DeviceControllerDiag::newVoltage, this, &ATBDeviceControllerPlugin::onNewVoltage);
|
connect(this->diag, &DeviceControllerDiag::newVoltage, this, &ATBDeviceControllerPlugin::onNewVoltage);
|
||||||
|
|
||||||
|
int diagTimeout = settings.value("ATBDeviceControllerPlugin/diagTimeout", "45").toInt();
|
||||||
|
this->diag->setTimeout(diagTimeout);
|
||||||
|
|
||||||
// currentSelectedTicketType - number of used "Kombiticket" (deprecated) use TICKET_VARIANT in future
|
// currentSelectedTicketType - number of used "Kombiticket" (deprecated) use TICKET_VARIANT in future
|
||||||
this->currentSelectedTicketType = 0;
|
this->currentSelectedTicketType = 0;
|
||||||
@@ -540,6 +542,8 @@ void ATBDeviceControllerPlugin::onCBinAndAllDoorsClosed()
|
|||||||
{
|
{
|
||||||
qCritical() << "ATBDeviceControllerPlugin::onCBinAndAllDoorsClosed()";
|
qCritical() << "ATBDeviceControllerPlugin::onCBinAndAllDoorsClosed()";
|
||||||
|
|
||||||
|
this->diag->diagReInit();
|
||||||
|
|
||||||
QTimer::singleShot(2000, this, SIGNAL(requestModeIDLE()));
|
QTimer::singleShot(2000, this, SIGNAL(requestModeIDLE()));
|
||||||
|
|
||||||
this->dbus->finishedBackgroundTask("DOOR_OPEN");
|
this->dbus->finishedBackgroundTask("DOOR_OPEN");
|
||||||
|
@@ -20,7 +20,7 @@ DeviceControllerDiag::DeviceControllerDiag(PersistentData *pData, QObject *paren
|
|||||||
, pData(pData)
|
, pData(pData)
|
||||||
{
|
{
|
||||||
diagRequestTimeoutTimer = new QTimer(this);
|
diagRequestTimeoutTimer = new QTimer(this);
|
||||||
diagRequestTimeoutTimer->setInterval(1000*20); // 20s
|
diagRequestTimeoutTimer->setInterval(1000*45);
|
||||||
diagRequestTimeoutTimer->setSingleShot(true);
|
diagRequestTimeoutTimer->setSingleShot(true);
|
||||||
connect(diagRequestTimeoutTimer, &QTimer::timeout, this, &DeviceControllerDiag::onDiagRequestTimeoutTimerTimeout);
|
connect(diagRequestTimeoutTimer, &QTimer::timeout, this, &DeviceControllerDiag::onDiagRequestTimeoutTimerTimeout);
|
||||||
}
|
}
|
||||||
@@ -36,6 +36,17 @@ void DeviceControllerDiag::init(hwinf *hw, QObject* eventReceiver)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DeviceControllerDiag::diagReInit()
|
||||||
|
{
|
||||||
|
this->machineEventSet.clear();
|
||||||
|
this->_isErrorState = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceControllerDiag::setTimeout(int timeout)
|
||||||
|
{
|
||||||
|
this->diagRequestTimeoutTimer->setInterval(1000 * timeout);
|
||||||
|
}
|
||||||
|
|
||||||
void DeviceControllerDiag::diagRequest()
|
void DeviceControllerDiag::diagRequest()
|
||||||
{
|
{
|
||||||
qCritical() << "DeviceControllerDiag::diagRequest()";
|
qCritical() << "DeviceControllerDiag::diagRequest()";
|
||||||
@@ -93,6 +104,14 @@ void DeviceControllerDiag::private_startDiag()
|
|||||||
this->private_sendDiagEvent(DeviceController::State::E255);
|
this->private_sendDiagEvent(DeviceController::State::E255);
|
||||||
this->isRequestRunning = false;
|
this->isRequestRunning = false;
|
||||||
this->flagInterruptDiag = false;
|
this->flagInterruptDiag = false;
|
||||||
|
|
||||||
|
// try it again, until success:
|
||||||
|
QTimer::singleShot(400, this, &DeviceControllerDiag::diagRequest);
|
||||||
|
/**
|
||||||
|
* But please note:
|
||||||
|
* - diag does currently not stop suspend (start a background task)
|
||||||
|
* - diag is called again in ModeOOO wokeup()
|
||||||
|
*/
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,18 +178,6 @@ void DeviceControllerDiag::sys_superviseSystem()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// all doors: 99: undefined 0:closed 1:open
|
|
||||||
if (dynMaCond.lowerDoor || dynMaCond.upperDoor) {
|
|
||||||
// Service or battery door is open, goto INTRUSION MODE
|
|
||||||
qCritical() << "DeviceControllerDiag::sys_superviseSystem() Service or battery door is open, goto INTRUSION MODE";
|
|
||||||
this->private_sendDiagEvent(DeviceController::State::E253);
|
|
||||||
}
|
|
||||||
if (dynMaCond.middleDoor) {
|
|
||||||
// vault door is open, goto INTRUSION MODE
|
|
||||||
qCritical() << "DeviceControllerDiag::sys_superviseSystem() vault door is open, goto INTRUSION MODE";
|
|
||||||
this->private_sendDiagEvent(DeviceController::State::E252);
|
|
||||||
}
|
|
||||||
|
|
||||||
qCritical() << " --> call sub_componentAssessment()";
|
qCritical() << " --> call sub_componentAssessment()";
|
||||||
|
|
||||||
sub_componentAssessment();
|
sub_componentAssessment();
|
||||||
@@ -204,6 +211,21 @@ void DeviceControllerDiag::sub_componentAssessment()
|
|||||||
this->private_sendDiagEvent(DeviceController::State::A000);
|
this->private_sendDiagEvent(DeviceController::State::A000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check for open doors
|
||||||
|
// all doors: 99: undefined 0:closed 1:open
|
||||||
|
if (dynMaCond.lowerDoor || dynMaCond.upperDoor) {
|
||||||
|
// Service or battery door is open
|
||||||
|
flag_sendOperate = false;
|
||||||
|
qCritical() << "DeviceControllerDiag::sys_superviseSystem() Service or battery door is open, goto INTRUSION MODE";
|
||||||
|
this->private_sendDiagEvent(DeviceController::State::E253);
|
||||||
|
}
|
||||||
|
if (dynMaCond.middleDoor) {
|
||||||
|
// vault door is open
|
||||||
|
flag_sendOperate = false;
|
||||||
|
qCritical() << "DeviceControllerDiag::sys_superviseSystem() vault door is open, goto INTRUSION MODE";
|
||||||
|
this->private_sendDiagEvent(DeviceController::State::E252);
|
||||||
|
}
|
||||||
|
|
||||||
// check for invalid states:
|
// check for invalid states:
|
||||||
|
|
||||||
if (modCond.rtc>=200) {
|
if (modCond.rtc>=200) {
|
||||||
@@ -247,7 +269,8 @@ void DeviceControllerDiag::sub_componentAssessment()
|
|||||||
}
|
}
|
||||||
if (modCond.coinEscrow>=200) {
|
if (modCond.coinEscrow>=200) {
|
||||||
flag_sendOperate = false;
|
flag_sendOperate = false;
|
||||||
this->private_sendDiagEvent(DeviceController::State::E010);
|
// coinEscrow>200 is considered a warning:
|
||||||
|
this->private_sendDiagEvent(DeviceController::State::W010);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// -----------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------
|
||||||
@@ -269,7 +292,8 @@ void DeviceControllerDiag::sub_componentAssessment()
|
|||||||
{
|
{
|
||||||
if (modCond.coinEscrow>=200) {
|
if (modCond.coinEscrow>=200) {
|
||||||
flag_sendOperate = false;
|
flag_sendOperate = false;
|
||||||
this->private_sendDiagEvent(DeviceController::State::E010);
|
// coinEscrow>200 is considered a warning:
|
||||||
|
this->private_sendDiagEvent(DeviceController::State::W010);
|
||||||
}
|
}
|
||||||
if (modCond.coinSafe==201) { // full
|
if (modCond.coinSafe==201) { // full
|
||||||
flag_sendOperate = false;
|
flag_sendOperate = false;
|
||||||
@@ -341,7 +365,7 @@ void DeviceControllerDiag::sub_componentAssessment()
|
|||||||
}
|
}
|
||||||
if (modCond.temper>=200) {
|
if (modCond.temper>=200) {
|
||||||
flag_sendOperate = false;
|
flag_sendOperate = false;
|
||||||
this->private_sendDiagEvent(DeviceController::State::E004);
|
this->private_sendDiagEvent(DeviceController::State::W004);
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for warnings
|
// check for warnings
|
||||||
@@ -452,6 +476,10 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result)
|
|||||||
parameter = "coin escrow";
|
parameter = "coin escrow";
|
||||||
this->_isErrorState = true;
|
this->_isErrorState = true;
|
||||||
break;
|
break;
|
||||||
|
case DeviceController::State::W010: // coin escrow
|
||||||
|
eventClass = EVENT_CLASS::WARNING;
|
||||||
|
parameter = "coin escrow";
|
||||||
|
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.";
|
||||||
|
@@ -29,6 +29,7 @@ namespace DeviceController {
|
|||||||
E008,
|
E008,
|
||||||
E009,
|
E009,
|
||||||
E010,
|
E010,
|
||||||
|
W010, // Coin Escrow
|
||||||
E011,
|
E011,
|
||||||
|
|
||||||
E018,
|
E018,
|
||||||
@@ -79,9 +80,20 @@ public:
|
|||||||
bool isOperatingState();
|
bool isOperatingState();
|
||||||
QSet<DeviceController::State> getCurrentMachineState();
|
QSet<DeviceController::State> getCurrentMachineState();
|
||||||
|
|
||||||
|
void setTimeout(int timeout);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
/**
|
||||||
|
* start diag request
|
||||||
|
*/
|
||||||
void diagRequest();
|
void diagRequest();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reset / re-init diag request.
|
||||||
|
* Called e.g. when doors are closed.
|
||||||
|
*/
|
||||||
|
void diagReInit();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void diagResponse(ATBMachineEvent* machineEvent);
|
void diagResponse(ATBMachineEvent* machineEvent);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user