RemoteControllerFSM.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include "SpBase.h"
  3. #include "SpFSM.h"
  4. #include "RemoteControllerCnn.h"
  5. class CRemoteControllerFSM : public FSMImpl<CRemoteControllerFSM>
  6. {
  7. public:
  8. CRemoteControllerFSM(void);
  9. ~CRemoteControllerFSM(void);
  10. virtual ErrorCodeEnum OnInit();
  11. virtual ErrorCodeEnum OnExit();
  12. enum{s1, s2, s3, s4};
  13. enum
  14. {
  15. Event_CreateChannel = EVT_USER+1,
  16. Event_ReleaseChannel,
  17. Event_EnterMonitor,
  18. Event_EnterMaintain,
  19. Event_EnterTerminal,
  20. Event_ExitTerminal,
  21. };
  22. BEGIN_FSM_STATE(CRemoteControllerFSM)
  23. FSM_STATE_ENTRY(s1, "None",s1_on_entry,s1_on_exit,s1_on_event)
  24. FSM_STATE_ENTRY(s2, "Monitor",s2_on_entry,s2_on_exit,s2_on_event)
  25. FSM_STATE_ENTRY(s3, "Maintaining",s3_on_entry,s3_on_exit,s3_on_event)
  26. FSM_STATE_ENTRY(s4, "Terminal", s4_on_entry, s4_on_exit, s4_on_event)
  27. END_FSM_STATE()
  28. BEGIN_FSM_RULE(CRemoteControllerFSM,s1)
  29. FSM_RULE_ENTRY_ANY(s1, s2, Event_EnterMonitor)
  30. FSM_RULE_ENTRY_ANY(s2, s1, Event_ReleaseChannel)
  31. FSM_RULE_ENTRY_ANY(s2, s3, Event_EnterMaintain)
  32. FSM_RULE_ENTRY_ANY(s3, s1, Event_ReleaseChannel)
  33. FSM_RULE_ENTRY_ANY(s3, s4, Event_EnterTerminal)
  34. FSM_RULE_ENTRY_ANY(s4, s1, Event_ReleaseChannel)
  35. FSM_RULE_ENTRY_ANY(s4, s3, Event_ExitTerminal)
  36. END_FSM_RULE()
  37. void s1_on_entry();
  38. void s1_on_exit();
  39. unsigned int s1_on_event(FSMEvent* event);
  40. void s2_on_entry();
  41. void s2_on_exit();
  42. unsigned int s2_on_event(FSMEvent* event);
  43. void s3_on_entry();
  44. void s3_on_exit();
  45. unsigned int s3_on_event(FSMEvent* event);
  46. void s4_on_entry();
  47. void s4_on_exit();
  48. unsigned int s4_on_event(FSMEvent* event);
  49. private:
  50. ErrorCodeEnum SecureClientConnect();
  51. ErrorCodeEnum SecureClientRelease();
  52. CRemoteControllerCnn *m_pConnection;
  53. };