WaitForFueling.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Wayne.Lib.StateEngine;
  7. using Wayne.Lib.StateEngine.Generic;
  8. using WayneChina_IcCardReader_SinoChem.MessageEntity.Incoming;
  9. namespace SinochemInternetPlusApp.States.ICCardMode
  10. {
  11. internal class WaitForFueling : TimeoutState<FuelingPoint>
  12. {
  13. protected override void Enter(StateEntry stateEntry, ref Transition transition)
  14. {
  15. base.Enter(stateEntry, ref transition);
  16. Main.CurrentEpsTrx.UpdateTrxStatusToDb(EpsTrxStatus.BeforeFueling);
  17. }
  18. protected override void HandleNonTimeoutEvent(StateEngineEvent stateEngineEvent, ref Transition transition)
  19. {
  20. if (stateEngineEvent.Type.Equals(EventType.ReaderStateChanged))
  21. {
  22. GenericEvent<CardReaderStateEventArgs> readerEvent = stateEngineEvent as GenericEvent<CardReaderStateEventArgs>;
  23. if (readerEvent != null && readerEvent.EventArgs != null)
  24. {
  25. if (readerEvent.EventArgs.CardReaderState.State == CardReaderState.Idle)
  26. {
  27. DebugLog("What? Card ejected when waiting for nozzole lift? Fuck, man!");
  28. readerEvent.Handled = true;
  29. transition = new Transition(this, TransitionType.Abort);
  30. }
  31. }
  32. }
  33. else if (stateEngineEvent.Type is EventType)
  34. {
  35. switch ((EventType)stateEngineEvent.Type)
  36. {
  37. case EventType.NozzleLifted:
  38. var nlEvent = stateEngineEvent as GenericEvent<NozzleLiftedEventArgs>;
  39. Main.CurrentNozzleId = nlEvent.EventArgs.NozzleId;
  40. //Update the nozzle id for trx when it's known
  41. Main.CurrentEpsTrx.Model.jihao = Main.CurrentNozzleId;
  42. Main.CurrentEpsTrx.SaveToDb();
  43. transition = new Transition(this, TransitionType.NozzleLifted);
  44. stateEngineEvent.Handled = true;
  45. break;
  46. }
  47. }
  48. }
  49. protected override void Timeout(ref Transition transition)
  50. {
  51. transition = new Transition(this, TransitionType.Timeout);
  52. }
  53. protected override int TimeoutInterval =>
  54. TimeoutValues.GetValueInMilliSec(TimeoutValues.FuelingPoint.Shared_WaitForFueling, 30 * 60);
  55. }
  56. }