00001
00012 #ifndef _SM_TASK_H_
00013 #define _SM_TASK_H_
00014
00024 #include "sm.h"
00025 #include "scan.h"
00026 #include "ke_task.h"
00027
00029 #define SM_IDX_MAX 1
00030
00032 enum sm_state_tag
00033 {
00035 SM_IDLE,
00037 SM_SCANNING,
00039 SM_JOINING,
00041 SM_STA_ADDING,
00043 SM_BSS_PARAM_SETTING,
00045 SM_AUTHENTICATING,
00047 SM_EXTERNAL_AUTHENTICATING,
00049 SM_ASSOCIATING,
00051 SM_ACTIVATING,
00053 SM_DISCONNECTING,
00055 SM_STATE_MAX
00056 };
00057
00059 enum sm_msg_tag
00060 {
00062 SM_CONNECT_REQ = KE_FIRST_MSG(TASK_SM),
00064 SM_CONNECT_CFM,
00066 SM_CONNECT_IND,
00068 SM_DISCONNECT_REQ,
00070 SM_DISCONNECT_CFM,
00072 SM_DISCONNECT_IND,
00074 SM_EXTERNAL_AUTH_REQUIRED_IND,
00076 SM_EXTERNAL_AUTH_REQUIRED_RSP,
00077
00078
00080 SM_RSP_TIMEOUT_IND,
00081 };
00082
00084 struct sm_connect_req
00085 {
00087 struct mac_ssid ssid;
00089 struct mac_addr bssid;
00091 struct mac_chan_def chan;
00093 uint32_t flags;
00095 uint16_t ctrl_port_ethertype;
00097 uint16_t ie_len;
00099 uint16_t listen_interval;
00101 bool dont_wait_bcmc;
00103 uint8_t auth_type;
00105 uint8_t uapsd_queues;
00107 uint8_t vif_idx;
00110 uint32_t ie_buf[64];
00111 };
00112
00114 struct sm_connect_cfm
00115 {
00119 uint8_t status;
00120 };
00121
00124 #define SM_ASSOC_IE_LEN 800
00125
00127 struct sm_connect_ind
00128 {
00130 uint16_t status_code;
00132 struct mac_addr bssid;
00134 bool roamed;
00136 uint8_t vif_idx;
00138 uint8_t ap_idx;
00140 uint8_t ch_idx;
00142 bool qos;
00144 uint8_t acm;
00146 uint16_t assoc_req_ie_len;
00148 uint16_t assoc_rsp_ie_len;
00150 uint32_t assoc_ie_buf[SM_ASSOC_IE_LEN/4];
00152 uint16_t aid;
00154 struct mac_chan_op chan;
00156 uint32_t ac_param[AC_MAX];
00157 };
00158
00160 struct sm_disconnect_req
00161 {
00163 uint16_t reason_code;
00165 uint8_t vif_idx;
00166 };
00167
00169 struct sm_disconnect_ind
00170 {
00172 uint16_t reason_code;
00174 uint8_t vif_idx;
00176 bool ft_over_ds;
00177 };
00178
00180 struct sm_external_auth_required_ind
00181 {
00183 uint8_t vif_idx;
00185 struct mac_ssid ssid;
00187 struct mac_addr bssid;
00189 uint32_t akm;
00190 };
00191
00193 struct sm_external_auth_required_rsp
00194 {
00196 uint8_t vif_idx;
00198 uint16_t status;
00199 };
00200
00202 extern const struct ke_state_handler sm_default_handler;
00203
00205 extern ke_state_t sm_state[SM_IDX_MAX];
00206
00208
00209 #endif // _SM_TASK_H_