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.
Fork of WIFI_API_32kRAM by
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 |
