mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			422 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			422 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
| /* Copyright (c) 2018-2019 Sigmastar Technology Corp.
 | ||
|  All rights reserved.
 | ||
| 
 | ||
|   Unless otherwise stipulated in writing, any and all information contained
 | ||
|  herein regardless in any format shall remain the sole proprietary of
 | ||
|  Sigmastar Technology Corp. and be kept in strict confidence
 | ||
|  (<28><>Sigmastar Confidential Information<6F><6E>) by the recipient.
 | ||
|  Any unauthorized act including without limitation unauthorized disclosure,
 | ||
|  copying, use, reproduction, sale, distribution, modification, disassembling,
 | ||
|  reverse engineering and compiling of the contents of Sigmastar Confidential
 | ||
|  Information is unlawful and strictly prohibited. Sigmastar hereby reserves the
 | ||
|  rights to any and all damages, losses, costs and expenses resulting therefrom.
 | ||
| */
 | ||
| 
 | ||
| #ifndef _MI_WLAN_H_
 | ||
| #define _MI_WLAN_H_
 | ||
| #ifdef __cplusplus
 | ||
| extern "C" {
 | ||
| #endif
 | ||
| 
 | ||
| #include "mi_wlan_datatype.h"
 | ||
| 
 | ||
| #define WLAN_MAJOR_VERSION 1
 | ||
| #define WLAN_SUB_VERSION 0
 | ||
| #define MACRO_TO_STR(macro) #macro
 | ||
| #define WLAN_VERSION_STR(major_version,sub_version) ({char *tmp = sub_version/100 ? \
 | ||
|                                     "mi_wlan_version_" MACRO_TO_STR(major_version)"." MACRO_TO_STR(sub_version) : sub_version/10 ? \
 | ||
|                                     "mi_wlan_version_" MACRO_TO_STR(major_version)".0" MACRO_TO_STR(sub_version) : \
 | ||
|                                     "mi_wlan_version_" MACRO_TO_STR(major_version)".00" MACRO_TO_STR(sub_version);tmp;})
 | ||
| #define MI_WLAN_API_VERSION WLAN_VERSION_STR(DIVP_MAJOR_VERSION,DIVP_SUB_VERSION)
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| #define MI_WLAN_ERR_FAIL (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_FAILED))
 | ||
| #define MI_WLAN_ERR_INVALID_DEVID (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_INVALID_DEVID))
 | ||
| #define MI_WLAN_ERR_ILLEGAL_PARAM (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_ILLEGAL_PARAM))
 | ||
| #define MI_WLAN_ERR_NOT_SUPPORT (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_NOT_SUPPORT))
 | ||
| #define MI_WLAN_ERR_MOD_INITED (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_INITED))
 | ||
| #define MI_WLAN_ERR_MOD_NOT_INIT (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_NOT_INIT))
 | ||
| #define MI_WLAN_ERR_NOT_CONFIG (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_NOT_CONFIG))
 | ||
| #define MI_WLAN_ERR_INVAL_HANDLE (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_BADADDR))
 | ||
| #define MI_WLAN_ERR_NULL_PTR (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_NULL_PTR))
 | ||
| #define MI_WLAN_ERR_INITED (MI_DEF_ERR( E_MI_MODULE_ID_WLAN, E_MI_ERR_LEVEL_ERROR, E_MI_ERR_INITED))
 | ||
| 
 | ||
| /// WLAN max MAC len
 | ||
| #define MI_WLAN_MAX_MAC_LEN 32
 | ||
| /// WLAN max SSID len
 | ||
| #define MI_WLAN_MAX_SSID_LEN 128
 | ||
| /// WLAN max password len
 | ||
| #define MI_WLAN_MAX_PASSWD_LEN 40
 | ||
| /// WLAN max AP number
 | ||
| #define MI_WLAN_MAX_APINFO_NUM 64
 | ||
| /// WLAN max path len
 | ||
| #define MI_WLAN_MAX_FOLDERPATH_LEN 256
 | ||
| /// WLAN interface len
 | ||
| #define MI_MAX_INTERFACE_NAME 64
 | ||
| // WLAN BSSID len
 | ||
