using System; using System.Collections.Generic; using System.Linq; using Wayne.Lib; using Wayne.Lib.StateEngine; using Wayne.Lib.StateEngine.Generic; namespace SinochemInternetPlusApp.States.CarPlateManualMode { public class WaitForFueling : TimeoutState<FuelingPoint> { private byte sqNo; private bool cardReaderBackToIdle = false; private bool nozzleLifted = false; protected override void Enter(StateEntry stateEntry, ref Transition transition) { base.Enter(stateEntry, ref transition); //cardReaderBackToIdle = false; nozzleLifted = false; //Main.SetICCardReaderToCarPlateIdle(out sqNo); DebugLog($"Start to set card reader back to CarPlateIdle, SqNo={sqNo}\n Waiting for Ack"); } protected override void HandleNonTimeoutEvent(StateEngineEvent stateEngineEvent, ref Transition transition) { //GenericEvent<CardReaderAckEventArgs> ackEvent = stateEngineEvent as GenericEvent<CardReaderAckEventArgs>; //if (ackEvent != null && ackEvent.EventArgs != null) //{ // if (ackEvent.EventArgs.Ack.MessageSeqNumber == sqNo) // { // DebugLog($" Set CardReader to CarPlateIdle ack'ed, SqNo={sqNo}\n"); // ackEvent.Handled = true; // cardReaderBackToIdle = true; // } //} //if (stateEngineEvent.Type.Equals(EventType.TrxOpRequest)) //{ // GenericEvent<TransactionOperationEventArgs> trxOpEvent = stateEngineEvent as GenericEvent<TransactionOperationEventArgs>; // if (trxOpEvent != null && trxOpEvent.EventArgs != null && Main.ActiveTrx != null) // { // trxOpEvent.Handled = true; // if (trxOpEvent.EventArgs.TrxOp.OpType == OpType.Delete) // { // int trxId = trxOpEvent.EventArgs.TrxOp.TrxId; // foreach (var trx in Main.ActiveTrx) // { // if ((trx.id == trxId) && (Main.AssociatedNozzles.Contains(trx.jihao))) // { // EpsTransaction.RestroeEpsTrxFrom(trx).UpdateTrxStatusToDb(EpsTrxStatus.Removed); // Main.CurrentEpsTrx = null; // transition = new Transition(this, TransitionType.FuelingRemoved); // } // } // } // } //} if (nozzleLifted) //&& cardReaderBackToIdle) { transition = new Transition(this, TransitionType.NozzleLifted); } } protected override void Timeout(ref Transition transition) { transition = new Transition(this, TransitionType.Timeout); } protected override int TimeoutInterval => TimeoutValues.GetValueInMilliSec(TimeoutValues.FuelingPoint.Shared_WaitForFueling, 30 * 60); } }