WaitForCardEject.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using System.Collections.Generic;
  3. using Wayne.Lib.StateEngine;
  4. using Wayne.Lib.StateEngine.Generic;
  5. using WayneChina_IcCardReader_SinoChem.MessageEntity.Incoming;
  6. namespace SinochemInternetPlusApp.States.ICCardMode
  7. {
  8. internal class WaitForCardEject : TimeoutState<FuelingPoint>
  9. {
  10. protected override void HandleNonTimeoutEvent(StateEngineEvent stateEngineEvent, ref Transition transition)
  11. {
  12. if (stateEngineEvent.Type.Equals(EventType.ReaderStateChanged))
  13. {
  14. GenericEvent<CardReaderStateEventArgs> readerEvent = stateEngineEvent as GenericEvent<CardReaderStateEventArgs>;
  15. if (readerEvent != null && readerEvent.EventArgs != null)
  16. {
  17. if (readerEvent.EventArgs.CardReaderState.State == CardReaderState.Idle)
  18. {
  19. DebugLog("card ejected");
  20. readerEvent.Handled = true;
  21. transition = new Transition(this, TransitionType.Done);
  22. }
  23. }
  24. }
  25. }
  26. protected override void Timeout(ref Transition transition)
  27. {
  28. transition = new Transition(this, TransitionType.Timeout);
  29. }
  30. /// <summary>
  31. /// Wait for IC card eject timeout, at least 60s
  32. /// </summary>
  33. protected override int TimeoutInterval =>
  34. TimeoutValues.GetValueInMilliSec(TimeoutValues.FuelingPoint.ICCardMode_WaitForCardEject, 60);
  35. }
  36. }