Changeset 9e5a51c in mainline for uspace/lib/net/include/ieee80211.h
- Timestamp:
- 2015-03-08T22:20:34Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 864762a
- Parents:
- 4cb0148
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/net/include/ieee80211.h
r4cb0148 r9e5a51c 52 52 #define IEEE80211_CHANNEL_GAP 5 53 53 54 #define IEEE80211_FRAME_CTRL_FRAME_TYPE 0x000C55 #define IEEE80211_FRAME_CTRL_DATA_FRAME 0x000856 57 54 struct ieee80211_dev; 58 55 … … 65 62 } ieee80211_operating_mode_t; 66 63 64 /** IEEE 802.11 frame types. */ 65 typedef enum { 66 IEEE80211_MGMT_FRAME = 0x0, 67 IEEE80211_CTRL_FRAME = 0x4, 68 IEEE80211_DATA_FRAME = 0x8, 69 IEEE80211_EXT_FRAME = 0xC 70 } ieee80211_frame_type_t; 71 72 /** IEEE 802.11 frame subtypes. */ 73 typedef enum { 74 IEEE80211_MGMT_ASSOC_REQ_FRAME = 0x00, 75 IEEE80211_MGMT_ASSOC_RESP_FRAME = 0x10, 76 IEEE80211_MGMT_REASSOC_REQ_FRAME = 0x20, 77 IEEE80211_MGMT_REASSOC_RESP_FRAME = 0x30, 78 IEEE80211_MGMT_PROBE_REQ_FRAME = 0x40, 79 IEEE80211_MGMT_PROBE_RESP_FRAME = 0x50, 80 IEEE80211_MGMT_BEACON_FRAME = 0x80, 81 IEEE80211_MGMT_DIASSOC_FRAME = 0xA0, 82 IEEE80211_MGMT_AUTH_FRAME = 0xB0, 83 IEEE80211_MGMT_DEAUTH_FRAME = 0xC0, 84 } ieee80211_frame_subtype_t; 85 86 /** IEEE 802.11 information element types. */ 87 typedef enum { 88 IEEE80211_SSID_IE = 0, /**< Target SSID. */ 89 IEEE80211_RATES_IE = 1, /**< Supported data rates. */ 90 IEEE80211_CHANNEL_IE = 3, /**< Current channel number. */ 91 IEEE80211_EXT_RATES_IE = 50 /**< Extended data rates. */ 92 } ieee80211_ie_type_t; 93 67 94 /** IEEE 802.11 functions. */ 68 95 typedef struct { … … 70 97 int (*scan)(struct ieee80211_dev *); 71 98 int (*tx_handler)(struct ieee80211_dev *, void *, size_t); 99 int (*set_freq)(struct ieee80211_dev *, uint16_t); 72 100 } ieee80211_ops_t; 73 101 … … 89 117 ieee80211_operating_mode_t current_op_mode; 90 118 119 /** BSSIDs we listen to. */ 120 uint8_t bssid_mask[ETH_ADDR]; 121 91 122 /* TODO: Probably to be removed later - nic.open function is now 92 123 * executed multiple times, have to find out reason and fix it. … … 96 127 } ieee80211_dev_t; 97 128 98 /** IEEE 802.11 header structure. */ 129 /** IEEE 802.11 management header structure. */ 130 typedef struct { 131 uint16_t frame_ctrl; /**< Little Endian value! */ 132 uint16_t duration_id; /**< Little Endian value! */ 133 uint8_t dest_addr[ETH_ADDR]; 134 uint8_t src_addr[ETH_ADDR]; 135 uint8_t bssid[ETH_ADDR]; 136 uint16_t seq_ctrl; /**< Little Endian value! */ 137 } __attribute__((packed)) __attribute__ ((aligned(2))) ieee80211_mgmt_header_t; 138 139 /** IEEE 802.11 data header structure. */ 99 140 typedef struct { 100 141 uint16_t frame_ctrl; /**< Little Endian value! */ … … 105 146 uint16_t seq_ctrl; /**< Little Endian value! */ 106 147 uint8_t address4[ETH_ADDR]; 107 } __attribute__((packed)) __attribute__ ((aligned(2))) ieee80211_header_t; 148 uint16_t qos_ctrl; /**< Little Endian value! */ 149 } __attribute__((packed)) __attribute__ ((aligned(2))) ieee80211_data_header_t; 108 150 109 extern bool ieee80211_is_data_frame(ieee80211_header_t *header); 151 /** IEEE 802.11 information element header. */ 152 typedef struct { 153 uint8_t element_id; 154 uint8_t length; 155 } __attribute__((packed)) __attribute__ ((aligned(2))) ieee80211_ie_header_t; 156 157 /** IEEE 802.11 authentication frame body. */ 158 typedef struct { 159 uint16_t auth_alg; /**< Little Endian value! */ 160 uint16_t auth_trans_no; /**< Little Endian value! */ 161 uint16_t status; /**< Little Endian value! */ 162 } __attribute__((packed)) __attribute__ ((aligned(2))) ieee80211_auth_body_t; 163 164 typedef struct { 165 uint8_t bssid[ETH_ADDR]; 166 uint16_t auth_alg; 167 } __attribute__((packed)) __attribute__ ((aligned(2))) ieee80211_auth_data_t; 168 110 169 extern int ieee80211_device_init(ieee80211_dev_t *ieee80211_dev, 111 170 void *driver_data, ddf_dev_t *ddf_dev); 112 171 extern int ieee80211_init(ieee80211_dev_t *ieee80211_dev, 113 172 ieee80211_ops_t *ieee80211_ops); 173 extern int ieee80211_probe_request(ieee80211_dev_t *ieee80211_dev); 174 extern int ieee80211_probe_auth(ieee80211_dev_t *ieee80211_dev); 114 175 115 176 #endif /* LIBNET_IEEE80211_H */
Note:
See TracChangeset
for help on using the changeset viewer.