DisableICCardReader.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Collections.Generic;
  3. using Wayne.Lib;
  4. using Wayne.Lib.StateEngine;
  5. using Wayne.Lib.StateEngine.Generic;
  6. namespace SinochemInternetPlusApp.States.CarPlateMode
  7. {
  8. class DisableICCardReader : TimeoutState<FuelingPoint>
  9. {
  10. private byte sqNo;
  11. protected override void Enter(StateEntry stateEntry, ref Transition transition)
  12. {
  13. base.Enter(stateEntry, ref transition);
  14. //transition = new Transition(this, TransitionType.ICCardReaderDisabled);
  15. //return;
  16. Main.CloseICCardReader(out sqNo);
  17. }
  18. protected override void HandleNonTimeoutEvent(StateEngineEvent stateEngineEvent, ref Transition transition)
  19. {
  20. GenericEvent<CardReaderAckEventArgs> ackEvent = stateEngineEvent as GenericEvent<CardReaderAckEventArgs>;
  21. if (ackEvent != null && ackEvent.EventArgs != null)
  22. {
  23. if (ackEvent.EventArgs.Ack.MessageSeqNumber == sqNo)
  24. {
  25. DebugLog($"Ack for previous req arrived, SqNo: {sqNo}");
  26. Main.CardReaderDisabled = true;
  27. ackEvent.Handled = true;
  28. transition = new Transition(this, TransitionType.ICCardReaderDisabled);
  29. }
  30. }
  31. }
  32. protected override void Timeout(ref Transition transition)
  33. {
  34. transition = new Transition(this, TransitionType.Timeout);
  35. }
  36. protected override int TimeoutInterval =>
  37. TimeoutValues.GetValueInMilliSec(TimeoutValues.FuelingPoint.CarPlateMode_DisableICCardReader, 10);
  38. }
  39. }