WIFI_API_20150524e
WIFI_Driver/nmc/nmi_wlan_if.h
- Committer:
- Marcomissyou
- Date:
- 2015-06-09
- Revision:
- 0:a2de37bf5f3d
File content as of revision 0:a2de37bf5f3d:
//////////////////////////////////////////////////////////////////////////// // // Copyright (c) Newport Media Inc. All rights reserved. // // Module Name: nmi_wlan_if.h // // ////////////////////////////////////////////////////////////////////////////// #ifndef NMI_WLAN_IF_H #define NMI_WLAN_IF_H #if defined(_LINUX_) #include <linux/slab.h> #include <linux/sched.h> #include <linux/delay.h> #include <linux/workqueue.h> #include <linux/interrupt.h> #include <linux/irq.h> #include <asm/gpio.h> #include <linux/kthread.h> #include <linux/firmware.h> #include <linux/string.h> #include <linux/delay.h> #include <linux/init.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/skbuff.h> #include <linux/version.h> #include <linux/semaphore.h> #else #define SPI_RW_SEPARATE//Ryan //#include "os_api.h" //#include "IN_Message.h" //#include "tcpip_types.h" //#include "tcpip_api.h" //#include "app_tcp_if.h" //#include "wifisupp_api.h" #include "nmi_wifi_adapter.h" //#include "wifi_drv.h" //#include "nmi_os.h" //#include "nmi_config.h"//command by Tsungta #endif #include "nmi_type.h" #ifdef __SC6800H__ #define BIG_ENDIAN #endif /******************************************** Debug Flags ********************************************/ #define N_INIT 0x00000001 #define N_ERR 0x00000002 #define N_TXQ 0x00000004 #define N_INTR 0x00000008 #define N_RXQ 0x00000010 #define N_TRACE 0x00000020 #define N_LIST 0x00000040 #define N_SCAN 0x00000080 #define N_JOIN 0x00000100 #define N_WARN 0x00000200 #define N_HIF 0x00000400 #define N_BUS 0x00000800 #define N_FW_STATE 0x00001000 #define N_ALL 0xffffffff /******************************************** Host SDIO Bus Interface Defines ********************************************/ #define N_SDIO 0 /** Note: Set the SDIO block size here. The max is 2k. **/ #define NMI_SDIO_BLOCK_SIZE 512 typedef struct { u32 read_write:1; u32 function:3; u32 raw:1; u32 address:17; u32 data:8; } sdio_cmd52_t; typedef struct { struct { u32 read_write:1; u32 function:3; u32 block_mode:1; u32 increment:1; u32 address:17; u32 count:9; } bit; u8 *buffer; u32 block_size; } sdio_cmd53_t; /******************************************** Host SPI Bus Interface Defines ********************************************/ //#define SPI_RW_SEPARATE #define N_SPI 1 #define SPI_DATA_PKT_SZ_256 256 #define SPI_DATA_PKT_SZ_512 512 #define SPI_DATA_PKT_SZ_1K 1024 #define SPI_DATA_PKT_SZ_2K (2 * 1024) #define SPI_DATA_PKT_SZ_4K (4 * 1024) #define SPI_DATA_PKT_SZ_8K (8 * 1024) /** Note: Set the SPI transfer size here. See above **/ #define SPI_DATA_PKT_SZ SPI_DATA_PKT_SZ_4K//SPI_DATA_PKT_SZ_8K /******************************************** Wlan Interfaces Defines ********************************************/ #define MAX_SSID_LEN 33 typedef enum { NO_SECURITY = 0, WEP_40 = 0x3, WEP_104 = 0x7, WPA_AES = 0x29, WPA_TKIP = 0x49, WPA_AES_TKIP = 0x69, /* Aes or Tkip */ WPA2_AES = 0x31, WPA2_TKIP = 0x51, WPA2_AES_TKIP = 0x71, /* Aes or Tkip */ WP2_WPA_AES = 0x39, /* ksong add 2013.5.21 it is a wired value */ WPA2_WPA_AES_TKIP = 0x79, /* ksong add 2013.5.13 */ } SECURITY_T; typedef enum { INFRASTRUCTURE = 1, INDEPENDENT = 2, ANY_BSS = 3 } BSSTYPE_T; typedef enum{ PASSIVE_SCAN = 0, ACTIVE_SCAN = 1, NUM_SCANTYPE } SCANTYPE_T; typedef enum{ OPEN_SYSTEM = 1, SHARED_KEY = 2, ANY = 3 } AUTHTYPE_T; typedef enum { NO_POWERSAVE = 0, MIN_FAST_PS = 1, MAX_FAST_PS = 2, MIN_PSPOLL_PS = 3, MAX_PSPOLL_PS = 4 } USER_PS_MODE_T; typedef enum{ SUCCESS_MLMESTATUS = 0, INVALID_MLMESTATUS = 1, TIMEOUT = 2, REFUSED = 3, TOMANY_REQ = 4, ALREADY_BSS = 5 } MLMESTATUS_T; typedef struct { int status; u8 bssid[6]; u16 asoc_req_len; u8 *asoc_req; u16 asoc_rsp_len; u8 *asoc_rsp; } nmi_wl_join_rsp_t; typedef struct { int chan_no; u8 bssid[6]; //u16 ssid_len; u8 ssid[33]; BSSTYPE_T bss_type; AUTHTYPE_T auth_type; SECURITY_T sec_type; u8 *key; u8 key_len, key_idx; u16 beacon_period; void *priv; void (*join_callback_fun)(void *, nmi_wl_join_rsp_t *); void (*disconnect_callback_fun)(void *); } nmi_wl_join_t; typedef struct { u32 bss_type; u32 chan_no; u32 beacon_period; u32 cap_info; u8 bssid[8]; u8 ssid[36]; s32 rssi; u32 dot11i_info; u32 ht_capable; u32 max_rate; //u8 *ie; //u16 ie_len; } nmi_wl_bss_t; typedef struct { void *priv; SCANTYPE_T scan_type; BSSTYPE_T bss_type; u32 ssid_len; u8 ssid[32]; u16 n_channel; u8 channel[14]; u32 active_scan_time; u32 passive_scan_time; unsigned char *ie; u32 ie_len; void (*scan_callback_fun)(void *, nmi_wl_bss_t *, int, int); } nmi_wl_scan_t; typedef struct { SECURITY_T sec_type; u8 bssid[6]; u8 key_index; int seq_len; u8 *seq; int key_len; u8 *key; int grp; } nmi_add_key_t; /* Atmel: 1-15-2015 */ typedef struct { u8 password[64]; u8 ssid[MAX_SSID_LEN]; u8 psk[40]; } pmk_cache_info_t; /******************************************** Platform Interface Defines ********************************************/ #define HOST_ID_ANDROID 0 #define HOST_ID_RTOS 1 typedef enum { TXQ_LOCK = 1, RXQ_LOCK, CFQ_LOCK, QRQ_LOCK, QSQ_LOCK, IO_LOCK, } LOCK_ID_T; typedef enum { HIF_WAIT = 1, RXQ_WAIT, SYNC_WAIT, } WAIT_ID_T; typedef struct { int type; union { struct { int external_intr_pin; int (*sdio_cmd52)(sdio_cmd52_t *); int (*sdio_cmd53)(sdio_cmd53_t *); } sdio; struct { #ifdef SPI_RW_SEPARATE int (*spi_io)(u8 *, u32, u8 *, u32); #else int (*spi_io)(u8 *, u8 *, u32); #endif } spi; } u; } nmi_wl_io_t; typedef struct { void (*print)(char *); void (*msleep)(u32); void *(*malloc)(u32); void (*free)(void *); void (*lock)(void *, LOCK_ID_T); void (*unlock)(void *, LOCK_ID_T); int (*wait)(void *, WAIT_ID_T, u32); void (*signal)(void *, WAIT_ID_T); u32 (*net_rx)(void *, u8 *, u32); void (*net_enable_irq)(void *); void (*net_tx_resume)(void *); void (*net_tx_stop)(void *); void (*net_link_up)(void *); void (*net_link_down)(void *); void (*power_up)(void *); void (*power_down)(void *); void (*rssi_fun)(s8); } nmi_wl_plat_func_t; typedef struct { void *priv; u32 dbgflag; u32 host_id; nmi_wl_plat_func_t fun; nmi_wl_io_t io; } nmi_wl_platform_t; typedef void (*free_txb_cb_fun_t)(void *, u8 *, u32); /* Atmel: 1-15-2015 */ typedef void (*query_cb_fun_t)(u32, u32); typedef struct { // int (*firmware_download)(u8 *, u32); int (*firmware_download)(const u8 *, u32);//Ryan int (*hw_start)(void); void (*hw_stop)(void); void (*host_trans)(void); void (*host_indicate_rx_isr)(void); void (*host_rx_trans)(void); void (*host_tx_trans)(void); int (*net_que_tx_frame)(void *, u8 *, u32, free_txb_cb_fun_t); void (*net_disp_rx_frame)(void); int (*wl_scan)(nmi_wl_scan_t *); int (*wl_join)(nmi_wl_join_t *); int (*wl_leave)(void); int (*wl_add_key)(nmi_add_key_t *); int (*wl_del_key)(nmi_add_key_t *); int (*wl_get_mac_addr)(void *); int (*wl_power_save_enable)(int); void (*wl_clean)(void); /* ksong add 2013.5.9 */ void (*wl_sleep)(u32); /* ksong add 2013-6-26 */ void (*wl_wakeup)(void); /* ksong add 2013-6-26 */ } nmi_wl_core_func_t; #if 1//Ryan typedef uint32 TCPIP_NETID_T;//Ryan struct nmi_wl_adp_t { // void *hif_event; // void *rxq_event; // void *sync_event; nmi_wl_core_func_t core; uint8 mac_address[6]; TCPIP_NETID_T net_id; int quit; uint32 hif_thread_id; uint32 rxq_thread_id ; uint8 disconnect_req; /* disconnect request */ uint8 already_on; /*avoid re-enter the init and deinit function. */ uint8 not_inform_app; /* sometimes we do not need to inform app that connection is fail */ NMI_WIFISUPP_SSID_CONFIG_T connect_info; /* Store the connect info */ NMI_STATE_T state; /* record the state */ void *poll_dhcp_timer; /* dhcp poll timer */ }; #endif extern int nmi_wl_core_init(nmi_wl_platform_t *, nmi_wl_core_func_t *, u8 *); /* Definitions for error constants. */ #define ERR_OK 0 /* No error, everything OK. */ #define ERR_MEM -1 /* Out of memory error. */ #define ERR_BUF -2 /* Buffer error. */ #define ERR_TIMEOUT -3 /* Timeout. */ #define ERR_RTE -4 /* Routing problem. */ #define ERR_INPROGRESS -5 /* Operation in progress */ #define ERR_VAL -6 /* Illegal value. */ #define ERR_WOULDBLOCK -7 /* Operation would block. */ #define ERR_USE -8 /* Address in use. */ #define ERR_ISCONN -9 /* Already connected. */ #define ERR_IS_FATAL(e) ((e) < ERR_ISCONN) #define ERR_ABRT -10 /* Connection aborted. */ #define ERR_RST -11 /* Connection reset. */ #define ERR_CLSD -12 /* Connection closed. */ #define ERR_CONN -13 /* Not connected. */ #define ERR_ARG -14 /* Illegal argument. */ #define ERR_IF -15 /* Low-level netif error */ #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__) typedef enum{ WIFI_SCAN_DONE = 1, WIFI_CONNECTED, WIFI_MAC_READY, WIFI_DISCONNECTED,//Tsungta }tenuWiFiEventType;//Ryan #endif