00001
00110 #include <stdint.h>
00111 #include <stdlib.h>
00112 #include "spb.h"
00113
00114 #ifndef WL_API_H
00115 #define WL_API_H
00116
00118 #define WL_HEADER_SIZE 14
00119
00120 #define WL_MAX_PKT_LEN 1600
00121
00122 #define WL_SSID_MAX_LENGTH 32
00123
00124 #define WL_MAC_ADDR_LENGTH 6
00125
00128 typedef enum {
00129 WL_FAILURE = -1,
00130 WL_SUCCESS = 1,
00131 WL_OOM,
00132 WL_INVALID_LENGTH,
00133 WL_NOT_SUPPORTED,
00134 WL_ABSORBED,
00135 WL_RESOURCES,
00136 WL_BUSY,
00137 WL_RETRY,
00140 WL_INVALID_ARGS,
00141 WL_AVAIL,
00142 WL_CARD_FAILURE,
00143 WL_FIRMWARE_LENGTH,
00144 WL_FIRMWARE_INVALID,
00146 } wl_err_t;
00147
00150 enum wl_event_id_t {
00151 WL_EVENT_MEDIA_CONNECTED = 0,
00152 WL_EVENT_CONN_FAILURE,
00153 WL_EVENT_MEDIA_DISCONNECTED,
00154 WL_EVENT_CONN_LOST,
00155 WL_EVENT_SCAN_COMPLETE,
00156 MAX_WL_EVENT
00157 };
00158
00161 enum wl_rx_event_id_t {
00162 WL_RX_EVENT_DATA,
00163 WL_RX_EVENT_WAKEUP,
00164 MAX_WL_RX_EVENT
00165 };
00166
00169 enum wl_auth_mode {
00170 AUTH_MODE_INVALID,
00171 AUTH_MODE_AUTO,
00172 AUTH_MODE_OPEN_SYSTEM,
00173 AUTH_MODE_SHARED_KEY,
00174 AUTH_MODE_WPA,
00175 AUTH_MODE_WPA2,
00176 AUTH_MODE_WPA_PSK,
00177 AUTH_MODE_WPA2_PSK
00178 };
00179
00182 enum wl_enc_type {
00183 ENC_TYPE_WEP = 5,
00184 ENC_TYPE_TKIP = 2,
00185 ENC_TYPE_CCMP = 4,
00186
00187 ENC_TYPE_NONE = 7,
00188 ENC_TYPE_AUTO = 8
00189 };
00190
00191
00196 struct wl_event_t {
00197 enum wl_event_id_t id;
00198 };
00199
00204 struct wl_rx_event_t {
00205 enum wl_rx_event_id_t id;
00206 };
00207
00209 #define ALIGN __attribute__ ((aligned (4)))
00210
00223 struct wl_ssid_t
00224 {
00225 char ssid[WL_SSID_MAX_LENGTH];
00226 uint8_t len;
00227 } ALIGN;
00228
00239 struct wl_mac_addr_t
00240 {
00241 uint8_t octet[WL_MAC_ADDR_LENGTH];
00242 };
00243
00253 struct wl_network_t
00254 {
00255 struct wl_ssid_t ssid;
00256 struct wl_mac_addr_t bssid;
00257 int32_t rssi;
00258 uint8_t enc_type;
00259 } ALIGN;
00260
00364 typedef void (*wl_event_cb_t) (struct wl_event_t event, void* ctx);
00365
00366
00384 typedef void (*wl_rx_event_cb_t) (struct wl_rx_event_t event, void* ctx);
00385
00386
00405 typedef void (wl_fw_download_cb_t)(void *ctx, uint32_t addr, uint8_t** buf,
00406 uint32_t* len);
00407
00408
00416 typedef void (wl_init_complete_cb_t)(void* ctx);
00417
00418
00433 wl_err_t wl_register_event_cb(wl_event_cb_t cb, void* ctx);
00434
00459 wl_err_t wl_init(void* ctx,
00460 wl_fw_download_cb_t fw_download_cb,
00461 wl_init_complete_cb_t init_complete_cb);
00462
00476 void wl_poll(uint32_t tick);
00477
00689 wl_err_t wl_scan(void);
00690
00716 wl_err_t wl_get_network_list(struct wl_network_t** network_list, uint8_t* network_cnt);
00717
00743 wl_err_t wl_connect(char* ssid, size_t ssid_len);
00744
00768 wl_err_t wl_connect_bssid(struct wl_mac_addr_t bssid);
00769
00778 wl_err_t wl_disconnect(void);
00779
00801 wl_err_t wl_set_auth_mode(enum wl_auth_mode mode);
00802
00824 wl_err_t wl_add_wep_key(uint8_t key_idx,
00825 size_t key_len,
00826 const void *key,
00827 struct wl_mac_addr_t *bssid);
00828
00839 wl_err_t wl_set_default_wep_key(uint8_t key_idx);
00840
00852 wl_err_t wl_delete_wep_key(uint8_t key_idx, struct wl_mac_addr_t *bssid);
00853
00882 wl_err_t wl_set_passphrase(const struct wl_network_t *net,
00883 const char *passphrase,
00884 const size_t len,
00885 const enum wl_enc_type enc_type,
00886 const enum wl_auth_mode auth_mode);
00887
00899 wl_err_t wl_clear_passphrase(struct wl_network_t *net);
00900
00912 wl_err_t wl_enable_ps(void);
00913
00918 wl_err_t wl_disable_ps(void);
00919
00940 wl_err_t wl_conf_ps(uint8_t use_ps_poll,
00941 uint32_t ps_traffic_timeout,
00942 uint32_t ps_delay);
00943
00944
00956 wl_err_t wl_get_mac_addr(uint8_t* buf);
00957
00966 struct wl_network_t* wl_get_current_network(void);
01147 wl_err_t wl_process_rx(char *pkt, size_t pkt_len, char **stripped_pkt,
01148 size_t *stripped_pkt_len, uint16_t *vlanid_prio);
01149
01185 wl_err_t wl_process_tx(char *eth_hdr, size_t eth_hdr_len, size_t pkt_len,
01186 char *hdr, uint16_t vlanid_prio);
01187
01188
01206 wl_err_t wl_register_rx_event_cb(wl_rx_event_cb_t cb, void* ctx);
01207
01222 wl_err_t wl_rx(uint8_t* buf, uint16_t* len);
01223
01237 wl_err_t wl_tx(const uint8_t* buf, uint16_t len);
01238
01240
01241
01242
01243 #endif