Gill Wei / WIFI_API_32kRAM

Fork of WIFI_API_32kRAM by Delta

Committer:
Marcomissyou
Date:
Fri Jun 26 09:44:35 2015 +0000
Revision:
0:4085cc9441f3
Commit WIFI_API_32kRAM; This API works on DFCM-NNN40-DT1R(32K RAM).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marcomissyou 0:4085cc9441f3 1 ////////////////////////////////////////////////////////////////////////////
Marcomissyou 0:4085cc9441f3 2 //
Marcomissyou 0:4085cc9441f3 3 // Copyright (c) Newport Media Inc. All rights reserved.
Marcomissyou 0:4085cc9441f3 4 //
Marcomissyou 0:4085cc9441f3 5 // Module Name: nmi_wlan_if.h
Marcomissyou 0:4085cc9441f3 6 //
Marcomissyou 0:4085cc9441f3 7 //
Marcomissyou 0:4085cc9441f3 8 //////////////////////////////////////////////////////////////////////////////
Marcomissyou 0:4085cc9441f3 9
Marcomissyou 0:4085cc9441f3 10 #ifndef NMI_WLAN_IF_H
Marcomissyou 0:4085cc9441f3 11 #define NMI_WLAN_IF_H
Marcomissyou 0:4085cc9441f3 12
Marcomissyou 0:4085cc9441f3 13 #if defined(_LINUX_)
Marcomissyou 0:4085cc9441f3 14
Marcomissyou 0:4085cc9441f3 15 #include <linux/slab.h>
Marcomissyou 0:4085cc9441f3 16 #include <linux/sched.h>
Marcomissyou 0:4085cc9441f3 17 #include <linux/delay.h>
Marcomissyou 0:4085cc9441f3 18 #include <linux/workqueue.h>
Marcomissyou 0:4085cc9441f3 19 #include <linux/interrupt.h>
Marcomissyou 0:4085cc9441f3 20 #include <linux/irq.h>
Marcomissyou 0:4085cc9441f3 21 #include <asm/gpio.h>
Marcomissyou 0:4085cc9441f3 22 #include <linux/kthread.h>
Marcomissyou 0:4085cc9441f3 23 #include <linux/firmware.h>
Marcomissyou 0:4085cc9441f3 24 #include <linux/string.h>
Marcomissyou 0:4085cc9441f3 25 #include <linux/delay.h>
Marcomissyou 0:4085cc9441f3 26
Marcomissyou 0:4085cc9441f3 27 #include <linux/init.h>
Marcomissyou 0:4085cc9441f3 28 #include <linux/netdevice.h>
Marcomissyou 0:4085cc9441f3 29 #include <linux/etherdevice.h>
Marcomissyou 0:4085cc9441f3 30 #include <linux/module.h>
Marcomissyou 0:4085cc9441f3 31 #include <linux/kernel.h>
Marcomissyou 0:4085cc9441f3 32 #include <linux/skbuff.h>
Marcomissyou 0:4085cc9441f3 33 #include <linux/version.h>
Marcomissyou 0:4085cc9441f3 34 #include <linux/semaphore.h>
Marcomissyou 0:4085cc9441f3 35
Marcomissyou 0:4085cc9441f3 36 #else
Marcomissyou 0:4085cc9441f3 37
Marcomissyou 0:4085cc9441f3 38 #define SPI_RW_SEPARATE//Ryan
Marcomissyou 0:4085cc9441f3 39 //#include "os_api.h"
Marcomissyou 0:4085cc9441f3 40 //#include "IN_Message.h"
Marcomissyou 0:4085cc9441f3 41 //#include "tcpip_types.h"
Marcomissyou 0:4085cc9441f3 42 //#include "tcpip_api.h"
Marcomissyou 0:4085cc9441f3 43 //#include "app_tcp_if.h"
Marcomissyou 0:4085cc9441f3 44 //#include "wifisupp_api.h"
Marcomissyou 0:4085cc9441f3 45 #include "nmi_wifi_adapter.h"
Marcomissyou 0:4085cc9441f3 46 //#include "wifi_drv.h"
Marcomissyou 0:4085cc9441f3 47 //#include "nmi_os.h"
Marcomissyou 0:4085cc9441f3 48 //#include "nmi_config.h"//command by Tsungta
Marcomissyou 0:4085cc9441f3 49
Marcomissyou 0:4085cc9441f3 50 #endif
Marcomissyou 0:4085cc9441f3 51
Marcomissyou 0:4085cc9441f3 52 #include "nmi_type.h"
Marcomissyou 0:4085cc9441f3 53
Marcomissyou 0:4085cc9441f3 54 #ifdef __SC6800H__
Marcomissyou 0:4085cc9441f3 55 #define BIG_ENDIAN
Marcomissyou 0:4085cc9441f3 56 #endif
Marcomissyou 0:4085cc9441f3 57
Marcomissyou 0:4085cc9441f3 58 /********************************************
Marcomissyou 0:4085cc9441f3 59
Marcomissyou 0:4085cc9441f3 60 Debug Flags
Marcomissyou 0:4085cc9441f3 61
Marcomissyou 0:4085cc9441f3 62 ********************************************/
Marcomissyou 0:4085cc9441f3 63
Marcomissyou 0:4085cc9441f3 64 #define N_INIT 0x00000001
Marcomissyou 0:4085cc9441f3 65 #define N_ERR 0x00000002
Marcomissyou 0:4085cc9441f3 66 #define N_TXQ 0x00000004
Marcomissyou 0:4085cc9441f3 67 #define N_INTR 0x00000008
Marcomissyou 0:4085cc9441f3 68 #define N_RXQ 0x00000010
Marcomissyou 0:4085cc9441f3 69 #define N_TRACE 0x00000020
Marcomissyou 0:4085cc9441f3 70 #define N_LIST 0x00000040
Marcomissyou 0:4085cc9441f3 71 #define N_SCAN 0x00000080
Marcomissyou 0:4085cc9441f3 72 #define N_JOIN 0x00000100
Marcomissyou 0:4085cc9441f3 73 #define N_WARN 0x00000200
Marcomissyou 0:4085cc9441f3 74 #define N_HIF 0x00000400
Marcomissyou 0:4085cc9441f3 75 #define N_BUS 0x00000800
Marcomissyou 0:4085cc9441f3 76 #define N_FW_STATE 0x00001000
Marcomissyou 0:4085cc9441f3 77 #define N_ALL 0xffffffff
Marcomissyou 0:4085cc9441f3 78
Marcomissyou 0:4085cc9441f3 79
Marcomissyou 0:4085cc9441f3 80 /********************************************
Marcomissyou 0:4085cc9441f3 81
Marcomissyou 0:4085cc9441f3 82 Host SDIO Bus Interface Defines
Marcomissyou 0:4085cc9441f3 83
Marcomissyou 0:4085cc9441f3 84 ********************************************/
Marcomissyou 0:4085cc9441f3 85
Marcomissyou 0:4085cc9441f3 86 #define N_SDIO 0
Marcomissyou 0:4085cc9441f3 87 /**
Marcomissyou 0:4085cc9441f3 88 Note:
Marcomissyou 0:4085cc9441f3 89 Set the SDIO block size here. The max is 2k.
Marcomissyou 0:4085cc9441f3 90 **/
Marcomissyou 0:4085cc9441f3 91 #define NMI_SDIO_BLOCK_SIZE 512
Marcomissyou 0:4085cc9441f3 92
Marcomissyou 0:4085cc9441f3 93 typedef struct {
Marcomissyou 0:4085cc9441f3 94 u32 read_write:1;
Marcomissyou 0:4085cc9441f3 95 u32 function:3;
Marcomissyou 0:4085cc9441f3 96 u32 raw:1;
Marcomissyou 0:4085cc9441f3 97 u32 address:17;
Marcomissyou 0:4085cc9441f3 98 u32 data:8;
Marcomissyou 0:4085cc9441f3 99 } sdio_cmd52_t;
Marcomissyou 0:4085cc9441f3 100
Marcomissyou 0:4085cc9441f3 101 typedef struct {
Marcomissyou 0:4085cc9441f3 102 struct {
Marcomissyou 0:4085cc9441f3 103 u32 read_write:1;
Marcomissyou 0:4085cc9441f3 104 u32 function:3;
Marcomissyou 0:4085cc9441f3 105 u32 block_mode:1;
Marcomissyou 0:4085cc9441f3 106 u32 increment:1;
Marcomissyou 0:4085cc9441f3 107 u32 address:17;
Marcomissyou 0:4085cc9441f3 108 u32 count:9;
Marcomissyou 0:4085cc9441f3 109 } bit;
Marcomissyou 0:4085cc9441f3 110 u8 *buffer;
Marcomissyou 0:4085cc9441f3 111 u32 block_size;
Marcomissyou 0:4085cc9441f3 112 } sdio_cmd53_t;
Marcomissyou 0:4085cc9441f3 113
Marcomissyou 0:4085cc9441f3 114 /********************************************
Marcomissyou 0:4085cc9441f3 115
Marcomissyou 0:4085cc9441f3 116 Host SPI Bus Interface Defines
Marcomissyou 0:4085cc9441f3 117
Marcomissyou 0:4085cc9441f3 118 ********************************************/
Marcomissyou 0:4085cc9441f3 119
Marcomissyou 0:4085cc9441f3 120 //#define SPI_RW_SEPARATE
Marcomissyou 0:4085cc9441f3 121 #define N_SPI 1
Marcomissyou 0:4085cc9441f3 122 #define SPI_DATA_PKT_SZ_256 256
Marcomissyou 0:4085cc9441f3 123 #define SPI_DATA_PKT_SZ_512 512
Marcomissyou 0:4085cc9441f3 124 #define SPI_DATA_PKT_SZ_1K 1024
Marcomissyou 0:4085cc9441f3 125 #define SPI_DATA_PKT_SZ_2K (2 * 1024)
Marcomissyou 0:4085cc9441f3 126 #define SPI_DATA_PKT_SZ_4K (4 * 1024)
Marcomissyou 0:4085cc9441f3 127 #define SPI_DATA_PKT_SZ_8K (8 * 1024)
Marcomissyou 0:4085cc9441f3 128 /**
Marcomissyou 0:4085cc9441f3 129
Marcomissyou 0:4085cc9441f3 130 Note:
Marcomissyou 0:4085cc9441f3 131 Set the SPI transfer size here. See above
Marcomissyou 0:4085cc9441f3 132 **/
Marcomissyou 0:4085cc9441f3 133 #define SPI_DATA_PKT_SZ SPI_DATA_PKT_SZ_4K//SPI_DATA_PKT_SZ_8K
Marcomissyou 0:4085cc9441f3 134
Marcomissyou 0:4085cc9441f3 135 /********************************************
Marcomissyou 0:4085cc9441f3 136
Marcomissyou 0:4085cc9441f3 137 Wlan Interfaces Defines
Marcomissyou 0:4085cc9441f3 138
Marcomissyou 0:4085cc9441f3 139 ********************************************/
Marcomissyou 0:4085cc9441f3 140
Marcomissyou 0:4085cc9441f3 141 #define MAX_SSID_LEN 33
Marcomissyou 0:4085cc9441f3 142
Marcomissyou 0:4085cc9441f3 143 typedef enum {
Marcomissyou 0:4085cc9441f3 144 NO_SECURITY = 0,
Marcomissyou 0:4085cc9441f3 145 WEP_40 = 0x3,
Marcomissyou 0:4085cc9441f3 146 WEP_104 = 0x7,
Marcomissyou 0:4085cc9441f3 147 WPA_AES = 0x29,
Marcomissyou 0:4085cc9441f3 148 WPA_TKIP = 0x49,
Marcomissyou 0:4085cc9441f3 149 WPA_AES_TKIP = 0x69, /* Aes or Tkip */
Marcomissyou 0:4085cc9441f3 150 WPA2_AES = 0x31,
Marcomissyou 0:4085cc9441f3 151 WPA2_TKIP = 0x51,
Marcomissyou 0:4085cc9441f3 152 WPA2_AES_TKIP = 0x71, /* Aes or Tkip */
Marcomissyou 0:4085cc9441f3 153 WP2_WPA_AES = 0x39, /* ksong add 2013.5.21 it is a wired value */
Marcomissyou 0:4085cc9441f3 154 WPA2_WPA_AES_TKIP = 0x79, /* ksong add 2013.5.13 */
Marcomissyou 0:4085cc9441f3 155 } SECURITY_T;
Marcomissyou 0:4085cc9441f3 156
Marcomissyou 0:4085cc9441f3 157 typedef enum {
Marcomissyou 0:4085cc9441f3 158 INFRASTRUCTURE = 1,
Marcomissyou 0:4085cc9441f3 159 INDEPENDENT = 2,
Marcomissyou 0:4085cc9441f3 160 ANY_BSS = 3
Marcomissyou 0:4085cc9441f3 161 } BSSTYPE_T;
Marcomissyou 0:4085cc9441f3 162
Marcomissyou 0:4085cc9441f3 163 typedef enum{
Marcomissyou 0:4085cc9441f3 164 PASSIVE_SCAN = 0,
Marcomissyou 0:4085cc9441f3 165 ACTIVE_SCAN = 1,
Marcomissyou 0:4085cc9441f3 166 NUM_SCANTYPE
Marcomissyou 0:4085cc9441f3 167 } SCANTYPE_T;
Marcomissyou 0:4085cc9441f3 168
Marcomissyou 0:4085cc9441f3 169 typedef enum{
Marcomissyou 0:4085cc9441f3 170 OPEN_SYSTEM = 1,
Marcomissyou 0:4085cc9441f3 171 SHARED_KEY = 2,
Marcomissyou 0:4085cc9441f3 172 ANY = 3
Marcomissyou 0:4085cc9441f3 173 } AUTHTYPE_T;
Marcomissyou 0:4085cc9441f3 174
Marcomissyou 0:4085cc9441f3 175 typedef enum {
Marcomissyou 0:4085cc9441f3 176 NO_POWERSAVE = 0,
Marcomissyou 0:4085cc9441f3 177 MIN_FAST_PS = 1,
Marcomissyou 0:4085cc9441f3 178 MAX_FAST_PS = 2,
Marcomissyou 0:4085cc9441f3 179 MIN_PSPOLL_PS = 3,
Marcomissyou 0:4085cc9441f3 180 MAX_PSPOLL_PS = 4
Marcomissyou 0:4085cc9441f3 181 } USER_PS_MODE_T;
Marcomissyou 0:4085cc9441f3 182
Marcomissyou 0:4085cc9441f3 183 typedef enum{
Marcomissyou 0:4085cc9441f3 184 SUCCESS_MLMESTATUS = 0,
Marcomissyou 0:4085cc9441f3 185 INVALID_MLMESTATUS = 1,
Marcomissyou 0:4085cc9441f3 186 TIMEOUT = 2,
Marcomissyou 0:4085cc9441f3 187 REFUSED = 3,
Marcomissyou 0:4085cc9441f3 188 TOMANY_REQ = 4,
Marcomissyou 0:4085cc9441f3 189 ALREADY_BSS = 5
Marcomissyou 0:4085cc9441f3 190 } MLMESTATUS_T;
Marcomissyou 0:4085cc9441f3 191
Marcomissyou 0:4085cc9441f3 192 typedef struct {
Marcomissyou 0:4085cc9441f3 193 int status;
Marcomissyou 0:4085cc9441f3 194 u8 bssid[6];
Marcomissyou 0:4085cc9441f3 195 u16 asoc_req_len;
Marcomissyou 0:4085cc9441f3 196 u8 *asoc_req;
Marcomissyou 0:4085cc9441f3 197 u16 asoc_rsp_len;
Marcomissyou 0:4085cc9441f3 198 u8 *asoc_rsp;
Marcomissyou 0:4085cc9441f3 199 } nmi_wl_join_rsp_t;
Marcomissyou 0:4085cc9441f3 200
Marcomissyou 0:4085cc9441f3 201 typedef struct {
Marcomissyou 0:4085cc9441f3 202 int chan_no;
Marcomissyou 0:4085cc9441f3 203 u8 bssid[6];
Marcomissyou 0:4085cc9441f3 204 //u16 ssid_len;
Marcomissyou 0:4085cc9441f3 205 u8 ssid[33];
Marcomissyou 0:4085cc9441f3 206 BSSTYPE_T bss_type;
Marcomissyou 0:4085cc9441f3 207 AUTHTYPE_T auth_type;
Marcomissyou 0:4085cc9441f3 208 SECURITY_T sec_type;
Marcomissyou 0:4085cc9441f3 209 u8 *key;
Marcomissyou 0:4085cc9441f3 210 u8 key_len, key_idx;
Marcomissyou 0:4085cc9441f3 211 u16 beacon_period;
Marcomissyou 0:4085cc9441f3 212 void *priv;
Marcomissyou 0:4085cc9441f3 213 void (*join_callback_fun)(void *, nmi_wl_join_rsp_t *);
Marcomissyou 0:4085cc9441f3 214 void (*disconnect_callback_fun)(void *);
Marcomissyou 0:4085cc9441f3 215 } nmi_wl_join_t;
Marcomissyou 0:4085cc9441f3 216
Marcomissyou 0:4085cc9441f3 217 typedef struct
Marcomissyou 0:4085cc9441f3 218 {
Marcomissyou 0:4085cc9441f3 219 u32 bss_type;
Marcomissyou 0:4085cc9441f3 220 u32 chan_no;
Marcomissyou 0:4085cc9441f3 221 u32 beacon_period;
Marcomissyou 0:4085cc9441f3 222 u32 cap_info;
Marcomissyou 0:4085cc9441f3 223 u8 bssid[8];
Marcomissyou 0:4085cc9441f3 224 u8 ssid[36];
Marcomissyou 0:4085cc9441f3 225 s32 rssi;
Marcomissyou 0:4085cc9441f3 226 u32 dot11i_info;
Marcomissyou 0:4085cc9441f3 227 u32 ht_capable;
Marcomissyou 0:4085cc9441f3 228 u32 max_rate;
Marcomissyou 0:4085cc9441f3 229 //u8 *ie;
Marcomissyou 0:4085cc9441f3 230 //u16 ie_len;
Marcomissyou 0:4085cc9441f3 231 } nmi_wl_bss_t;
Marcomissyou 0:4085cc9441f3 232
Marcomissyou 0:4085cc9441f3 233 typedef struct {
Marcomissyou 0:4085cc9441f3 234 void *priv;
Marcomissyou 0:4085cc9441f3 235 SCANTYPE_T scan_type;
Marcomissyou 0:4085cc9441f3 236 BSSTYPE_T bss_type;
Marcomissyou 0:4085cc9441f3 237 u32 ssid_len;
Marcomissyou 0:4085cc9441f3 238 u8 ssid[32];
Marcomissyou 0:4085cc9441f3 239 u16 n_channel;
Marcomissyou 0:4085cc9441f3 240 u8 channel[14];
Marcomissyou 0:4085cc9441f3 241 u32 active_scan_time;
Marcomissyou 0:4085cc9441f3 242 u32 passive_scan_time;
Marcomissyou 0:4085cc9441f3 243 unsigned char *ie;
Marcomissyou 0:4085cc9441f3 244 u32 ie_len;
Marcomissyou 0:4085cc9441f3 245 void (*scan_callback_fun)(void *, nmi_wl_bss_t *, int, int);
Marcomissyou 0:4085cc9441f3 246 } nmi_wl_scan_t;
Marcomissyou 0:4085cc9441f3 247
Marcomissyou 0:4085cc9441f3 248 typedef struct {
Marcomissyou 0:4085cc9441f3 249 SECURITY_T sec_type;
Marcomissyou 0:4085cc9441f3 250 u8 bssid[6];
Marcomissyou 0:4085cc9441f3 251 u8 key_index;
Marcomissyou 0:4085cc9441f3 252 int seq_len;
Marcomissyou 0:4085cc9441f3 253 u8 *seq;
Marcomissyou 0:4085cc9441f3 254 int key_len;
Marcomissyou 0:4085cc9441f3 255 u8 *key;
Marcomissyou 0:4085cc9441f3 256 int grp;
Marcomissyou 0:4085cc9441f3 257
Marcomissyou 0:4085cc9441f3 258 } nmi_add_key_t;
Marcomissyou 0:4085cc9441f3 259
Marcomissyou 0:4085cc9441f3 260 /* Atmel: 1-15-2015 */
Marcomissyou 0:4085cc9441f3 261 typedef struct {
Marcomissyou 0:4085cc9441f3 262 u8 password[64];
Marcomissyou 0:4085cc9441f3 263 u8 ssid[MAX_SSID_LEN];
Marcomissyou 0:4085cc9441f3 264 u8 psk[40];
Marcomissyou 0:4085cc9441f3 265 } pmk_cache_info_t;
Marcomissyou 0:4085cc9441f3 266
Marcomissyou 0:4085cc9441f3 267 /********************************************
Marcomissyou 0:4085cc9441f3 268
Marcomissyou 0:4085cc9441f3 269 Platform Interface Defines
Marcomissyou 0:4085cc9441f3 270
Marcomissyou 0:4085cc9441f3 271 ********************************************/
Marcomissyou 0:4085cc9441f3 272
Marcomissyou 0:4085cc9441f3 273 #define HOST_ID_ANDROID 0
Marcomissyou 0:4085cc9441f3 274 #define HOST_ID_RTOS 1
Marcomissyou 0:4085cc9441f3 275
Marcomissyou 0:4085cc9441f3 276 typedef enum {
Marcomissyou 0:4085cc9441f3 277 TXQ_LOCK = 1,
Marcomissyou 0:4085cc9441f3 278 RXQ_LOCK,
Marcomissyou 0:4085cc9441f3 279 CFQ_LOCK,
Marcomissyou 0:4085cc9441f3 280 QRQ_LOCK,
Marcomissyou 0:4085cc9441f3 281 QSQ_LOCK,
Marcomissyou 0:4085cc9441f3 282 IO_LOCK,
Marcomissyou 0:4085cc9441f3 283 } LOCK_ID_T;
Marcomissyou 0:4085cc9441f3 284
Marcomissyou 0:4085cc9441f3 285 typedef enum {
Marcomissyou 0:4085cc9441f3 286 HIF_WAIT = 1,
Marcomissyou 0:4085cc9441f3 287 RXQ_WAIT,
Marcomissyou 0:4085cc9441f3 288 SYNC_WAIT,
Marcomissyou 0:4085cc9441f3 289 } WAIT_ID_T;
Marcomissyou 0:4085cc9441f3 290
Marcomissyou 0:4085cc9441f3 291 typedef struct {
Marcomissyou 0:4085cc9441f3 292 int type;
Marcomissyou 0:4085cc9441f3 293 union {
Marcomissyou 0:4085cc9441f3 294 struct {
Marcomissyou 0:4085cc9441f3 295 int external_intr_pin;
Marcomissyou 0:4085cc9441f3 296 int (*sdio_cmd52)(sdio_cmd52_t *);
Marcomissyou 0:4085cc9441f3 297 int (*sdio_cmd53)(sdio_cmd53_t *);
Marcomissyou 0:4085cc9441f3 298 } sdio;
Marcomissyou 0:4085cc9441f3 299 struct {
Marcomissyou 0:4085cc9441f3 300 #ifdef SPI_RW_SEPARATE
Marcomissyou 0:4085cc9441f3 301 int (*spi_io)(u8 *, u32, u8 *, u32);
Marcomissyou 0:4085cc9441f3 302 #else
Marcomissyou 0:4085cc9441f3 303 int (*spi_io)(u8 *, u8 *, u32);
Marcomissyou 0:4085cc9441f3 304 #endif
Marcomissyou 0:4085cc9441f3 305 } spi;
Marcomissyou 0:4085cc9441f3 306 } u;
Marcomissyou 0:4085cc9441f3 307 } nmi_wl_io_t;
Marcomissyou 0:4085cc9441f3 308
Marcomissyou 0:4085cc9441f3 309 typedef struct {
Marcomissyou 0:4085cc9441f3 310 void (*print)(char *);
Marcomissyou 0:4085cc9441f3 311 void (*msleep)(u32);
Marcomissyou 0:4085cc9441f3 312 void *(*malloc)(u32);
Marcomissyou 0:4085cc9441f3 313 void (*free)(void *);
Marcomissyou 0:4085cc9441f3 314 void (*lock)(void *, LOCK_ID_T);
Marcomissyou 0:4085cc9441f3 315 void (*unlock)(void *, LOCK_ID_T);
Marcomissyou 0:4085cc9441f3 316 int (*wait)(void *, WAIT_ID_T, u32);
Marcomissyou 0:4085cc9441f3 317 void (*signal)(void *, WAIT_ID_T);
Marcomissyou 0:4085cc9441f3 318 u32 (*net_rx)(void *, u8 *, u32);
Marcomissyou 0:4085cc9441f3 319 void (*net_enable_irq)(void *);
Marcomissyou 0:4085cc9441f3 320 void (*net_tx_resume)(void *);
Marcomissyou 0:4085cc9441f3 321 void (*net_tx_stop)(void *);
Marcomissyou 0:4085cc9441f3 322 void (*net_link_up)(void *);
Marcomissyou 0:4085cc9441f3 323 void (*net_link_down)(void *);
Marcomissyou 0:4085cc9441f3 324 void (*power_up)(void *);
Marcomissyou 0:4085cc9441f3 325 void (*power_down)(void *);
Marcomissyou 0:4085cc9441f3 326 void (*rssi_fun)(s8);
Marcomissyou 0:4085cc9441f3 327 } nmi_wl_plat_func_t;
Marcomissyou 0:4085cc9441f3 328
Marcomissyou 0:4085cc9441f3 329 typedef struct {
Marcomissyou 0:4085cc9441f3 330 void *priv;
Marcomissyou 0:4085cc9441f3 331 u32 dbgflag;
Marcomissyou 0:4085cc9441f3 332 u32 host_id;
Marcomissyou 0:4085cc9441f3 333 nmi_wl_plat_func_t fun;
Marcomissyou 0:4085cc9441f3 334 nmi_wl_io_t io;
Marcomissyou 0:4085cc9441f3 335 } nmi_wl_platform_t;
Marcomissyou 0:4085cc9441f3 336
Marcomissyou 0:4085cc9441f3 337 typedef void (*free_txb_cb_fun_t)(void *, u8 *, u32);
Marcomissyou 0:4085cc9441f3 338 /* Atmel: 1-15-2015 */
Marcomissyou 0:4085cc9441f3 339 typedef void (*query_cb_fun_t)(u32, u32);
Marcomissyou 0:4085cc9441f3 340
Marcomissyou 0:4085cc9441f3 341 typedef struct {
Marcomissyou 0:4085cc9441f3 342 // int (*firmware_download)(u8 *, u32);
Marcomissyou 0:4085cc9441f3 343 int (*firmware_download)(const u8 *, u32);//Ryan
Marcomissyou 0:4085cc9441f3 344 int (*hw_start)(void);
Marcomissyou 0:4085cc9441f3 345 void (*hw_stop)(void);
Marcomissyou 0:4085cc9441f3 346 void (*host_trans)(void);
Marcomissyou 0:4085cc9441f3 347 void (*host_indicate_rx_isr)(void);
Marcomissyou 0:4085cc9441f3 348 void (*host_rx_trans)(void);
Marcomissyou 0:4085cc9441f3 349 void (*host_tx_trans)(void);
Marcomissyou 0:4085cc9441f3 350 int (*net_que_tx_frame)(void *, u8 *, u32, free_txb_cb_fun_t);
Marcomissyou 0:4085cc9441f3 351 void (*net_disp_rx_frame)(void);
Marcomissyou 0:4085cc9441f3 352 int (*wl_scan)(nmi_wl_scan_t *);
Marcomissyou 0:4085cc9441f3 353 int (*wl_join)(nmi_wl_join_t *);
Marcomissyou 0:4085cc9441f3 354 int (*wl_leave)(void);
Marcomissyou 0:4085cc9441f3 355 int (*wl_add_key)(nmi_add_key_t *);
Marcomissyou 0:4085cc9441f3 356 int (*wl_del_key)(nmi_add_key_t *);
Marcomissyou 0:4085cc9441f3 357 int (*wl_get_mac_addr)(void *);
Marcomissyou 0:4085cc9441f3 358 int (*wl_power_save_enable)(int);
Marcomissyou 0:4085cc9441f3 359 void (*wl_clean)(void); /* ksong add 2013.5.9 */
Marcomissyou 0:4085cc9441f3 360 void (*wl_sleep)(u32); /* ksong add 2013-6-26 */
Marcomissyou 0:4085cc9441f3 361 void (*wl_wakeup)(void); /* ksong add 2013-6-26 */
Marcomissyou 0:4085cc9441f3 362 } nmi_wl_core_func_t;
Marcomissyou 0:4085cc9441f3 363
Marcomissyou 0:4085cc9441f3 364 #if 1//Ryan
Marcomissyou 0:4085cc9441f3 365 typedef uint32 TCPIP_NETID_T;//Ryan
Marcomissyou 0:4085cc9441f3 366
Marcomissyou 0:4085cc9441f3 367 struct nmi_wl_adp_t {
Marcomissyou 0:4085cc9441f3 368
Marcomissyou 0:4085cc9441f3 369 // void *hif_event;
Marcomissyou 0:4085cc9441f3 370 // void *rxq_event;
Marcomissyou 0:4085cc9441f3 371 // void *sync_event;
Marcomissyou 0:4085cc9441f3 372
Marcomissyou 0:4085cc9441f3 373 nmi_wl_core_func_t core;
Marcomissyou 0:4085cc9441f3 374
Marcomissyou 0:4085cc9441f3 375 uint8 mac_address[6];
Marcomissyou 0:4085cc9441f3 376
Marcomissyou 0:4085cc9441f3 377 TCPIP_NETID_T net_id;
Marcomissyou 0:4085cc9441f3 378
Marcomissyou 0:4085cc9441f3 379 int quit;
Marcomissyou 0:4085cc9441f3 380
Marcomissyou 0:4085cc9441f3 381 uint32 hif_thread_id;
Marcomissyou 0:4085cc9441f3 382 uint32 rxq_thread_id ;
Marcomissyou 0:4085cc9441f3 383
Marcomissyou 0:4085cc9441f3 384 uint8 disconnect_req; /* disconnect request */
Marcomissyou 0:4085cc9441f3 385 uint8 already_on; /*avoid re-enter the init and deinit function. */
Marcomissyou 0:4085cc9441f3 386 uint8 not_inform_app; /* sometimes we do not need to inform app that connection is fail */
Marcomissyou 0:4085cc9441f3 387 NMI_WIFISUPP_SSID_CONFIG_T connect_info; /* Store the connect info */
Marcomissyou 0:4085cc9441f3 388 NMI_STATE_T state; /* record the state */
Marcomissyou 0:4085cc9441f3 389 void *poll_dhcp_timer; /* dhcp poll timer */
Marcomissyou 0:4085cc9441f3 390 };
Marcomissyou 0:4085cc9441f3 391 #endif
Marcomissyou 0:4085cc9441f3 392
Marcomissyou 0:4085cc9441f3 393 extern int nmi_wl_core_init(nmi_wl_platform_t *, nmi_wl_core_func_t *, u8 *);
Marcomissyou 0:4085cc9441f3 394
Marcomissyou 0:4085cc9441f3 395 /* Definitions for error constants. */
Marcomissyou 0:4085cc9441f3 396
Marcomissyou 0:4085cc9441f3 397 #define ERR_OK 0 /* No error, everything OK. */
Marcomissyou 0:4085cc9441f3 398 #define ERR_MEM -1 /* Out of memory error. */
Marcomissyou 0:4085cc9441f3 399 #define ERR_BUF -2 /* Buffer error. */
Marcomissyou 0:4085cc9441f3 400 #define ERR_TIMEOUT -3 /* Timeout. */
Marcomissyou 0:4085cc9441f3 401 #define ERR_RTE -4 /* Routing problem. */
Marcomissyou 0:4085cc9441f3 402 #define ERR_INPROGRESS -5 /* Operation in progress */
Marcomissyou 0:4085cc9441f3 403 #define ERR_VAL -6 /* Illegal value. */
Marcomissyou 0:4085cc9441f3 404 #define ERR_WOULDBLOCK -7 /* Operation would block. */
Marcomissyou 0:4085cc9441f3 405 #define ERR_USE -8 /* Address in use. */
Marcomissyou 0:4085cc9441f3 406 #define ERR_ISCONN -9 /* Already connected. */
Marcomissyou 0:4085cc9441f3 407
Marcomissyou 0:4085cc9441f3 408 #define ERR_IS_FATAL(e) ((e) < ERR_ISCONN)
Marcomissyou 0:4085cc9441f3 409
Marcomissyou 0:4085cc9441f3 410 #define ERR_ABRT -10 /* Connection aborted. */
Marcomissyou 0:4085cc9441f3 411 #define ERR_RST -11 /* Connection reset. */
Marcomissyou 0:4085cc9441f3 412 #define ERR_CLSD -12 /* Connection closed. */
Marcomissyou 0:4085cc9441f3 413 #define ERR_CONN -13 /* Not connected. */
Marcomissyou 0:4085cc9441f3 414
Marcomissyou 0:4085cc9441f3 415 #define ERR_ARG -14 /* Illegal argument. */
Marcomissyou 0:4085cc9441f3 416
Marcomissyou 0:4085cc9441f3 417 #define ERR_IF -15 /* Low-level netif error */
Marcomissyou 0:4085cc9441f3 418
Marcomissyou 0:4085cc9441f3 419 #define NMI_PRINTF(...) DPRINT(N_ERR, __VA_ARGS__);//vDebugPrintf("\r\n"); vDebugPrintf(__VA_ARGS__); vDebugPrintf("\r\n");// vTaskDelay( 5 / portTICK_RATE_MS );//printk(__VA_ARGS__)
Marcomissyou 0:4085cc9441f3 420
Marcomissyou 0:4085cc9441f3 421 typedef enum{
Marcomissyou 0:4085cc9441f3 422 WIFI_SCAN_DONE = 1,
Marcomissyou 0:4085cc9441f3 423 WIFI_CONNECTED,
Marcomissyou 0:4085cc9441f3 424 WIFI_MAC_READY,
Marcomissyou 0:4085cc9441f3 425 WIFI_DISCONNECTED,//Tsungta
Marcomissyou 0:4085cc9441f3 426 }tenuWiFiEventType;//Ryan
Marcomissyou 0:4085cc9441f3 427
Marcomissyou 0:4085cc9441f3 428 #endif