CONFIGURATION.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Wayne.Lib.StateEngine;
  5. namespace SinochemInternetPlusApp.States.CarPlateMode
  6. {
  7. static class CONFIGURATION
  8. {
  9. // make sure entry point is Init, and exit point is Final
  10. public static void Config(StateTransitionLookup sl)
  11. {
  12. sl.AddTransition<Init, DisableICCardReader>(TransitionType.Init);
  13. sl.AddTransition<DisableICCardReader, SendWelcomeScreen>(TransitionType.ICCardReaderDisabled);
  14. sl.AddTransition<DisableICCardReader, Error>(TransitionType.Timeout);
  15. sl.AddTransition<SendWelcomeScreen, WaitForCardReaderBackToIdle>(TransitionType.Done);
  16. sl.AddTransition<SendWelcomeScreen, Error>(TransitionType.Timeout);
  17. sl.AddTransition<WaitForCardReaderBackToIdle, ShowTrxListPendingFueling>(TransitionType.Timeout);
  18. ////大屏显示“待加油”
  19. sl.AddTransition<ShowTrxListPendingFueling, WaitForFueling>(TransitionType.Done);
  20. sl.AddTransition<ShowTrxListPendingFueling, WaitForFueling>(TransitionType.Timeout);
  21. sl.AddTransition<WaitForFueling, Shared.AuthorizePump>(TransitionType.NozzleLifted);
  22. sl.AddTransition<WaitForFueling, SendTrxDoneToCardReader>(TransitionType.FuelingRemoved);
  23. sl.AddTransition<WaitForFueling, Error>(TransitionType.Timeout);
  24. sl.AddTransition<Shared.AuthorizePump, ShowTrxListFueling>(TransitionType.PumpAuthOk);
  25. sl.AddTransition<Shared.AuthorizePump, Error>(TransitionType.PumpAuthFailed);
  26. sl.AddTransition<Shared.AuthorizePump, Error>(TransitionType.Timeout);
  27. ////大屏显示“加油中”
  28. sl.AddTransition<ShowTrxListFueling, Shared.Fueling>(TransitionType.Done);
  29. sl.AddTransition<ShowTrxListFueling, Shared.Fueling>(TransitionType.Timeout);
  30. sl.AddTransition<Shared.Fueling, Shared.WaitForPayableTrx>(TransitionType.NozzleReplaced);
  31. sl.AddTransition<Shared.WaitForPayableTrx, ShowTrxListReadyForPay>(TransitionType.FuelingDone);
  32. sl.AddTransition<Shared.WaitForPayableTrx, SendTrxDoneToCardReader>(TransitionType.Timeout);
  33. ////大屏显示“待支付”
  34. sl.AddTransition<ShowTrxListReadyForPay, CalculateMAC>(TransitionType.Done);
  35. sl.AddTransition<ShowTrxListReadyForPay, CalculateMAC>(TransitionType.Timeout);
  36. sl.AddTransition<CalculateMAC, Shared.PayTrx>(TransitionType.ICCardReaderMACResponse);
  37. sl.AddTransition<CalculateMAC, Shared.PayTrx>(TransitionType.Done);
  38. sl.AddTransition<Shared.PayTrx, Shared.NotifyPOS>(TransitionType.CloudPaymentOk);
  39. sl.AddTransition<Shared.PayTrx, SendTrxDoneToCardReader>(TransitionType.CloudPaymentFailed);
  40. sl.AddTransition<Shared.NotifyPOS, SendTrxDoneToCardReader>(TransitionType.PosNotifyOk);
  41. sl.AddTransition<Shared.NotifyPOS, SendTrxDoneToCardReader>(TransitionType.PosNotifyFailed);
  42. sl.AddTransition<SendTrxDoneToCardReader, ShowTrxListFillingPaid>(TransitionType.Done);
  43. sl.AddTransition<SendTrxDoneToCardReader, ShowTrxListFillingPaid>(TransitionType.Timeout);
  44. ////大屏显示“加油结果”
  45. sl.AddTransition<ShowTrxListFillingPaid, ShowPaymentResult>(TransitionType.Done);
  46. sl.AddTransition<ShowTrxListFillingPaid, ShowPaymentResult>(TransitionType.Timeout);
  47. ////大屏显示“支付结果”
  48. sl.AddTransition<ShowPaymentResult, Shared.PrintReceipt>(TransitionType.Done);
  49. sl.AddTransition<ShowPaymentResult, Shared.PrintReceipt>(TransitionType.Timeout);
  50. ////打印小票
  51. sl.AddTransition<Shared.PrintReceipt, Shared.WaitForPrinterIdle>(TransitionType.Abort);
  52. sl.AddTransition<Shared.WaitForPrinterIdle, Shared.PrintReceipt>(TransitionType.Timeout);
  53. sl.AddTransition<Shared.WaitForPrinterIdle, Shared.PrintReceipt>(TransitionType.Done);
  54. sl.AddTransition<Shared.PrintReceipt, Shared.PrintReceipt>(TransitionType.Next);
  55. sl.AddTransition<Shared.PrintReceipt, Final>(TransitionType.Done);
  56. sl.AddTransition<Shared.PrintReceipt, Error>(TransitionType.Timeout);
  57. sl.AddTransition<Error, SendTrxDoneToCardReader>(TransitionType.Error);
  58. sl.AddTransition<AnyState, Final>(BasicTransitionType.Error);
  59. }
  60. }
  61. }