| #define MI_WLAN_BSSID_LEN 48
 | ||
| // WLAN MAX hosts AP connected
 | ||
| #define MI_WLAN_MAX_HOSTS 64
 | ||
| // WLAN MAX host name length
 | ||
| #define MI_WLAN_MAX_HOST_NAME_LEN 256
 | ||
| 
 | ||
| #define MI_RESULT MI_S32
 | ||
| 
 | ||
| // HANDLE indicates certain wifi connection
 | ||
| typedef  MI_S32 WLAN_HANDLE;
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| typedef enum
 | ||
| {
 | ||
|     /// WLAN module security key off
 | ||
|     E_MI_WLAN_SECURITY_NONE       = 1 << 0,
 | ||
|     /// WLAN module security key unknow
 | ||
|     E_MI_WLAN_SECURITY_UNKNOWTYPE = 1 << 1,
 | ||
|     /// WLAN module security key WEP
 | ||
|     E_MI_WLAN_SECURITY_WEP        = 1 << 2,
 | ||
|     /// WLAN module security key WPA
 | ||
|     E_MI_WLAN_SECURITY_WPA        = 1 << 3,
 | ||
|     /// WLAN module security key WPA2
 | ||
|     E_MI_WLAN_SECURITY_WPA2       = 1 << 4,
 | ||
|     /// WLAN module max
 | ||
|     E_MI_WLAN_SECURITY_MAX        = 0xff,
 | ||
| } MI_WLAN_Security_e;
 | ||
| 
 | ||
| 
 | ||
| typedef enum
 | ||
| {
 | ||
|     /// WLAN module encrypt type none
 | ||
|     E_MI_WLAN_ENCRYPT_NONE        = 1 << 0,
 | ||
|     /// WLAN module encrypt type unknown
 | ||
|     E_MI_WLAN_ENCRYPT_UNKNOWN     = 1 << 1,
 | ||
|     /// WLAN module encrypt type WEP
 | ||
|     E_MI_WLAN_ENCRYPT_WEP         = 1 << 2,
 | ||
|     /// WLAN module encrypt type TKIP
 | ||
|     E_MI_WLAN_ENCRYPT_TKIP        = 1 << 3,
 | ||
|     /// WLAN module encrypt type AES
 | ||
|     E_MI_WLAN_ENCRYPT_AES         = 1 << 4,
 | ||
|     /// WLAN module max
 | ||
|     E_MI_WLAN_ENCRYPT_MAX        = 0xff,
 | ||
| } MI_WLAN_Encrypt_e;
 | ||
| 
 | ||
| 
 | ||
| typedef enum
 | ||
| {
 | ||
|     /// WLAN network infrastructure type
 | ||
|     E_MI_WLAN_NETWORKTYPE_INFRA,
 | ||
|     /// WLAN network AP type
 | ||
|     E_MI_WLAN_NETWORKTYPE_AP,
 | ||
|     /// WLAN network AdHoc type
 | ||
|     E_MI_WLAN_NETWORKTYPE_ADHOC,
 | ||
|     /// WLAN network Monitor type
 | ||
|     E_MI_WLAN_NETWORKTYPE_MONITOR,
 | ||
|     /// WLAN network mode master
 | ||
|     E_MI_WLAN_NETWORKTYPE_MASTER,
 | ||
|     /// WLAN network mode slave
 | ||
|     E_MI_WLAN_NETWORKTYPE_SLAVE,
 | ||
|     /// WLAN param max
 | ||
|     E_MI_WLAN_NETWORKTYPE_MAX
 | ||
| } MI_WLAN_NetworkType_e;
 | ||
| 
 | ||
| 
 | ||
| typedef enum
 | ||
| {
 | ||
|     /// Authentication Suite PSK
 | ||
|     E_MI_WLAN_AUTH_SUITE_PSK,
 | ||
|     /// Authentication Suite unknown
 | ||
|     E_MI_WLAN_AUTH_SUITE_UNKNOWN,
 | ||
|     E_MI_WLAN_AUTH_SUITE_MAX
 | ||
| 
 | ||
| } MI_WLAN_Authentication_Suite_e;
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| typedef enum
 | ||
