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 "unknown"
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_INVALID,
00194 } wl_err_t;
00195
00198 enum wl_event_id_t {
00199 WL_EVENT_MEDIA_CONNECTED = 0,
00200 WL_EVENT_CONN_FAILURE,
00201 WL_EVENT_MEDIA_DISCONNECTED,
00202 WL_EVENT_CONN_LOST,
00203 WL_EVENT_SCAN_COMPLETE,
00204 MAX_WL_EVENT
00205 };
00206
00209 enum wl_auth_mode {
00210 AUTH_MODE_INVALID,
00211 AUTH_MODE_AUTO,
00212 AUTH_MODE_OPEN_SYSTEM,
00213 AUTH_MODE_SHARED_KEY,
00214 AUTH_MODE_WPA,
00215 AUTH_MODE_WPA2,
00216 AUTH_MODE_WPA_PSK,
00217 AUTH_MODE_WPA2_PSK
00218 };
00219
00222 enum wl_enc_type {
00223 ENC_TYPE_WEP = 5,
00224 ENC_TYPE_TKIP = 2,
00225 ENC_TYPE_CCMP = 4,
00226
00227 ENC_TYPE_NONE = 7,
00228 ENC_TYPE_AUTO = 8
00229 };
00230
00231
00235 struct wl_event_t {
00236 enum wl_event_id_t id;
00238 };
00239
00241 #define ALIGN __attribute__ ((aligned (4)))
00242
00251 struct wl_ssid_t
00252 {
00253 char ssid[WL_SSID_MAX_LENGTH];
00254 uint8_t len;
00256 } ALIGN;
00257
00264 struct wl_mac_addr_t
00265 {
00266 uint8_t octet[WL_MAC_ADDR_LENGTH];
00269 };
00270
00276 struct wl_network_t
00277 {
00278 struct wl_ssid_t ssid;
00279 struct wl_mac_addr_t bssid;
00280 int32_t rssi;
00281 uint8_t enc_type;
00282 } ALIGN;
00283
00386 typedef void (*wl_event_cb_t) (struct wl_event_t event, void* ctx);
00387
00388
00402 typedef void (*wl_rx_isr_t) (void* ctx);
00403
00404
00431 typedef void (wl_fw_download_cb_t)(void *ctx, uint8_t** buf, uint32_t* len);
00432
00433
00441 typedef void (wl_init_complete_cb_t)(void* ctx);
00442
00443
00458 wl_err_t wl_register_event_cb(wl_event_cb_t cb, void* ctx);
00459
00482 wl_err_t wl_init(void* ctx,
00483 wl_fw_download_cb_t fw_download_cb,
00484 wl_init_complete_cb_t init_complete_cb);
00485
00497 void wl_poll(uint32_t tick);
00498
00710 wl_err_t wl_scan(void);
00711
00737 wl_err_t wl_get_network_list(struct wl_network_t** network_list, uint8_t* network_cnt);
00738
00764 wl_err_t wl_connect(char* ssid, size_t ssid_len);
00765
00789 wl_err_t wl_connect_bssid(struct wl_mac_addr_t bssid);
00790
00805 wl_err_t wl_disconnect(void);
00806
00828 wl_err_t wl_set_auth_mode(enum wl_auth_mode mode);
00829
00851 wl_err_t wl_add_wep_key(uint8_t key_idx,
00852 size_t key_len,
00853 const void *key,
00854 struct wl_mac_addr_t *bssid);
00855
00866 wl_err_t wl_set_default_wep_key(uint8_t key_idx);
00867
00879 wl_err_t wl_delete_wep_key(uint8_t key_idx, struct wl_mac_addr_t *bssid);
00880
00909 wl_err_t wl_set_passphrase(const struct wl_network_t *net,
00910 const char *passphrase,
00911 const size_t len,
00912 const enum wl_enc_type enc_type,
00913 const enum wl_auth_mode auth_mode);
00914
00926 wl_err_t wl_clear_passphrase(struct wl_network_t *net);
00927
00939 wl_err_t wl_enable_ps(void);
00940
00945 wl_err_t wl_disable_ps(void);
00946
00980 wl_err_t wl_conf_ps(uint8_t use_ps_poll,
00981 uint32_t ps_traffic_timeout,
00982 uint32_t ps_delay,
00983 uint8_t rx_all_dtim,
00984 uint16_t listen_interval);
00985
00986
00998 wl_err_t wl_get_mac_addr(uint8_t* buf);
00999
01008 struct wl_network_t* wl_get_current_network(void);
01203 wl_err_t wl_process_rx(char *pkt, size_t pkt_len, char **stripped_pkt,
01204 size_t *stripped_pkt_len, uint16_t *vlanid_prio);
01205
01241 wl_err_t wl_process_tx(char *eth_hdr, size_t eth_hdr_len, size_t pkt_len,
01242 char *hdr, uint16_t vlanid_prio);
01243
01244
01245
01261 wl_err_t wl_register_rx_isr(wl_rx_isr_t isr, void* ctx);
01262
01263
01278 wl_err_t wl_rx(uint8_t* buf, uint16_t* len);
01279
01293 wl_err_t wl_tx(const uint8_t* buf, uint16_t len);
01294
01296
01297
01298
01299 #endif