00001
00013 #ifndef TDLS_TASK_H_
00014 #define TDLS_TASK_H_
00015
00016 #if (NX_TDLS)
00017
00026
00027
00028
00029
00030 #include "co_int.h"
00031 #include "co_bool.h"
00032
00033
00034 #include "ke_task.h"
00035
00036 #include "mac.h"
00037 #include "phy.h"
00038
00039 struct chan_ctxt_tag;
00040 struct vif_info_tag;
00041
00042
00043
00044
00045
00047 #define TDLS_IDX_MAX 1
00048
00050 enum tdls_state_tag
00051 {
00053 TDLS_BASE_CHANNEL,
00055 TDLS_TRAFFIC_IND_TX,
00057 TDLS_TRAFFIC_IND_RX,
00059 TDLS_CHSW_REQ_TX,
00061 TDLS_CHSW_REQ_RX,
00063 TDLS_OFF_CHANNEL,
00065 TDLS_STATE_MAX
00066 };
00067
00069 enum tdls_msg_tag
00070 {
00072 TDLS_CHAN_SWITCH_REQ = KE_FIRST_MSG(TASK_TDLS),
00074 TDLS_CHAN_SWITCH_CFM,
00076 TDLS_CHAN_SWITCH_IND,
00078 TDLS_CHAN_SWITCH_BASE_IND,
00080 TDLS_CANCEL_CHAN_SWITCH_REQ,
00082 TDLS_CANCEL_CHAN_SWITCH_CFM,
00084 TDLS_PEER_PS_IND,
00086 TDLS_PEER_TRAFFIC_IND_REQ,
00088 TDLS_PEER_TRAFFIC_IND_CFM,
00090 TDLS_MAX
00091 };
00092
00094 struct tdls_chan_switch_req
00095 {
00097 uint8_t vif_index;
00099 uint8_t sta_idx;
00101 struct mac_addr peer_mac_addr;
00103 bool initiator;
00105 struct mac_chan_op chan;
00107 uint8_t op_class;
00108 };
00109
00111 struct tdls_cancel_chan_switch_req
00112 {
00114 uint8_t vif_index;
00116 uint8_t sta_idx;
00118 struct mac_addr peer_mac_addr;
00119 };
00120
00122 struct tdls_chan_switch_cfm
00123 {
00125 uint8_t status;
00126 };
00127
00129 struct tdls_cancel_chan_switch_cfm
00130 {
00132 uint8_t status;
00133 };
00134
00136 struct tdls_chan_switch_ind
00137 {
00139 uint8_t vif_index;
00141 uint8_t chan_ctxt_index;
00143 uint8_t status;
00144 };
00145
00147 struct tdls_chan_switch_base_ind
00148 {
00150 uint8_t vif_index;
00152 uint8_t chan_ctxt_index;
00153 };
00154
00156 struct tdls_peer_ps_ind
00157 {
00159 uint8_t vif_index;
00161 uint8_t sta_idx;
00163 struct mac_addr peer_mac_addr;
00165 bool ps_on;
00166 };
00167
00169 struct tdls_peer_traffic_ind_req
00170 {
00172 uint8_t vif_index;
00174 uint8_t sta_idx;
00176 struct mac_addr peer_mac_addr;
00178 uint8_t dialog_token;
00180 uint8_t last_tid;
00183 uint16_t last_sn;
00184 };
00185
00187 struct tdls_peer_traffic_ind_cfm
00188 {
00190 uint8_t status;
00191 };
00192
00193
00194
00195
00196
00197 extern const struct ke_state_handler tdls_default_handler;
00198 extern ke_state_t tdls_state[TDLS_IDX_MAX];
00199
00201 #endif //NX_TDLS
00202
00203 #endif