| {
 | ||
|     /**
 | ||
|      * WPA_DISCONNECTED - Disconnected state
 | ||
|      */
 | ||
|     WPA_DISCONNECTED,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_INTERFACE_DISABLED - Interface disabled
 | ||
|      */
 | ||
|     WPA_INTERFACE_DISABLED,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_INACTIVE - Inactive state (wpa_supplicant disabled)
 | ||
|      */
 | ||
|     WPA_INACTIVE,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_SCANNING - Scanning for a network
 | ||
|      */
 | ||
|     WPA_SCANNING,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_AUTHENTICATING - Trying to authenticate with a BSS/SSID
 | ||
|      */
 | ||
|     WPA_AUTHENTICATING,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_ASSOCIATING - Trying to associate with a BSS/SSID
 | ||
|      */
 | ||
|     WPA_ASSOCIATING,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_ASSOCIATED - Association completed
 | ||
|      */
 | ||
|     WPA_ASSOCIATED,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_4WAY_HANDSHAKE - WPA 4-Way Key Handshake in progress
 | ||
|      */
 | ||
|     WPA_4WAY_HANDSHAKE,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_GROUP_HANDSHAKE - WPA Group Key Handshake in progress
 | ||
|      */
 | ||
|     WPA_GROUP_HANDSHAKE,
 | ||
| 
 | ||
|     /**
 | ||
|      * WPA_COMPLETED - All authentication completed
 | ||
|      */
 | ||
|     WPA_COMPLETED
 | ||
| } MI_WLAN_WPAStatus_e;
 | ||
| 
 | ||
| 
 | ||
| /// WLAN init parameter
 | ||
| typedef struct MI_WLAN_InitParams_s
 | ||
| {
 | ||
|     /// json description file of wifi dongle
 | ||
|     MI_U8 au8JsonConfFilePath[MI_WLAN_MAX_FOLDERPATH_LEN];
 | ||
|     /// reserved
 | ||
|     MI_U64 u64Reserved;
 | ||
| } MI_WLAN_InitParams_t;
 | ||
| 
 | ||
| 
 | ||
| /// WLAN open parameter
 | ||
| typedef struct MI_WLAN_OpenParam_s
 | ||
| {
 | ||
|     // WLAN network type
 | ||
|     MI_WLAN_NetworkType_e eNetworkType;
 | ||
|     // reserved
 | ||
|     MI_BOOL bReserved;
 | ||
| } MI_WLAN_OpenParams_t;
 | ||
| 
 | ||
| 
 | ||
| /// WLAN connect info
 | ||
| typedef struct
 | ||
| {
 | ||
|     // WLan security mode
 | ||
|     MI_WLAN_Security_e eSecurity;
 | ||
|     // WLan SSID
 | ||
|     MI_U8 au8SSId[MI_WLAN_MAX_SSID_LEN];
 | ||
|     // WLan password
 | ||
|     MI_U8 au8Password[MI_WLAN_MAX_PASSWD_LEN];
 | ||
|     // WLAN connect overtime
 | ||
|     MI_U32 OverTimeMs;
 | ||
| } MI_WLAN_ConnectParam_t;
 | ||
| 
 | ||
| 
 | ||
| typedef struct
 | ||
| {
 | ||
|     MI_U8 curLVL;
 | ||
|     MI_U8 maxLVL;
 | ||
|     MI_S8 signalSTR;
 | ||
| } MI_WLAN_Quality_t;
 | ||
| 
 | ||
| 
 | ||
| typedef struct
 | ||
| {
 | ||
|     // WLAN Security mode
 | ||
|     MI_WLAN_Security_e eSecurity;
 | ||
|     // WLAN Encryption type
 | ||
|     MI_WLAN_Encrypt_e eGroupCipher;
 | ||
|     // WLAN Encryption type
 | ||
|     MI_WLAN_Encrypt_e ePairCipher;
 | ||
|     // WLAN authenticationb suite
 | ||
|     MI_WLAN_Authentication_Suite_e eAuthSuite;
 | ||
| } MI_WLAN_Cipher_t;
 | ||
