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 #define WL_FLAG_POLL (1 << 0)
00132 typedef enum {
00133 WL_FAILURE = -1,
00134 WL_SUCCESS = 1,
00135 WL_OOM,
00136 WL_INVALID_LENGTH,
00137 WL_NOT_SUPPORTED,
00138 WL_ABSORBED,
00139 WL_RESOURCES,
00140 WL_BUSY,
00141 WL_RETRY,
00144 WL_INVALID_ARGS,
00145 WL_AVAIL
00146 } wl_err_t;
00147
00150 enum wl_event_id_t {
00151 WL_EVENT_INIT_COMPLETE = 0,
00152 WL_EVENT_MEDIA_CONNECTED,
00153 WL_EVENT_CONN_FAILURE,
00154 WL_EVENT_MEDIA_DISCONNECTED,
00155 WL_EVENT_CONN_LOST,
00156 WL_EVENT_SCAN_COMPLETE,
00157 MAX_WL_EVENT
00158 };
00159
00162 enum wl_rx_event_id_t {
00163 WL_RX_EVENT_DATA,
00164 WL_RX_EVENT_WAKEUP,
00165 MAX_WL_RX_EVENT
00166 };
00167
00170 enum wl_auth_mode {
00171 AUTH_MODE_INVALID,
00172 AUTH_MODE_AUTO,
00173 AUTH_MODE_OPEN_SYSTEM,
00174 AUTH_MODE_SHARED_KEY,
00175 AUTH_MODE_WPA,
00176 AUTH_MODE_WPA2,
00177 AUTH_MODE_WPA_PSK,
00178 AUTH_MODE_WPA2_PSK
00179 };
00180
00183 enum wl_enc_type {
00184 ENC_TYPE_WEP = 5,
00185 ENC_TYPE_TKIP = 2,
00186 ENC_TYPE_CCMP = 4,
00187
00188 ENC_TYPE_NONE = 7,
00189 ENC_TYPE_AUTO = 8
00190 };
00191
00192
00197 struct wl_event_t {
00198 enum wl_event_id_t id;
00199 };
00200
00205 struct wl_rx_event_t {
00206 enum wl_rx_event_id_t id;
00207 };
00208
00210 #define ALIGN __attribute__ ((aligned (4)))
00211
00224 struct wl_ssid_t
00225 {
00226 char ssid[WL_SSID_MAX_LENGTH];
00227 uint8_t len;
00228 } ALIGN;
00229
00240 struct wl_mac_addr_t
00241 {
00242 uint8_t octet[WL_MAC_ADDR_LENGTH];
00243 };
00244
00254 struct wl_network_t
00255 {
00256 struct wl_ssid_t ssid;
00257 struct wl_mac_addr_t bssid;
00258 int32_t rssi;
00259 uint8_t enc_type;
00260 } ALIGN;
00261
00370 typedef void (*wl_event_cb_t) (struct wl_event_t event, void* ctx);
00371
00372
00390 typedef void (*wl_rx_event_cb_t) (struct wl_rx_event_t event, void* ctx);
00391
00392
00409 typedef void (*wl_fw_download_cb_t)(uint32_t addr, uint8_t** buf, uint32_t* len);
00410
00411
00426 wl_err_t wl_register_event_cb(wl_event_cb_t cb, void* ctx);
00427
00445 wl_err_t wl_init(wl_fw_download_cb_t cb, uint32_t flags);
00446
00460 void wl_poll(uint32_t tick);
00461
00654 wl_err_t wl_scan(void);
00655
00681 wl_err_t wl_get_network_list(struct wl_network_t** network_list, uint8_t* network_cnt);
00682
00708 wl_err_t wl_connect(char* ssid, size_t ssid_len);
00709
00733 wl_err_t wl_connect_bssid(struct wl_mac_addr_t bssid);
00734
00743 wl_err_t wl_disconnect(void);
00744
00756 wl_err_t wl_set_auth_mode(enum wl_auth_mode mode);
00757
00780 wl_err_t wl_add_wep_key(uint8_t key_idx,
00781 size_t key_len,
00782 const void *key,
00783 struct wl_mac_addr_t *bssid);
00784
00795 wl_err_t wl_set_default_wep_key(uint8_t key_idx);
00796
00808 wl_err_t wl_delete_wep_key(uint8_t key_idx, struct wl_mac_addr_t *bssid);
00809
00838 wl_err_t wl_set_passphrase(const struct wl_network_t *net,
00839 const char *passphrase,
00840 const size_t len,
00841 const enum wl_enc_type enc_type,
00842 const enum wl_auth_mode auth_mode);
00843
00855 wl_err_t wl_clear_passphrase(struct wl_network_t *net);
00856
00868 wl_err_t wl_enable_ps(void);
00869
00874 wl_err_t wl_disable_ps(void);
00875
00896 wl_err_t wl_conf_ps(uint8_t use_ps_poll,
00897 uint32_t ps_traffic_timeout,
00898 uint32_t ps_delay);
00899
00900
00912 wl_err_t wl_get_mac_addr(uint8_t* buf);
00913
00922 struct wl_network_t* wl_get_current_network(void);
01103 wl_err_t wl_process_rx(char *pkt, size_t pkt_len, char **stripped_pkt,
01104 size_t *stripped_pkt_len, uint16_t *vlanid_prio);
01105
01141 wl_err_t wl_process_tx(char *eth_hdr, size_t eth_hdr_len, size_t pkt_len,
01142 char *hdr, uint16_t vlanid_prio);
01143
01144
01162 wl_err_t wl_register_rx_event_cb(wl_rx_event_cb_t cb, void* ctx);
01163
01178 wl_err_t wl_rx(uint8_t* buf, uint16_t* len);
01179
01193 wl_err_t wl_tx(const uint8_t* buf, uint16_t len);
01194
01196
01197
01198
01199 #endif