fsm_defines.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /**
  2. * \file fsm_defines.h
  3. *
  4. * This file defines state and events related to FSM.
  5. */
  6. /*
  7. * Copyright (C) 2013. Mindtree Ltd.
  8. * All rights reserved.
  9. */
  10. #ifndef _H_FSM_DEFINES_
  11. #define _H_FSM_DEFINES_
  12. /* --------------------------------------------- Header File Inclusion */
  13. #include "MS_common.h"
  14. /* --------------------------------------------- Global Definitions */
  15. #define FSM_MAX_MODULES 2
  16. /* --------------------------------------------- Structures/Data Types */
  17. typedef UINT32 STATE_T;
  18. typedef UCHAR EVENT_T;
  19. typedef API_RESULT (*SE_HNDLR_T)(void *);
  20. typedef API_RESULT RETVAL_T;
  21. typedef struct
  22. {
  23. STATE_T set_bits;
  24. } FSM_STATE_MASK;
  25. typedef struct
  26. {
  27. RETVAL_T handler_retval;
  28. FSM_STATE_MASK next_state;
  29. } RETVAL_TABLE_T;
  30. /*
  31. * Event Handler Table.
  32. * Current State, handler(if any), num_of_retval, retval_table_start_index,
  33. * num_of_substates handles this event,
  34. * start_index_of_those_handler_in_this_same_table
  35. */
  36. typedef struct
  37. {
  38. STATE_T current_state;
  39. SE_HNDLR_T handler;
  40. } EVENT_HANDLER_TABLE_T;
  41. #define EVENT_HANDLER_TABLE EVENT_HANDLER_TABLE_T
  42. /* State-Event Table.
  43. * Event, Default Handler, num_of_retval, retval_table_start_index,
  44. * num_of_substates handles this event,
  45. * start_index_of_those_handler_in_this_same_table
  46. */
  47. typedef struct
  48. {
  49. EVENT_T event;
  50. UINT32 event_handler_table_end_index;
  51. UINT32 event_handler_table_start_index;
  52. } STATE_EVENT_TABLE_T;
  53. #define STATE_EVENT_TABLE STATE_EVENT_TABLE_T
  54. /* State identifier */
  55. typedef struct
  56. {
  57. STATE_T state;
  58. } STATE_TABLE_T;
  59. typedef void (*FSM_STATE_CHANGE_HANDLER)(void * param, STATE_T state) DECL_REENTRANT;
  60. typedef API_RESULT (*FSM_STATE_ACCESS_HANDLER)(void *param, STATE_T * state) DECL_REENTRANT;
  61. typedef UCHAR FSM_STATE_SIZE_T;
  62. typedef struct fsm_module_t
  63. {
  64. /* Function to Access State of Module */
  65. FSM_STATE_ACCESS_HANDLER state_access_handler;
  66. /* State Change Function Registered with FSM */
  67. FSM_STATE_CHANGE_HANDLER state_change_handler;
  68. /* Event Handler Table */
  69. DECL_CONST EVENT_HANDLER_TABLE * event_table;
  70. /* State Event Table */
  71. DECL_CONST STATE_EVENT_TABLE * state_event_table;
  72. /* State Event Table Size */
  73. FSM_STATE_SIZE_T state_event_table_size;
  74. }FSM_MODULE_TABLE_T;
  75. #endif /* _H_FSM_DEFINES_ */