00001
00157 #include <stdint.h>
00158 #include <stdlib.h>
00159 #include "spb.h"
00160
00161 #ifndef WL_API_H
00162 #define WL_API_H
00163
00164 #define WL_API_RELEASE_NAME "2.0.8"
00165
00167 #define WL_HEADER_SIZE 14
00168
00169 #define WL_MAX_PKT_LEN 1600
00170
00171 #define WL_SSID_MAX_LENGTH 32
00172
00173 #define WL_MAC_ADDR_LENGTH 6
00174
00177 typedef enum {
00178 WL_FAILURE = -1,
00179 WL_SUCCESS = 1,
00180 WL_OOM,
00181 WL_INVALID_LENGTH,
00182 WL_NOT_SUPPORTED,
00183 WL_ABSORBED,
00184 WL_RESOURCES,
00185 WL_BUSY,
00186 WL_RETRY,
00189 WL_INVALID_ARGS,
00190 WL_AVAIL,
00191 WL_CARD_FAILURE,
00192 WL_FIRMWARE_LENGTH,
00193 WL_FIRMWARE_INVALID,
00195 } wl_err_t;
00196
00199 enum wl_event_id_t {
00200 WL_EVENT_MEDIA_CONNECTED = 0,
00201 WL_EVENT_CONN_FAILURE,
00202 WL_EVENT_MEDIA_DISCONNECTED,
00203 WL_EVENT_CONN_LOST,
00204 WL_EVENT_SCAN_COMPLETE,
00205 MAX_WL_EVENT
00206 };
00207
00210 enum wl_auth_mode {
00211 AUTH_MODE_INVALID,
00212 AUTH_MODE_AUTO,
00213 AUTH_MODE_OPEN_SYSTEM,
00214 AUTH_MODE_SHARED_KEY,
00215 AUTH_MODE_WPA,
00216 AUTH_MODE_WPA2,
00217 AUTH_MODE_WPA_PSK,
00218 AUTH_MODE_WPA2_PSK
00219 };
00220
00223 enum wl_enc_type {
00224 ENC_TYPE_WEP = 5,
00225 ENC_TYPE_TKIP = 2,
00226 ENC_TYPE_CCMP = 4,
00227
00228 ENC_TYPE_NONE = 7,
00229 ENC_TYPE_AUTO = 8
00230 };
00231
00232
00236 struct wl_event_t {
00237 enum wl_event_id_t id;
00239 };
00240
00242 #define ALIGN __attribute__ ((aligned (4)))
00243
00252 struct wl_ssid_t
00253 {
00254 char ssid[WL_SSID_MAX_LENGTH];
00255 uint8_t len;
00257 } ALIGN;
00258
00265 struct wl_mac_addr_t
00266 {
00267 uint8_t octet[WL_MAC_ADDR_LENGTH];
00270 };
00271
00277 struct wl_network_t
00278 {
00279 struct wl_ssid_t ssid;
00280 struct wl_mac_addr_t bssid;
00281 int32_t rssi;
00282 uint8_t enc_type;
00283 } ALIGN;
00284
00388 typedef void (*wl_event_cb_t) (struct wl_event_t event, void* ctx);
00389
00390
00404 typedef void (*wl_rx_isr_t) (void* ctx);
00405
00406
00425 typedef void (wl_fw_download_cb_t)(void *ctx, uint32_t addr, uint8_t** buf,
00426 uint32_t* len);
00427
00428
00436 typedef void (wl_init_complete_cb_t)(void* ctx);
00437
00438
00453 wl_err_t wl_register_event_cb(wl_event_cb_t cb, void* ctx);
00454
00479 wl_err_t wl_init(void* ctx,
00480 wl_fw_download_cb_t fw_download_cb,
00481 wl_init_complete_cb_t init_complete_cb);
00482
00494 void wl_poll(uint32_t tick);
00495
00707 wl_err_t wl_scan(void);
00708
00734 wl_err_t wl_get_network_list(struct wl_network_t** network_list, uint8_t* network_cnt);
00735
00761 wl_err_t wl_connect(char* ssid, size_t ssid_len);
00762
00786 wl_err_t wl_connect_bssid(struct wl_mac_addr_t bssid);
00787
00796 wl_err_t wl_disconnect(void);
00797
00819 wl_err_t wl_set_auth_mode(enum wl_auth_mode mode);
00820
00842 wl_err_t wl_add_wep_key(uint8_t key_idx,
00843 size_t key_len,
00844 const void *key,
00845 struct wl_mac_addr_t *bssid);
00846
00857 wl_err_t wl_set_default_wep_key(uint8_t key_idx);
00858
00870 wl_err_t wl_delete_wep_key(uint8_t key_idx, struct wl_mac_addr_t *bssid);
00871
00900 wl_err_t wl_set_passphrase(const struct wl_network_t *net,
00901 const char *passphrase,
00902 const size_t len,
00903 const enum wl_enc_type enc_type,
00904 const enum wl_auth_mode auth_mode);
00905
00917 wl_err_t wl_clear_passphrase(struct wl_network_t *net);
00918
00930 wl_err_t wl_enable_ps(void);
00931
00936 wl_err_t wl_disable_ps(void);
00937
00958 wl_err_t wl_conf_ps(uint8_t use_ps_poll,
00959 uint32_t ps_traffic_timeout,
00960 uint32_t ps_delay);
00961
00962
00974 wl_err_t wl_get_mac_addr(uint8_t* buf);
00975
00984 struct wl_network_t* wl_get_current_network(void);
01179 wl_err_t wl_process_rx(char *pkt, size_t pkt_len, char **stripped_pkt,
01180 size_t *stripped_pkt_len, uint16_t *vlanid_prio);
01181
01217 wl_err_t wl_process_tx(char *eth_hdr, size_t eth_hdr_len, size_t pkt_len,
01218 char *hdr, uint16_t vlanid_prio);
01219
01220
01221
01237 wl_err_t wl_register_rx_isr(wl_rx_isr_t isr, void* ctx);
01238
01239
01254 wl_err_t wl_rx(uint8_t* buf, uint16_t* len);
01255
01269 wl_err_t wl_tx(const uint8_t* buf, uint16_t len);
01270
01272
01273
01274
01275 #endif