bow_fsm.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /*
  2. ** Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/mgmt/bow_fsm.h#1
  3. */
  4. /*! \file bow_fsm.h
  5. \brief Declaration of functions and finite state machine for BOW Module.
  6. Declaration of functions and finite state machine for BOW Module.
  7. */
  8. /*
  9. ** Log: bow_fsm.h
  10. *
  11. * 05 22 2011 terry.wu
  12. * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
  13. * Submit missing BoW header files.
  14. *
  15. * 03 27 2011 chinghwa.yu
  16. * [WCXRP00000065] Update BoW design and settings
  17. * Support multiple physical link.
  18. *
  19. * 02 16 2011 chinghwa.yu
  20. * [WCXRP00000065] Update BoW design and settings
  21. * Add bowNotifyAllLinkDisconnected interface and change channel grant procedure for bow starting..
  22. *
  23. * 02 15 2011 chinghwa.yu
  24. * [WCXRP00000065] Update BoW design and settings
  25. * Add channel previledge into _BOW_FSM_INFO_T.
  26. *
  27. * 09 16 2010 chinghwa.yu
  28. * NULL
  29. * update bowChangeMediaState.
  30. *
  31. * 08 24 2010 chinghwa.yu
  32. * NULL
  33. * Update BOW for the 1st time.
  34. */
  35. #ifndef _BOW_FSM_H
  36. #define _BOW_FSM_H
  37. /*******************************************************************************
  38. * C O M P I L E R F L A G S
  39. ********************************************************************************
  40. */
  41. /*******************************************************************************
  42. * E X T E R N A L R E F E R E N C E S
  43. ********************************************************************************
  44. */
  45. /*******************************************************************************
  46. * C O N S T A N T S
  47. ********************************************************************************
  48. */
  49. #define BOW_BG_SCAN_INTERVAL_MIN_SEC 2 /* 30 // exponential to 960 */
  50. #define BOW_BG_SCAN_INTERVAL_MAX_SEC 2 /* 960 // 16min */
  51. #define BOW_DELAY_TIME_OF_DISCONNECT_SEC 10
  52. #define BOW_BEACON_TIMEOUT_COUNT_STARTING 10
  53. #define BOW_BEACON_TIMEOUT_GUARD_TIME_SEC 1 /* Second */
  54. #define BOW_BEACON_MAX_TIMEOUT_TU 100
  55. #define BOW_BEACON_MIN_TIMEOUT_TU 5
  56. #define BOW_BEACON_MAX_TIMEOUT_VALID TRUE
  57. #define BOW_BEACON_MIN_TIMEOUT_VALID TRUE
  58. #define BOW_BMC_MAX_TIMEOUT_TU 100
  59. #define BOW_BMC_MIN_TIMEOUT_TU 5
  60. #define BOW_BMC_MAX_TIMEOUT_VALID TRUE
  61. #define BOW_BMC_MIN_TIMEOUT_VALID TRUE
  62. #define BOW_JOIN_CH_GRANT_THRESHOLD 10
  63. #define BOW_JOIN_CH_REQUEST_INTERVAL 2000
  64. /*******************************************************************************
  65. * D A T A T Y P E S
  66. ********************************************************************************
  67. */
  68. typedef enum _ENUM_BOW_STATE_T {
  69. BOW_STATE_IDLE = 0,
  70. BOW_STATE_SEARCH,
  71. BOW_STATE_SCAN,
  72. BOW_STATE_ONLINE_SCAN,
  73. BOW_STATE_LOOKING_FOR,
  74. BOW_STATE_WAIT_FOR_NEXT_SCAN,
  75. BOW_STATE_REQ_CHANNEL_JOIN,
  76. BOW_STATE_REQ_CHANNEL_ALONE,
  77. BOW_STATE_REQ_CHANNEL_MERGE,
  78. BOW_STATE_JOIN,
  79. BOW_STATE_IBSS_ALONE,
  80. BOW_STATE_IBSS_MERGE,
  81. BOW_STATE_NORMAL_TR,
  82. BOW_STATE_NUM
  83. } ENUM_BOW_STATE_T;
  84. typedef struct _BOW_FSM_INFO_T {
  85. ENUM_BOW_STATE_T ePreviousState;
  86. ENUM_BOW_STATE_T eCurrentState;
  87. BOOLEAN fgTryScan;
  88. /* Channel Privilege */
  89. BOOLEAN fgIsInfraChannelFinished;
  90. BOOLEAN fgIsChannelRequested;
  91. BOOLEAN fgIsChannelGranted;
  92. BOOLEAN fgIsScanPending;
  93. UINT_32 u4ChGrantedInterval;
  94. UINT_8 ucPrimaryChannel;
  95. ENUM_BAND_T eBand;
  96. UINT_16 u2BeaconInterval;
  97. ENUM_BOW_STATE_T eReturnState; /* Return state after current activity finished or abort. */
  98. ENUM_BOW_STATE_T eForwardState; /* Step to next state if ACTION frame is TX successfully. */
  99. P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service Discovery */
  100. P_STA_RECORD_T prTargetStaRec;
  101. P_BSS_DESC_T prTargetBssDesc; /* For destination */
  102. UINT_8 aucPeerAddress[6];
  103. UINT_8 ucRole;
  104. BOOLEAN fgSupportQoS;
  105. BOOLEAN fgIsRsponseProbe; /* Indicate if BOW can response probe request frame. */
  106. /* Sequence number of requested message. */
  107. UINT_8 ucSeqNumOfChReq;
  108. UINT_8 ucSeqNumOfReqMsg;
  109. UINT_8 ucSeqNumOfScnMsg;
  110. UINT_8 ucSeqNumOfScanReq;
  111. UINT_8 ucSeqNumOfCancelMsg;
  112. UINT_8 ucDialogToken;
  113. /* Timer */
  114. TIMER_T rStartingBeaconTimer; /* For device discovery time of each discovery request from user. */
  115. TIMER_T rStartingDiscoveryTimer;
  116. TIMER_T rOperationListenTimer; /* For Find phase under operational state. */
  117. TIMER_T rFSMTimer; /* A timer used for Action frame timeout usage. */
  118. TIMER_T rIndicationOfDisconnectTimer;
  119. TIMER_T rChGrantedTimer;
  120. UINT_8 ucAvailableAuthTypes; /* Used for AUTH_MODE_AUTO_SWITCH */
  121. } BOW_FSM_INFO_T, *P_BOW_FSM_INFO_T;
  122. /*******************************************************************************
  123. * P U B L I C D A T A
  124. ********************************************************************************
  125. */
  126. /*******************************************************************************
  127. * P R I V A T E D A T A
  128. ********************************************************************************
  129. */
  130. /*******************************************************************************
  131. * M A C R O S
  132. ********************************************************************************
  133. */
  134. #define bowChangeMediaState(_prAdapter, _eNewMediaState) \
  135. (_prAdapter->rWifiVar.arBssInfo[NETWORK_TYPE_BOW_INDEX].eConnectionState = (_eNewMediaState))
  136. /*******************************************************************************
  137. * F U N C T I O N D E C L A R A T I O N S
  138. ********************************************************************************
  139. */
  140. /*******************************************************************************
  141. * F U N C T I O N S
  142. ********************************************************************************
  143. */
  144. #endif