| 
 | ||
| /// WLAN ap info
 | ||
| typedef struct MI_WLAN_APInfo_s
 | ||
| {
 | ||
|     // WLAN CELL ID
 | ||
|     MI_U16 u16CellId;
 | ||
|     // WLAN Frequency GHz
 | ||
|     MI_FLOAT fFrequency;
 | ||
|     // WLAN Bitrate Mb/s
 | ||
|     MI_FLOAT fBitRate;
 | ||
|     // WLAN Quality
 | ||
|     MI_WLAN_Quality_t stQuality;
 | ||
|     // WLAN Encryption key on/off
 | ||
|     MI_BOOL bEncryptKey;
 | ||
|     // WLAN SSID
 | ||
|     MI_U8 au8SSId[MI_WLAN_MAX_SSID_LEN];
 | ||
|     // WLAN Channel
 | ||
|     MI_U8 u8Channel;
 | ||
|     // WLAN MAC
 | ||
|     MI_U8 au8Mac[MI_WLAN_MAX_MAC_LEN];
 | ||
|     // WLAN Encryption type
 | ||
|     MI_WLAN_Encrypt_e eEncrypt;
 | ||
|     // WLAN AP type (Infrastructure / Ad-Hoc)
 | ||
|     MI_WLAN_NetworkType_e eMode;
 | ||
|     // WLAN cipher kit
 | ||
|     MI_WLAN_Cipher_t stCipher[2];
 | ||
| } MI_WLAN_APInfo_t;
 | ||
| 
 | ||
| /// WLAN ap info
 | ||
| typedef struct MI_WLAN_ScanParam_s
 | ||
| {
 | ||
|     // WLan set block mode
 | ||
|     MI_BOOL bBlock; //reserved
 | ||
| } MI_WLAN_ScanParam_t;
 | ||
| 
 | ||
| /// WLAN ap info
 | ||
| typedef struct MI_WLAN_ScanResult_s
 | ||
| {
 | ||
|     // WLan AP number
 | ||
|     MI_WLAN_APInfo_t stAPInfo[MI_WLAN_MAX_APINFO_NUM];
 | ||
|     MI_U8 u8APNumber;
 | ||
| } MI_WLAN_ScanResult_t;
 | ||
| 
 | ||
| 
 | ||
| typedef struct MI_WLAN_Status_sta_s
 | ||
| {
 | ||
|     MI_U8 bssid[MI_WLAN_BSSID_LEN];
 | ||
|     MI_U32 freq;
 | ||
|     MI_U8 ssid[MI_WLAN_MAX_SSID_LEN];
 | ||
|     MI_U16 id;
 | ||
|     MI_WLAN_NetworkType_e mode;
 | ||
|     MI_WLAN_Cipher_t stCipher;
 | ||
|     MI_U8 key_mgmt[12];
 | ||
|     MI_WLAN_WPAStatus_e state;
 | ||
|     MI_U8 address[MI_WLAN_BSSID_LEN];
 | ||
|     MI_U8 ip_address[16];
 | ||
|     MI_U32 channel;
 | ||
|     MI_U32 RSSI;
 | ||
|     MI_U8 Bandwidth[8];
 | ||
| } MI_WLAN_Status_sta_t;
 | ||
| 
 | ||
| typedef struct MI_WLAN_Status_host_s
 | ||
| {
 | ||
|     MI_U8 hostname[MI_WLAN_MAX_HOST_NAME_LEN];
 | ||
|     MI_U8 ipaddr[16];
 | ||
|     MI_U8 macaddr[18];
 | ||
|     MI_U64 connectedtime;
 | ||
| 
 | ||
| } MI_WLAN_Status_host_t;
 | ||
| 
 | ||
| typedef struct MI_WLAN_Status_ap_s
 | ||
| {
 | ||
|     MI_WLAN_Status_host_t astHosts[MI_WLAN_MAX_HOSTS];
 | ||
|     MI_U16 u16HostNum;
 | ||
| } MI_WLAN_Status_ap_t;
 | ||
| 
 | ||
| typedef union MI_WLAN_Status_s
 | ||
