Send cashPaymentFinished() onCashChangerState() ...
This is for checking changer result and includes lot of debug code!
This commit is contained in:
parent
05113057b0
commit
25cb23a587
@ -224,7 +224,33 @@ void ATBDeviceControllerPlugin::requestStopCashInput()
|
|||||||
void ATBDeviceControllerPlugin::cashCollect()
|
void ATBDeviceControllerPlugin::cashCollect()
|
||||||
{
|
{
|
||||||
hw->vend_success();
|
hw->vend_success();
|
||||||
this->currentCashState = CASH_STATE::CACHE_EMPTY;
|
|
||||||
|
// inserted amount
|
||||||
|
uint32_t amountInt = this->hw->getInsertedAmount();
|
||||||
|
QString amountString = QString::number(amountInt);
|
||||||
|
|
||||||
|
// inserted coins
|
||||||
|
uint32_t amountCoinsInt = CashUtils::getAmountOfInsertedCoins(this->hw);
|
||||||
|
QString amountCoinsString = QString::number(amountCoinsInt);
|
||||||
|
|
||||||
|
// inserted notes
|
||||||
|
uint32_t amountNotesInt = CashUtils::getAmountOfInsertedNotes(this->hw);
|
||||||
|
QString amountNotesString = QString::number(amountNotesInt);
|
||||||
|
|
||||||
|
|
||||||
|
if (this->coinProcessor() == nsDeviceControllerInterface::COIN_PROCESSOR::CHANGER) {
|
||||||
|
QTimer::singleShot(1000, this, &ATBDeviceControllerPlugin::onCashChangerState);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
emit this->cashPaymentFinished(nsDeviceControllerInterface::RESULT_STATE::SUCCESS,
|
||||||
|
amountString,
|
||||||
|
amountCoinsString, // coins
|
||||||
|
amountNotesString, // notes
|
||||||
|
0, // proposed change
|
||||||
|
"",
|
||||||
|
"");
|
||||||
|
this->currentCashState = CASH_STATE::CACHE_EMPTY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ATBDeviceControllerPlugin::cashAbort()
|
void ATBDeviceControllerPlugin::cashAbort()
|
||||||
@ -1002,13 +1028,34 @@ void ATBDeviceControllerPlugin::onCashPayStopedSuccess()
|
|||||||
QString amountNotesString = QString::number(amountNotesInt);
|
QString amountNotesString = QString::number(amountNotesInt);
|
||||||
|
|
||||||
// amount due to change
|
// amount due to change
|
||||||
uint32_t amountDueToChangeInt = this->cashStartAmountInt - amountInt;
|
uint32_t amountDueToChangeInt;
|
||||||
|
if (amountInt > this->cashStartAmountInt) {
|
||||||
|
amountDueToChangeInt = amountInt - this->cashStartAmountInt;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
amountDueToChangeInt = 0;
|
||||||
|
}
|
||||||
QString amountDueToChangeString = QString::number(amountDueToChangeInt);
|
QString amountDueToChangeString = QString::number(amountDueToChangeInt);
|
||||||
|
|
||||||
|
|
||||||
// DEBUG
|
// DEBUG
|
||||||
qCritical() << " insertedAmount (int) = " << amountInt;
|
qCritical() << "---------------------------------------------------------";
|
||||||
qCritical() << " insertedAmount = " << amountString;
|
qCritical() << "ATBDeviceControllerPlugin::onCashPayStopedSuccess()";
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " amountInt: " << amountInt;
|
||||||
|
qCritical() << " amountString: " << amountString;
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " amountNotesInt: " << amountNotesInt;
|
||||||
|
qCritical() << " amountNotesString: " << amountNotesString;
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " amountCoinsInt: " << amountCoinsInt;
|
||||||
|
qCritical() << " amountCoinsString: " << amountCoinsString;
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " this->cashStartAmountInt: " << this->cashStartAmountInt;
|
||||||
|
qCritical() << " amountDueToChangeInt: " << amountDueToChangeInt;
|
||||||
|
qCritical() << " amountDueToChangeString: " << amountDueToChangeString;
|
||||||
|
qCritical() << "---------------------------------------------------------";
|
||||||
|
|
||||||
|
|
||||||
emit this->cashInputFinished(nsDeviceControllerInterface::RESULT_STATE::SUCCESS,
|
emit this->cashInputFinished(nsDeviceControllerInterface::RESULT_STATE::SUCCESS,
|
||||||
amountString,
|
amountString,
|
||||||
@ -1019,6 +1066,141 @@ void ATBDeviceControllerPlugin::onCashPayStopedSuccess()
|
|||||||
"");
|
"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ATBDeviceControllerPlugin::onCashChangerState()
|
||||||
|
{
|
||||||
|
uint32_t amountThatCouldNotBeChangedInt;
|
||||||
|
|
||||||
|
static int changerStateRequestCounter = 0;
|
||||||
|
static uint8_t lastChangerResult = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// inserted amount
|
||||||
|
uint32_t amountInt = this->hw->getInsertedAmount();
|
||||||
|
QString amountString = QString::number(amountInt);
|
||||||
|
|
||||||
|
// inserted coins
|
||||||
|
uint32_t amountCoinsInt = CashUtils::getAmountOfInsertedCoins(this->hw);
|
||||||
|
QString amountCoinsString = QString::number(amountCoinsInt);
|
||||||
|
|
||||||
|
// inserted notes
|
||||||
|
uint32_t amountNotesInt = CashUtils::getAmountOfInsertedNotes(this->hw);
|
||||||
|
QString amountNotesString = QString::number(amountNotesInt);
|
||||||
|
|
||||||
|
// amount due to change
|
||||||
|
uint32_t amountCoinsChangedInt;
|
||||||
|
if (amountInt > this->cashStartAmountInt) {
|
||||||
|
amountCoinsChangedInt = amountInt - this->cashStartAmountInt;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
amountCoinsChangedInt = 0;
|
||||||
|
}
|
||||||
|
QString amountCoinsChangedString = QString::number(amountCoinsChangedInt);
|
||||||
|
|
||||||
|
|
||||||
|
// get changer state ------------------------------------------------
|
||||||
|
// Note: 'returnedAmount'-parameter is missleading here!
|
||||||
|
// 'returnedAmount' is the amount which could not be changed!
|
||||||
|
|
||||||
|
lastChangerResult = hw->changer_getChangeResult(&amountThatCouldNotBeChangedInt);
|
||||||
|
|
||||||
|
// DEBUG
|
||||||
|
qCritical() << "---------------------------------------------------------";
|
||||||
|
qCritical() << "ATBDeviceControllerPlugin::onCashChangerState()";
|
||||||
|
qCritical() << " changerStateRequestCounter: " << changerStateRequestCounter;
|
||||||
|
qCritical() << " lastChangerResult: " << lastChangerResult;
|
||||||
|
qCritical() << " amountThatCouldNotBeChangedInt: " << amountThatCouldNotBeChangedInt;
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " amountInt: " << amountInt;
|
||||||
|
qCritical() << " amountString: " << amountString;
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " amountCoinsInt: " << amountCoinsInt;
|
||||||
|
qCritical() << " amountCoinsString: " << amountCoinsString;
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " amountNotesInt: " << amountNotesInt;
|
||||||
|
qCritical() << " amountNotesString: " << amountNotesString;
|
||||||
|
qCritical() << "";
|
||||||
|
qCritical() << " this->cashStartAmountInt: " << this->cashStartAmountInt;
|
||||||
|
qCritical() << " amountCoinsChangedInt: " << amountCoinsChangedInt;
|
||||||
|
qCritical() << " amountCoinsChangedString: " << amountCoinsChangedString;
|
||||||
|
qCritical() << "---------------------------------------------------------";
|
||||||
|
|
||||||
|
if (lastChangerResult == 1) { // change is returned
|
||||||
|
|
||||||
|
|
||||||
|
QString amountCoinsChangedString = QString::number(amountCoinsChangedInt);
|
||||||
|
|
||||||
|
emit this->cashPaymentFinished(nsDeviceControllerInterface::RESULT_STATE::SUCCESS,
|
||||||
|
amountString,
|
||||||
|
amountCoinsString, // coins
|
||||||
|
amountNotesString, // notes
|
||||||
|
amountCoinsChangedString, // change
|
||||||
|
"",
|
||||||
|
"");
|
||||||
|
changerStateRequestCounter = 0;
|
||||||
|
lastChangerResult = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (lastChangerResult == 0) { // not yet started
|
||||||
|
qCritical() << "ATBDeviceControllerPlugin::onCashChangerState(): ERROR: change not yet started: amount due to return: " << amountCoinsChangedString;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (lastChangerResult == 2) { // only partial return
|
||||||
|
qCritical() << "ATBDeviceControllerPlugin::onCashChangerState(): ERROR: only partial return: amount due to return: " << amountCoinsChangedString;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (lastChangerResult == 3) { // no return possible
|
||||||
|
qCritical() << "ATBDeviceControllerPlugin::onCashChangerState(): ERROR: no return possible: amount due to return: " << amountCoinsChangedString;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
qCritical() << "ATBDeviceControllerPlugin::onCashChangerState(): ERROR: invalid changerState (" << lastChangerResult << ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// handle timeout ------------------------------------------------
|
||||||
|
if (changerStateRequestCounter > 15) {
|
||||||
|
QString errorCode;
|
||||||
|
QString errorDescription;
|
||||||
|
switch (lastChangerResult) {
|
||||||
|
case 0: // not yet started
|
||||||
|
errorCode = "DC::CHANGER::START";
|
||||||
|
errorDescription = "Changer does not start";
|
||||||
|
break;
|
||||||
|
case 1: // amount returned
|
||||||
|
// This error should not occur!
|
||||||
|
errorCode = "DC::CHANGER::INVALID";
|
||||||
|
errorDescription = "Changer returned amount";
|
||||||
|
break;
|
||||||
|
case 2: // only partial return
|
||||||
|
errorCode = "DC::CHANGER::CHANGE";
|
||||||
|
errorDescription = "Changer does only partial return";
|
||||||
|
break;
|
||||||
|
case 3: // no return possible
|
||||||
|
errorCode = "DC::CHANGER::CHANGE_NOT_POSSIBLE";
|
||||||
|
errorDescription = "Changing not possible";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
emit this->cashPaymentFinished(nsDeviceControllerInterface::RESULT_STATE::ERROR_BACKEND,
|
||||||
|
amountString,
|
||||||
|
amountCoinsString,
|
||||||
|
amountNotesString,
|
||||||
|
0,
|
||||||
|
errorCode,
|
||||||
|
errorDescription);
|
||||||
|
changerStateRequestCounter = 0;
|
||||||
|
lastChangerResult = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// restart changer check:
|
||||||
|
changerStateRequestCounter++;
|
||||||
|
QTimer::singleShot(1000, this, &ATBDeviceControllerPlugin::onCashChangerState);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -151,6 +151,7 @@ private slots:
|
|||||||
void onCashPayStopByEscrow();
|
void onCashPayStopByEscrow();
|
||||||
void onCashPayStopByError();
|
void onCashPayStopByError();
|
||||||
void onCashPayStopByTimeout();
|
void onCashPayStopByTimeout();
|
||||||
|
void onCashChangerState();
|
||||||
|
|
||||||
// doors and hardware contacts
|
// doors and hardware contacts
|
||||||
void onServiceDoorOpened();
|
void onServiceDoorOpened();
|
||||||
|
Loading…
Reference in New Issue
Block a user