DeviceControlFSM.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #ifndef _DEVICE_CONTROL_FSM_H
  2. #define _DEVICE_CONTROL_FSM_H
  3. #pragma once
  4. #include "stdafx.h"
  5. #include "SpFSM.h"
  6. #include "DeviceControl_def_g.h"
  7. #include "DeviceControl_server_g.h"
  8. #include "DeviceControlClass.h"
  9. #include "DevFSMCommBase.hpp"
  10. #include "Interface.h"
  11. using namespace DeviceControl;
  12. enum EvtType
  13. {
  14. USER_EVT_TEST = EVT_USER+1,
  15. USER_EVT_QUIT,
  16. USER_EVT_USB,
  17. USER_EVT_USB_FINISHED,
  18. USER_EVT_GET_UKEYID,
  19. USER_EVT_GET_UKEYID_FINISHED,
  20. USER_EVT_INIT_TOKEN,
  21. USER_EVT_INIT_TOKEN_FINISHED,
  22. USER_EVT_QUERY_USB,
  23. USER_EVT_QUERY_USB_FINISHED,
  24. USER_EVT_WORKING_OP,
  25. };
  26. class CDeviceControlFSM : public CCommDevFSM<CDeviceControlFSM, DeviceControlClass>
  27. {
  28. public:
  29. enum {s0,s1,s2,s3,s4};
  30. BEGIN_FSM_STATE(CDeviceControlFSM)
  31. FSM_STATE_ENTRY(s0,"Idle",s0_on_entry,s0_on_exit,s0_on_event)
  32. FSM_STATE_ENTRY(s1,"USB",s1_on_entry,s1_on_exit,s1_on_event)
  33. FSM_STATE_ENTRY(s2,"Failed",s2_on_entry,s2_on_exit,s2_on_event)
  34. FSM_STATE_ENTRY(s3,"GetUkeyID",s3_on_entry,s3_on_exit,s3_on_event)
  35. FSM_STATE_ENTRY(s4,"InitToken",s4_on_entry,s4_on_exit,s4_on_event)
  36. END_FSM_STATE()
  37. BEGIN_FSM_RULE(CDeviceControlFSM, s0)
  38. FSM_RULE_ENTRY(s0, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
  39. FSM_RULE_ENTRY(s0, s1, USER_EVT_USB, 0)
  40. FSM_RULE_ENTRY(s0, s1, USER_EVT_QUERY_USB, 0)
  41. FSM_RULE_ENTRY(s0, s3, USER_EVT_GET_UKEYID, 0)
  42. FSM_RULE_ENTRY(s0, s4, USER_EVT_INIT_TOKEN, 0)
  43. FSM_RULE_ENTRY(s1, s0, USER_EVT_USB_FINISHED, 0)
  44. FSM_RULE_ENTRY(s1, s2, USER_EVT_USB_FINISHED, 1)
  45. FSM_RULE_ENTRY(s1, s0, USER_EVT_QUERY_USB_FINISHED, 0)
  46. FSM_RULE_ENTRY(s1, s2, USER_EVT_QUERY_USB_FINISHED, 1)
  47. FSM_RULE_ENTRY(s3, s0, USER_EVT_GET_UKEYID_FINISHED, 0)
  48. FSM_RULE_ENTRY(s3, s0, USER_EVT_GET_UKEYID_FINISHED, 1)
  49. FSM_RULE_ENTRY(s4, s0, USER_EVT_INIT_TOKEN_FINISHED, 0)
  50. FSM_RULE_ENTRY(s4, s0, USER_EVT_INIT_TOKEN_FINISHED, 1)
  51. END_FSM_RULE()
  52. CDeviceControlFSM():m_testResult(Error_Succeed){};
  53. virtual ~CDeviceControlFSM() {};
  54. virtual ErrorCodeEnum OnInit();
  55. virtual ErrorCodeEnum OnExit();
  56. virtual void s0_on_entry() {}
  57. virtual void s0_on_exit() {}
  58. virtual unsigned int s0_on_event(FSMEvent* e);
  59. virtual void s1_on_entry() {}
  60. virtual void s1_on_exit() {}
  61. virtual unsigned int s1_on_event(FSMEvent* e);
  62. virtual void s2_on_entry() {}
  63. virtual void s2_on_exit() {}
  64. virtual unsigned int s2_on_event(FSMEvent* e) { return 0; }
  65. virtual void s3_on_entry() {}
  66. virtual void s3_on_exit() {}
  67. virtual unsigned int s3_on_event(FSMEvent* e);
  68. virtual void s4_on_entry() {}
  69. virtual void s4_on_exit() {}
  70. virtual unsigned int s4_on_event(FSMEvent* e);
  71. void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
  72. {
  73. pTransactionContext->SendAnswer(Error_Succeed);
  74. }
  75. ErrorCodeEnum RestartSogouServices();
  76. private:
  77. ErrorCodeEnum m_testResult;
  78. CSimpleStringA m_csMachineType;
  79. };
  80. #endif //_DEVICE_CONTROL_FSM_H