StateConfigurator.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Wayne.ForecourtControl.Fusion.ReadDeviceStatus.States;
  2. using Wayne.Lib.StateEngine;
  3. namespace Wayne.ForecourtControl.Fusion.StatusStateMachine.States
  4. {
  5. class StateConfigurator
  6. {
  7. public virtual void Config(StateTransitionLookup sl)
  8. {
  9. sl.AddTransition<Init, Idle>(BasicTransitionType.Init);
  10. sl.AddTransition<Idle, ReadPumpStatusFromForecourt>(BasicTransitionType.Done);
  11. sl.AddTransition<Idle, ReadProductTable>(TransitionType.ReadConfiguration);
  12. sl.AddTransition<ReadPumpStatusFromForecourt, Idle>(BasicTransitionType.Timeout);
  13. sl.AddTransition<ReadPumpStatusFromForecourt, ReadTankProbeStatusFromForecourt>(BasicTransitionType.Done);
  14. sl.AddTransition<ReadTankProbeStatusFromForecourt, Idle>(BasicTransitionType.Timeout);
  15. sl.AddTransition<ReadTankProbeStatusFromForecourt, ReadVirsStatusFromForecourt>(BasicTransitionType.Done);
  16. sl.AddTransition<ReadVirsStatusFromForecourt, Idle>(BasicTransitionType.Timeout);
  17. sl.AddTransition<ReadVirsStatusFromForecourt, ReadFuelSaleTrx>(BasicTransitionType.Done);
  18. sl.AddTransition<ReadFuelSaleTrx, Idle>(BasicTransitionType.Timeout);
  19. sl.AddTransition<ReadFuelSaleTrx, SetConnectStatus>(BasicTransitionType.Done);
  20. sl.AddTransition<SetConnectStatus, ReadPumpStatusAfterConnect>(BasicTransitionType.Done);
  21. sl.AddTransition<ReadPumpStatusAfterConnect, Idle>(BasicTransitionType.Timeout);
  22. sl.AddTransition<ReadPumpStatusAfterConnect, Idle>(BasicTransitionType.Done);
  23. //Configuration reading sequence.
  24. sl.AddTransition<ReadProductTable, ReadDspConfiguration>(BasicTransitionType.Done);
  25. sl.AddTransition<ReadDspConfiguration, ReadTlgConfiguration>(BasicTransitionType.Done);
  26. sl.AddTransition<ReadTlgConfiguration, ConfigurationReadComplete>(BasicTransitionType.Done);
  27. sl.AddTransition<ConfigurationReadComplete, Idle>(BasicTransitionType.Done);
  28. sl.AddTransition<AnyState, Error>(BasicTransitionType.Error);
  29. sl.AddTransition<Error, Idle>(BasicTransitionType.Done);
  30. }
  31. }
  32. }