Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
WIFI_Driver/nmc/nmi_wlan_if.h@0:4085cc9441f3, 2015-06-26 (annotated)
- 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?
| User | Revision | Line number | New 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 |