| {
 | ||
|     MI_WLAN_Status_sta_t stStaStatus;
 | ||
|     MI_WLAN_Status_ap_t stApStatus;
 | ||
| } MI_WLAN_Status_t;
 | ||
| 
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief setup wlan init parameter , parse wifi config file and internel component
 | ||
| /// @param[in] *pstInitParams
 | ||
| /// @return MI_SUCCESS:  success.
 | ||
| /// @return MI_WLAN_ERR_FAIL: init fail.
 | ||
| /// @return MI_WLAN_ERR_INITED: already inited.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_Init(MI_WLAN_InitParams_t *pstInitParams);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief do wlan deinit , deinit config file parser and internel component
 | ||
| /// @param none
 | ||
| /// @return MI_SUCCESS: success.
 | ||
| /// @return MI_WLAN_ERR_MOD_NOT_INIT: call MI_WLAN_Init first.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_DeInit(void);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief open wifi device
 | ||
| /// @param[in] *pstParam witch workmode wifi work on
 | ||
| /// @return MI_SUCCESS: success.
 | ||
| /// @return MI_WLAN_ERR_MOD_NOT_INIT: call MI_WLAN_Init first
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_Open(MI_WLAN_OpenParams_t *pstParam);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief close wifi device
 | ||
| /// @param none.
 | ||
| /// @return MI_SUCCESS: success
 | ||
| /// @return MI_WLAN_ERR_NOT_CONFIG: Process success.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_Close(void);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief connect wifi service
 | ||
| ///
 | ||
| /// infra mode : connect to certain wifi network
 | ||
| /// ap mode: start dns hdcp service and wait hosts to connect
 | ||
| /// @param[in/out] hWLan wlan handle.
 | ||
| /// (<0)indicates a new connection and will be assigned a sensible ID if connecton set up
 | ||
| /// (>0)indicates an set up connection
 | ||
| /// @param[in] *pstConnectParam :.
 | ||
| /// infra mode:contains nessesarry  information to establish a sta connection
 | ||
| /// @return MI_SUCCESS: connect success.
 | ||
| /// @return MI_WLAN_ERR_MOD_NOT_INIT: open wlan device first
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_Connect(WLAN_HANDLE *hWLan, MI_WLAN_ConnectParam_t *pstConnectParam);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief disconnect wlan
 | ||
| /// @param[in] hWLan wlan handle.
 | ||
| /// @return MI_SUCCESS: Process success.
 | ||
| /// @return MI_WLAN_ERR_NOT_CONFIG: set up a wlan connection first
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_Disconnect(WLAN_HANDLE hWLan);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief scan ap info
 | ||
| /// @param[in] *pstParam info param. //reserved
 | ||
| /// @param[out] *pstResult result.
 | ||
| /// @return MI_SUCCESS:  success.
 | ||
| /// @return MI_WLAN_ERR_NOT_CONFIG:  open wlan first
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_Scan(MI_WLAN_ScanParam_t *pstParam, MI_WLAN_ScanResult_t *pstResult);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief set wlan debug level
 | ||
| /// @param[in] eDgbLevel debug level.
 | ||
| /// @return MI_OK: Process success.
 | ||
| /// @return MI_ERR_FAILED: Process failed
 | ||
| //------------------------------------------------------------------------------
 | ||
| //MI_RESULT MI_WLAN_SetDebugLevel(MI_DBG_LEVEL_e eDgbLevel);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief get current wlan status
 | ||
| /// @param[in] the struct to store wlan status
 | ||
| /// @return MI_SUCCESS: Process success.
 | ||
| /// @return MI_WLAN_ERR_NOT_CONFIG: open wlan first
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_GetStatus(MI_WLAN_Status_t *status);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief get wlan chip version
 | ||
| /// @return MI_OK: Process success
 | ||
| /// @return MI_ERR_FAILED: Process failed
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_RESULT MI_WLAN_GetWlanChipVersion(MI_U8 *ChipVersion);
 | ||
| 
 | ||
| 
 | ||
| #ifdef __cplusplus
 | ||
| }
 | ||
| #endif
 | ||
| 
 | ||
| #endif
 |