NNN50 WIFI_API library

Dependents:   NNN50_CE_Test_UDP NNN50_linux_firmware NNN50_SoftAP_HelloWorld NNN50_BLEWIFISensor ... more

This is mbed compatible EthernetInterface lib exclude for Delta DFCM-NNN50 platform.

Additional information and examples can be found in mbed Handbook

Files at this revision

API Documentation at this revision

Comitter:
tsungta
Date:
Thu Jun 22 01:13:11 2017 +0000
Parent:
24:a588c7f472ba
Child:
26:9663a6d037b1
Commit message:
45:2792c00; Sync up with mbed-os-5.5.0; Refine coexistence mechanism to address BLE scan/connect issue when WIFI is enabled.; Fix some compile warning messages

Changed in this revision

EthernetInterface/Socket/socket_1.o Show diff for this revision Revisions of this file
EthernetInterface/Socket/tcpsocketconnection.o Show diff for this revision Revisions of this file
EthernetInterface/Socket/udpsocket_1.o Show diff for this revision Revisions of this file
EthernetInterface/ethernetinterface.o Show diff for this revision Revisions of this file
WIFIDevice.h Show annotated file Show diff for this revision Revisions of this file
wifi_host_driver/bus_wrapper/source/nm_bus_wrapper_mbed_platform.o Show diff for this revision Revisions of this file
wifi_host_driver/common/include/nm_debug.h Show annotated file Show diff for this revision Revisions of this file
wifi_host_driver/driver/include/m2m_types.h Show annotated file Show diff for this revision Revisions of this file
wifi_host_driver/socket/include/socket.h Show annotated file Show diff for this revision Revisions of this file
wifidevice.o Show annotated file Show diff for this revision Revisions of this file
Binary file EthernetInterface/Socket/socket_1.o has changed
Binary file EthernetInterface/Socket/tcpsocketconnection.o has changed
Binary file EthernetInterface/Socket/udpsocket_1.o has changed
Binary file EthernetInterface/ethernetinterface.o has changed
--- a/WIFIDevice.h	Mon Jun 19 17:40:26 2017 +0000
+++ b/WIFIDevice.h	Thu Jun 22 01:13:11 2017 +0000
@@ -64,7 +64,7 @@
   * \param channel range from 1 to 14 (default: (1))
   * \return 0 on success, a negative number on failure  
   */
-  int WIFIDevice::enableAccessPoint(char* SSID, char* PW, char* AP_ip = "192.168.1.1", uint8_t secType=M2M_WIFI_SEC_WEP, uint8_t channel=1);
+  int enableAccessPoint(char* SSID, char* PW, char* AP_ip = "192.168.1.1", uint8_t secType=M2M_WIFI_SEC_WEP, uint8_t channel=1);
 
   /** Erase a 4KB sector of embeeded flash.
   * Flash memory will be erased in groups of 4KB sector.
@@ -94,6 +94,7 @@
 };
 
 int enableCoexistance();
+void RF_Switch_WIFI_lock(void);
+void RF_Switch_WIFI_unlock(void);
 
 #endif /* WIFIDEVICE_H_ */
-
Binary file wifi_host_driver/bus_wrapper/source/nm_bus_wrapper_mbed_platform.o has changed
--- a/wifi_host_driver/common/include/nm_debug.h	Mon Jun 19 17:40:26 2017 +0000
+++ b/wifi_host_driver/common/include/nm_debug.h	Thu Jun 22 01:13:11 2017 +0000
@@ -42,6 +42,7 @@
 #ifndef _NM_DEBUG_H_
 #define _NM_DEBUG_H_
 
+#include "platform/mbed_error.h"
 #include "bsp/include/nm_bsp.h"
 //Tsungta	#include "bsp/include/nm_bsp_internal.h"
 
@@ -94,4 +95,3 @@
 /**@}*/
 #endif /* _NM_DEBUG_H_ */
 
-
--- a/wifi_host_driver/driver/include/m2m_types.h	Mon Jun 19 17:40:26 2017 +0000
+++ b/wifi_host_driver/driver/include/m2m_types.h	Thu Jun 22 01:13:11 2017 +0000
@@ -1,2139 +1,2138 @@
-/**
- *
- * \file
- *
- * \brief WINC Application Interface Internal Types.
- *
- * Copyright (c) 2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-
-#ifndef __M2M_WIFI_TYPES_H__
-#define __M2M_WIFI_TYPES_H__
-
-
-/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
-INCLUDES
-*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
-
-#ifndef	_BOOT_
-#ifndef _FIRMWARE_
-#include "common/include/nm_common.h"
-#else
-#include "m2m_common.h"
-#endif
-#endif
-
-
-/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
-MACROS
-*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
-/**@defgroup  WlanDefines Defines
- * @ingroup m2m_wifi
- */
-/**@{*/
-#define M2M_MAJOR_SHIFT (8)
-#define M2M_MINOR_SHIFT (4)
-#define M2M_PATCH_SHIFT (0)
-
-#define M2M_DRV_VERSION_SHIFT (16)
-#define M2M_FW_VERSION_SHIFT (0)
-
-#define M2M_GET_MAJOR(ver_info_hword) ((uint8)((ver_info_hword) >> M2M_MAJOR_SHIFT) & 0xff)
-#define M2M_GET_MINOR(ver_info_hword) ((uint8)((ver_info_hword) >> M2M_MINOR_SHIFT) & 0x0f)
-#define M2M_GET_PATCH(ver_info_hword) ((uint8)((ver_info_hword) >> M2M_PATCH_SHIFT) & 0x0f)
-
-#define M2M_GET_FW_VER(ver_info_word)  ((uint16) ((ver_info_word) >> M2M_FW_VERSION_SHIFT))
-#define M2M_GET_DRV_VER(ver_info_word) ((uint16) ((ver_info_word) >> M2M_DRV_VERSION_SHIFT))
-
-#define M2M_GET_DRV_MAJOR(ver_info_word) M2M_GET_MAJOR(M2M_GET_DRV_VER(ver_info_word))
-#define M2M_GET_DRV_MINOR(ver_info_word) M2M_GET_MINOR(M2M_GET_DRV_VER(ver_info_word))
-#define M2M_GET_DRV_PATCH(ver_info_word) M2M_GET_PATCH(M2M_GET_DRV_VER(ver_info_word))
-
-#define M2M_GET_FW_MAJOR(ver_info_word) M2M_GET_MAJOR(M2M_GET_FW_VER(ver_info_word))
-#define M2M_GET_FW_MINOR(ver_info_word) M2M_GET_MINOR(M2M_GET_FW_VER(ver_info_word))
-#define M2M_GET_FW_PATCH(ver_info_word) M2M_GET_PATCH(M2M_GET_FW_VER(ver_info_word))
-
-#define M2M_MAKE_VERSION(major, minor, patch) ( \
-	((uint16)((major)  & 0xff)  << M2M_MAJOR_SHIFT) | \
-	((uint16)((minor)  & 0x0f)  << M2M_MINOR_SHIFT) | \
-	((uint16)((patch)  & 0x0f)  << M2M_PATCH_SHIFT))
-
-#define M2M_MAKE_VERSION_INFO(fw_major, fw_minor, fw_patch, drv_major, drv_minor, drv_patch) \
-	( \
-	( ((uint32)M2M_MAKE_VERSION((fw_major),  (fw_minor),  (fw_patch)))  << M2M_FW_VERSION_SHIFT) | \
-	( ((uint32)M2M_MAKE_VERSION((drv_major), (drv_minor), (drv_patch))) << M2M_DRV_VERSION_SHIFT))
-#define REL_19_4_6_VER			M2M_MAKE_VERSION_INFO(19,4,6,19,3,0)
-#define REL_19_4_5_VER			M2M_MAKE_VERSION_INFO(19,4,5,19,3,0)
-#define REL_19_4_4_VER			M2M_MAKE_VERSION_INFO(19,4,4,19,3,0)
-#define REL_19_4_3_VER			M2M_MAKE_VERSION_INFO(19,4,3,19,3,0)
-#define REL_19_4_2_VER			M2M_MAKE_VERSION_INFO(19,4,2,19,3,0)
-#define REL_19_4_1_VER			M2M_MAKE_VERSION_INFO(19,4,1,19,3,0)
-#define REL_19_4_0_VER			M2M_MAKE_VERSION_INFO(19,4,0,19,3,0)
-#define REL_19_3_1_VER			M2M_MAKE_VERSION_INFO(19,3,1,19,3,0)
-#define REL_19_3_0_VER			M2M_MAKE_VERSION_INFO(19,3,0,19,3,0)
-#define REL_19_2_2_VER			M2M_MAKE_VERSION_INFO(19,2,2,19,2,0)
-#define REL_19_2_1_VER			M2M_MAKE_VERSION_INFO(19,2,1,19,2,0)
-#define REL_19_2_0_VER			M2M_MAKE_VERSION_INFO(19,2,0,19,2,0)
-#define REL_19_1_0_VER			M2M_MAKE_VERSION_INFO(19,1,0,18,2,0)
-#define REL_19_0_0_VER			M2M_MAKE_VERSION_INFO(19,0,0,18,1,1)
-
-/*======*======*======*======*
-		FIRMWARE VERSION NO INFO
- *======*======*======*======*/
-
-#define M2M_FIRMWARE_VERSION_MAJOR_NO 					(19)
-/*!< Firmware Major release version number.
-*/
-
-
-#define M2M_FIRMWARE_VERSION_MINOR_NO					(4)
-/*!< Firmware Minor release version number.
-*/
-
-#define M2M_FIRMWARE_VERSION_PATCH_NO					(7)
-/*!< Firmware patch release version number.
-*/
-
-/*======*======*======*======*
-  SUPPORTED DRIVER VERSION NO INFO
- *======*======*======*======*/
-
-#define M2M_DRIVER_VERSION_MAJOR_NO 					(19)
-/*!< Driver Major release version number.
-*/
-
-
-#define M2M_DRIVER_VERSION_MINOR_NO						(3)
-/*!< Driver Minor release version number.
-*/
-
-#define M2M_DRIVER_VERSION_PATCH_NO						(0)
-/*!< Driver patch release version number.
-*/
-
-
-#if !defined(M2M_FIRMWARE_VERSION_MAJOR_NO) || !defined(M2M_FIRMWARE_VERSION_MINOR_NO)
-#error Undefined version number
-#endif
-
-#define M2M_BUFFER_MAX_SIZE								(1600UL - 4)
-/*!< Maximum size for the shared packet buffer.
- */
-
-
-#define M2M_MAC_ADDRES_LEN                               6
-/*!< The size fo 802 MAC address.
- */
-
-#define M2M_ETHERNET_HDR_OFFSET							34
-/*!< The offset of the Ethernet header within the WLAN Tx Buffer.
- */
-
-
-#define M2M_ETHERNET_HDR_LEN							14
-/*!< Length of the Etherenet header in bytes.
-*/
-
-
-#define M2M_MAX_SSID_LEN 								33
-/*!< Maximum size for the Wi-Fi SSID including the NULL termination.
- */
-
-
-#define M2M_MAX_PSK_LEN           						65
-/*!< Maximum size for the WPA PSK including the NULL termination.
- */
-
-
-#define M2M_DEVICE_NAME_MAX								48
-/*!< Maximum Size for the device name including the NULL termination.
- */
-
-
-#define M2M_LISTEN_INTERVAL 							1
-/*!< The STA uses the Listen Interval parameter to indicate to the AP how
-	many beacon intervals it shall sleep before it retrieves the queued frames
-	from the AP. 
-*/
-
-#define MAX_HIDDEN_SITES 								4
-/*!<
-	max number of hidden SSID suuported by scan request
-*/
-
-
-#define M2M_1X_USR_NAME_MAX								21
-/*!< The maximum size of the user name including the NULL termination.
-	It is used for RADIUS authentication in case of connecting the device to
-	an AP secured with WPA-Enterprise.
-*/
-
-
-#define M2M_1X_PWD_MAX									41
-/*!< The maximum size of the password including the NULL termination.
-	It is used for RADIUS authentication in case of connecting the device to
-	an AP secured with WPA-Enterprise.
-*/
-
-#define M2M_CUST_IE_LEN_MAX								252
-/*!< The maximum size of IE (Information Element).
-*/
-
-#define PWR_DEFAULT                                        PWR_HIGH
-/*********************
- *
- * WIFI GROUP requests
- */
-
-#define M2M_CONFIG_CMD_BASE									1
-/*!< The base value of all the host configuration commands opcodes.
-*/
-#define M2M_STA_CMD_BASE									40
-/*!< The base value of all the station mode host commands opcodes.
-*/
-#define M2M_AP_CMD_BASE										70
-/*!< The base value of all the Access Point mode host commands opcodes.
-*/
-#define M2M_P2P_CMD_BASE									90
-/*!< The base value of all the P2P mode host commands opcodes.
-*/
-#define M2M_SERVER_CMD_BASE									100
-/*!< The base value of all the power save mode host commands codes.
-*/
-/**********************
- * OTA GROUP requests
- */
-#define M2M_OTA_CMD_BASE									100
-/*!< The base value of all the OTA mode host commands opcodes.
- * The OTA Have special group so can extended from 1-M2M_MAX_GRP_NUM_REQ
-*/
-/***********************
- *
- * CRYPTO group requests
- */
-#define M2M_CRYPTO_CMD_BASE									1
-/*!< The base value of all the crypto mode host commands opcodes.
- * The crypto Have special group so can extended from 1-M2M_MAX_GRP_NUM_REQ
-*/
-
-#define M2M_MAX_GRP_NUM_REQ									(127)
-/*!< max number of request in one group equal to 127 as the last bit reserved for config or data pkt
-*/
-
-#define WEP_40_KEY_STRING_SIZE 							((uint8)10)
-/*!< Indicate the wep key size in bytes for 40 bit string passphrase.
-*/
-
-#define WEP_104_KEY_STRING_SIZE 						((uint8)26)
-/*!< Indicate the wep key size in bytes for 104 bit string passphrase.
-*/
-#define WEP_KEY_MAX_INDEX								((uint8)4)
-/*!< Indicate the max key index value for WEP authentication
-*/
-#define M2M_SHA256_CONTEXT_BUFF_LEN							(128)
-/*!< sha256 context size
-*/
-#define M2M_SCAN_DEFAULT_NUM_SLOTS							(2)
-/*!< The default. number of scan slots performed by the WINC board.
-*/
-#define M2M_SCAN_DEFAULT_SLOT_TIME							(30)
-/*!< The default. duration in miliseconds of a scan slots performed by the WINC board.
-*/
-#define M2M_SCAN_DEFAULT_NUM_PROBE							(2)
-/*!< The default. number of scan slots performed by the WINC board.
-*/
-
-
-/*======*======*======*======*
-	CONNECTION ERROR DEFINITIONS
- *======*======*======*======*/
-typedef enum { 		
-	M2M_DEFAULT_CONN_INPROGRESS = ((sint8)-23),  		
-	/*!<
-	A failure that indicates that a default connection or forced connection is in progress
-	*/
-	M2M_DEFAULT_CONN_FAIL,				
-	/*!<
-	A failure response that indicates that the winc failed to connect to the cached network
-	*/
-	 M2M_DEFAULT_CONN_SCAN_MISMATCH,	 													
-	/*!<
-	A failure response that indicates that no one of the cached networks 
-	was found in the scan results, as a result to the function call m2m_default_connect.
-	*/
-	M2M_DEFAULT_CONN_EMPTY_LIST
-	/*!<
-	A failure response that indicates an empty network list as 
-	a result to the function call m2m_default_connect.
-	*/
-
-}tenuM2mDefaultConnErrcode;
-
-
-
-
-/*======*======*======*======*
-	OTA DEFINITIONS
- *======*======*======*======*/
- 
-#define OTA_STATUS_VALID					(0x12526285)
-/*!< 
-	Magic value updated in the Control structure in case of ROLLACK image Valid
-*/
-#define OTA_STATUS_INVALID					(0x23987718)
-/*!< 
-	Magic value updated in the Control structure in case of ROLLACK image InValid
-*/
-#define OTA_MAGIC_VALUE						(0x1ABCDEF9)
-/*!< 
-	Magic value set at the beginning of the OTA image header
-*/
-
-#define OTA_FORMAT_VER_0					(0)	/*Till 19.2.2 format*/
-#define OTA_FORMAT_VER_1					(1) /*starting from 19.3.0 CRC is used and sequence number is used*/
-/*!<
-	Control structure format version
-*/
-#define OTA_SHA256_DIGEST_SIZE 				(32)
-/*!< 
-	Sha256 digest size in the OTA image, 
-	the sha256 digest is set at the beginning of image before the OTA header 
-*/
-
-#define OTA_SUCCESS 						(0)
-/*!<
-	OTA Success status 
-*/
-#define OTA_ERR_WORKING_IMAGE_LOAD_FAIL		((sint8)-1)
-/*!<
-	Failure to load the firmware image
-*/
-#define OTA_ERR_INVAILD_CONTROL_SEC			((sint8)-2)
-/*!<
-	Control structure is being corrupted   
-*/
-#define M2M_ERR_OTA_SWITCH_FAIL     		((sint8)-3)
-/*!<
-	switching to the updated image failed as may be the image is invalid 
-*/
-#define M2M_ERR_OTA_START_UPDATE_FAIL     	((sint8)-4)
-/*!<
-	OTA update fail due to multiple reasons 
-	- Connection failure
-	- Image integrity fail  
-	
-*/
-#define M2M_ERR_OTA_ROLLBACK_FAIL     		((sint8)-5)
-/*!<
-	Roll-back failed due to Roll-back image is not valid 
-*/
-#define M2M_ERR_OTA_INVAILD_FLASH_SIZE     	((sint8)-6)
-/*!<
-	The OTA Support at least 4MB flash size, if the above error will appear if the current flash is less than 4M
-*/
-#define M2M_ERR_OTA_INVAILD_ARG		     	((sint8)-7)
-/*!<
-	Invalid argument in any OTA Function
-*/
-/**@}*/
-
-/**
-* @addtogroup WlanEnums Enumerations and Typedefs
-* @ingroup m2m_wifi
-*/
- /**@{*/ 
-
-/*!
-@enum	\
-	tenuM2mConnChangedErrcode
-	
-@brief
-	
-*/
-typedef enum {
-	 M2M_ERR_SCAN_FAIL = ((uint8)1),
-	/*!< Indicate that the WINC board has failed to perform the scan operation.
-	*/
-	 M2M_ERR_JOIN_FAIL,	 								
-	/*!< Indicate that the WINC board has failed to join the BSS .
-	*/
-	 M2M_ERR_AUTH_FAIL, 									
-	/*!< Indicate that the WINC board has failed to authenticate with the AP.
-	*/
-	 M2M_ERR_ASSOC_FAIL,
-	/*!< Indicate that the WINC board has failed to associate with the AP.
-	*/
-	 M2M_ERR_CONN_INPROGRESS,
-	 /*!< Indicate that the WINC board has another connection request in progress.
-	*/
-}tenuM2mConnChangedErrcode;
-/*!
-@enum	\
-	tenuM2mWepKeyIndex
-	
-@brief
-	
-*/
-typedef enum {
-	M2M_WIFI_WEP_KEY_INDEX_1 = ((uint8) 1),
-	M2M_WIFI_WEP_KEY_INDEX_2,
-	M2M_WIFI_WEP_KEY_INDEX_3,
-	M2M_WIFI_WEP_KEY_INDEX_4,
-	/*!< Index for WEP key Authentication
-	*/
-}tenuM2mWepKeyIndex;
-
-/*!
-@enum	\
-	tenuM2mPwrMode
-	
-@brief
-	
-*/
-typedef enum {
-	PWR_AUTO = ((uint8) 1),
-	/*!< FW will decide the best power mode to use internally. */
-	PWR_LOW1,
-	/*low power mode #1*/
-	PWR_LOW2,
-	/*low power mode #2*/
-	PWR_HIGH,
-	/* high power mode*/
-}tenuM2mPwrMode;
-
-/*!
-@struct	\	
-	tstrM2mPwrState
-
-@brief
-	Power Mode
-*/
-typedef struct {
-	uint8	u8PwrMode; 
-	/*!< power Save Mode
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mPwrMode;
-/*!
-@enum	\
-	tenuM2mTxPwrLevel
-	
-@brief
-	
-*/
-typedef enum {
-	TX_PWR_HIGH = ((uint8) 1),
-	/*!< PPA Gain 6dbm	PA Gain 18dbm */
-	TX_PWR_MED,
-	/*!< PPA Gain 6dbm	PA Gain 12dbm */
-	TX_PWR_LOW,
-	/*!< PPA Gain 6dbm	PA Gain 6dbm */
-}tenuM2mTxPwrLevel;
-
-/*!
-@struct	\	
-	tstrM2mTxPwrLevel
-
-@brief
-	Tx power level 
-*/
-typedef struct {
-	uint8	u8TxPwrLevel; 
-	/*!< Tx power level
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mTxPwrLevel;
-
-/*!
-@struct	\	
-	tstrM2mEnableLogs
-
-@brief
-	Enable Firmware logs
-*/
-typedef struct {
-	uint8	u8Enable; 
-	/*!< Enable/Disable firmware logs
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mEnableLogs;
-
-/*!
-@struct	\	
-	tstrM2mBatteryVoltage
-
-@brief
-	Battery Voltage
-*/
-typedef struct {
-	//Note: on SAMD D21 the size of double is 8 Bytes
-	uint16	u16BattVolt; 
-	/*!< Battery Voltage
-	*/
-	uint8	__PAD16__[2];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mBatteryVoltage;
-
-/*!
-@enum	\
-	tenuM2mReqGroup
-
-@brief
-*/
-typedef enum{
-	M2M_REQ_GROUP_MAIN = 0,
-	M2M_REQ_GROUP_WIFI,
-	M2M_REQ_GROUP_IP,
-	M2M_REQ_GROUP_HIF,
-	M2M_REQ_GROUP_OTA,
-	M2M_REQ_GROUP_SSL,
-	M2M_REQ_GROUP_CRYPTO,
-	M2M_REQ_GROUP_SIGMA,
-}tenuM2mReqGroup;
-
-/*!
-@enum	\
-	tenuM2mReqpkt
-
-@brief
-*/
-typedef enum{
-	M2M_REQ_CONFIG_PKT,
-	M2M_REQ_DATA_PKT = 0x80 /*BIT7*/
-}tenuM2mReqpkt;
-/*!
-@enum	\
-	tenuM2mConfigCmd
-
-@brief
-	This enum contains all the host commands used to configure the WINC board.
-
-*/
-typedef enum {
-	M2M_WIFI_REQ_RESTART = M2M_CONFIG_CMD_BASE,
-	/*!<
-		Restart the WINC MAC layer, it's doesn't restart the IP layer.
-	*/
-	M2M_WIFI_REQ_SET_MAC_ADDRESS,
-	/*!<
-		Set the WINC mac address (not possible for production effused boards).
-	*/
-	M2M_WIFI_REQ_CURRENT_RSSI,
-	/*!<
-		Request the current connected AP RSSI.
-	*/
-	M2M_WIFI_RESP_CURRENT_RSSI,
-	/*!<
-		Response to M2M_WIFI_REQ_CURRENT_RSSI with the RSSI value.
-	*/
-	M2M_WIFI_REQ_GET_CONN_INFO,
-	/*!< Request connection information command.
-	*/
-	M2M_WIFI_RESP_CONN_INFO,
-
-	/*!< Connect with default AP response.
-	*/
-	M2M_WIFI_REQ_SET_DEVICE_NAME,
-	/*!<
-		Set the WINC device name property.
-	*/
-	M2M_WIFI_REQ_START_PROVISION_MODE,
-	/*!<
-		Start the provisioning mode for the M2M Device.
-	*/
-	M2M_WIFI_RESP_PROVISION_INFO,
-	/*!<
-		Send the provisioning information to the host.
-	*/
-	M2M_WIFI_REQ_STOP_PROVISION_MODE,
-	/*!<
-		Stop the current running provision mode.
-	*/
-	M2M_WIFI_REQ_SET_SYS_TIME,
-	/*!<
-		Set time of day from host.
-	*/
-	M2M_WIFI_REQ_ENABLE_SNTP_CLIENT,
-	/*!<
-		Enable the simple network time protocol to get the
-		time from the Internet. this is required for security purposes.
-	*/
-	M2M_WIFI_REQ_DISABLE_SNTP_CLIENT,
-	/*!<
-		Disable the simple network time protocol for applications that
-		do not need it.
-	*/
-	M2M_WIFI_RESP_MEMORY_RECOVER,
-	/*!<
-	 * Reserved for debuging
-	 * */
-	M2M_WIFI_REQ_CUST_INFO_ELEMENT,
-	/*!< Add Custom ELement to Beacon Managament Frame.
-	*/
-	M2M_WIFI_REQ_SCAN,
-	/*!< Request scan command.
-	*/
-	M2M_WIFI_RESP_SCAN_DONE,
-	/*!< Scan complete notification response.
-	*/
-	M2M_WIFI_REQ_SCAN_RESULT,
-	/*!< Request Scan results command.
-	*/
-	M2M_WIFI_RESP_SCAN_RESULT,
-	/*!< Request Scan results resopnse.
-	*/
-	M2M_WIFI_REQ_SET_SCAN_OPTION,
-	/*!< Set Scan options "slot time, slot number .. etc" .
-	*/
-	M2M_WIFI_REQ_SET_SCAN_REGION,
-	/*!< Set scan region.
-	*/
-	M2M_WIFI_REQ_SET_POWER_PROFILE,
-	/*!< The API shall set power mode to one of 3 modes
-	*/
-	M2M_WIFI_REQ_SET_TX_POWER,
-	/*!<  API to set TX power. 
-	*/
-	M2M_WIFI_REQ_SET_BATTERY_VOLTAGE,
-	/*!<  API to set Battery Voltage. 
-	*/
-	M2M_WIFI_REQ_SET_ENABLE_LOGS,
-	/*!<  API to set Battery Voltage. 
-	*/
-	M2M_WIFI_REQ_GET_SYS_TIME,
-	/*!<
-		REQ GET time of day from WINC.
-	*/
-	M2M_WIFI_RESP_GET_SYS_TIME,
-	/*!<
-		RESP time of day from host.
-	*/
-	M2M_WIFI_REQ_SEND_ETHERNET_PACKET,
-	/*!< Send Ethernet packet in bypass mode.
-	*/
-	M2M_WIFI_RESP_ETHERNET_RX_PACKET,
-	/*!< Receive Ethernet packet in bypass mode.
-	*/	
-	M2M_WIFI_REQ_SET_MAC_MCAST,
-	/*!< Set the WINC multicast filters.
-	*/
-	M2M_WIFI_REQ_GET_PRNG,
-	/*!< Request PRNG.
-	*/
-	M2M_WIFI_RESP_GET_PRNG,
-	/*!< Response for PRNG.
-	*/
-	M2M_WIFI_REQ_SCAN_SSID_LIST,
-	/*!< Request scan with list of hidden SSID plus the broadcast scan.
-	*/
-	M2M_WIFI_MAX_CONFIG_ALL,
-}tenuM2mConfigCmd;
-
-/*!
-@enum	\
-	tenuM2mStaCmd
-	
-@brief
-	This enum contains all the WINC commands while in Station mode.
-*/
-typedef enum {
-	M2M_WIFI_REQ_CONNECT = M2M_STA_CMD_BASE,
-	/*!< Connect with AP command.
-	*/
-	M2M_WIFI_REQ_DEFAULT_CONNECT,
-	/*!< Connect with default AP command.
-	*/
-	M2M_WIFI_RESP_DEFAULT_CONNECT,
-	/*!< Request connection information response.
-	*/
-	M2M_WIFI_REQ_DISCONNECT,
-	/*!< Request to disconnect from AP command.
-	*/
-	M2M_WIFI_RESP_CON_STATE_CHANGED,
-	/*!< Connection state changed response.
-	*/
-	M2M_WIFI_REQ_SLEEP,
-	/*!< Set PS mode command.
-	*/
-	M2M_WIFI_REQ_WPS_SCAN,
-	/*!< Request WPS scan command.
-	*/
-	M2M_WIFI_REQ_WPS,
-	/*!< Request WPS start command.
-	*/
-	M2M_WIFI_REQ_START_WPS,
-	/*!< This command is for internal use by the WINC and 
-		should not be used by the host driver.
-	*/
-	M2M_WIFI_REQ_DISABLE_WPS,
-	/*!< Request to disable WPS command.
-	*/
-	M2M_WIFI_REQ_DHCP_CONF,
-	/*!< Response indicating that IP address was obtained.
-	*/
-	M2M_WIFI_RESP_IP_CONFIGURED,
-	/*!< This command is for internal use by the WINC and 
-		should not be used by the host driver.
-	*/
-	M2M_WIFI_RESP_IP_CONFLICT,
-	/*!< Response indicating a conflict in obtained IP address.
-		The user should re attempt the DHCP request.
-	*/
-	M2M_WIFI_REQ_ENABLE_MONITORING,
-	/*!< Request to enable monitor mode  command.
-	*/
-	M2M_WIFI_REQ_DISABLE_MONITORING,
-	/*!< Request to disable monitor mode  command.
-	*/
-	M2M_WIFI_RESP_WIFI_RX_PACKET,
-	/*!< Indicate that a packet was received in monitor mode.
-	*/
-	M2M_WIFI_REQ_SEND_WIFI_PACKET,
-	/*!< Send packet in monitor mode.
-	*/
-	M2M_WIFI_REQ_LSN_INT,
-	/*!< Set WiFi listen interval.
-	*/
-	M2M_WIFI_REQ_DOZE,
-	/*!< Used to force the WINC to sleep in manual PS mode.
-	*/
-	M2M_WIFI_MAX_STA_ALL,
-} tenuM2mStaCmd;
-
-/*!
-@enum	\
-	tenuM2mApCmd
-
-@brief
-	This enum contains all the WINC commands while in AP mode.
-*/
-typedef enum {
-	M2M_WIFI_REQ_ENABLE_AP = M2M_AP_CMD_BASE,
-	/*!< Enable AP mode command.
-	*/
-	M2M_WIFI_REQ_DISABLE_AP,
-	/*!< Disable AP mode command.
-	*/
-	M2M_WIFI_MAX_AP_ALL,
-}tenuM2mApCmd;
-
-/*!
-@enum	\
-	tenuM2mP2pCmd
-
-@brief
-	This enum contains all the WINC commands while in P2P mode.
-*/
-typedef enum {
-	M2M_WIFI_REQ_P2P_INT_CONNECT = M2M_P2P_CMD_BASE,
-	/*!< This command is for internal use by the WINC and 
-		should not be used by the host driver.
-	*/
-	M2M_WIFI_REQ_ENABLE_P2P,
-	/*!< Enable P2P mode command.
-	*/
-	M2M_WIFI_REQ_DISABLE_P2P,
-	/*!< Disable P2P mode command.
-	*/
-	M2M_WIFI_REQ_P2P_REPOST,
-	/*!< This command is for internal use by the WINC and 
-		should not be used by the host driver.
-	*/
-	M2M_WIFI_MAX_P2P_ALL,
-}tenuM2mP2pCmd;
-
-
-
-/*!
-@enum	\
-	tenuM2mServerCmd
-
-@brief
-	This enum contains all the WINC commands while in PS mode.
-	These command are currently not supported.
-*/
-typedef enum {
-	M2M_WIFI_REQ_CLIENT_CTRL = M2M_SERVER_CMD_BASE,
-	M2M_WIFI_RESP_CLIENT_INFO,
-	M2M_WIFI_REQ_SERVER_INIT,
-	M2M_WIFI_MAX_SERVER_ALL
-}tenuM2mServerCmd;
-
-
-
-/*!
-@enum	\
-	tenuM2mOtaCmd
-	
-@brief
-
-*/
-typedef enum {
-	M2M_OTA_REQ_NOTIF_SET_URL = M2M_OTA_CMD_BASE,
-	M2M_OTA_REQ_NOTIF_CHECK_FOR_UPDATE,
-	M2M_OTA_REQ_NOTIF_SCHED,
-	M2M_OTA_REQ_START_UPDATE,
-	M2M_OTA_REQ_SWITCH_FIRMWARE,
-	M2M_OTA_REQ_ROLLBACK,
-	M2M_OTA_RESP_NOTIF_UPDATE_INFO,
-	M2M_OTA_RESP_UPDATE_STATUS,
-	M2M_OTA_REQ_TEST,
-	M2M_OTA_MAX_ALL,
-}tenuM2mOtaCmd;
-
-/*!
-@enum	\
-	tenuM2mCryptoCmd
-
-@brief
-
-*/
-typedef enum {
-	M2M_CRYPTO_REQ_SHA256_INIT = M2M_CRYPTO_CMD_BASE,
-	M2M_CRYPTO_RESP_SHA256_INIT,
-	M2M_CRYPTO_REQ_SHA256_UPDATE,
-	M2M_CRYPTO_RESP_SHA256_UPDATE,
-	M2M_CRYPTO_REQ_SHA256_FINSIH,
-	M2M_CRYPTO_RESP_SHA256_FINSIH,
-	M2M_CRYPTO_REQ_RSA_SIGN_GEN,
-	M2M_CRYPTO_RESP_RSA_SIGN_GEN,
-	M2M_CRYPTO_REQ_RSA_SIGN_VERIFY,
-	M2M_CRYPTO_RESP_RSA_SIGN_VERIFY,
-	M2M_CRYPTO_MAX_ALL,
-}tenuM2mCryptoCmd;
-
-/*!
-@enum	\
-	tenuM2mIpCmd
-
-@brief
-
-*/
-typedef enum {
-	/* Request IDs corresponding to the IP GROUP. */
-	M2M_IP_REQ_STATIC_IP_CONF = ((uint8) 10),
-	M2M_IP_REQ_ENABLE_DHCP,
-	M2M_IP_REQ_DISABLE_DHCP
-} tenuM2mIpCmd;
-
-/*!
-@enum	\
-	tenuM2mSigmaCmd
-	
-@brief
-
-*/
-typedef enum {
-	/* Request IDs corresponding to the IP GROUP. */
-	M2M_SIGMA_ENABLE = ((uint8) 3),
-	M2M_SIGMA_TA_START,
-	M2M_SIGMA_TA_STATS,
-	M2M_SIGMA_TA_RECEIVE_STOP,
-	M2M_SIGMA_ICMP_ARP,
-	M2M_SIGMA_ICMP_RX,
-	M2M_SIGMA_ICMP_TX,
-	M2M_SIGMA_UDP_TX,
-	M2M_SIGMA_UDP_TX_DEFER,
-	M2M_SIGMA_SECURITY_POLICY,
-	M2M_SIGMA_SET_SYSTIME
-} tenuM2mSigmaCmd;
-
-
-/*!
-@enum	\
-	tenuM2mConnState
-
-@brief
-	Wi-Fi Connection State.
-*/
-typedef enum {
-	M2M_WIFI_DISCONNECTED = 0,
-	/*!< Wi-Fi state is disconnected.
-	*/
-	M2M_WIFI_CONNECTED,
-	/*!< Wi-Fi state is connected.
-	*/
-	M2M_WIFI_UNDEF = 0xff
-	/*!< Undefined Wi-Fi State.
-	*/
-}tenuM2mConnState;
-
-/*!
-@enum	\
-	tenuM2mSecType
-
-@brief
-	Wi-Fi Supported Security types.
-*/
-typedef enum {
-	M2M_WIFI_SEC_INVALID = 0,
-	/*!< Invalid security type.
-	*/
-	M2M_WIFI_SEC_OPEN,
-	/*!< Wi-Fi network is not secured.
-	*/
-	M2M_WIFI_SEC_WPA_PSK,
-	/*!< Wi-Fi network is secured with WPA/WPA2 personal(PSK).
-	*/
-	M2M_WIFI_SEC_WEP,
-	/*!< Security type WEP (40 or 104) OPEN OR SHARED.
-	*/
-	M2M_WIFI_SEC_802_1X
-	/*!< Wi-Fi network is secured with WPA/WPA2 Enterprise.IEEE802.1x user-name/password authentication.
-	 */
-}tenuM2mSecType;
-
-
-/*!
-@enum	\
-	tenuM2mSecType
-
-@brief
-	Wi-Fi Supported SSID types.
-*/
-typedef enum {
-	SSID_MODE_VISIBLE = 0,
-	/*!< SSID is visible to others.
-	*/
-	SSID_MODE_HIDDEN
-	/*!< SSID is hidden.
-	*/
-}tenuM2mSsidMode;
-
-/*!
-@enum	\
-	tenuM2mScanCh
-
-@brief
-	Wi-Fi RF Channels.
-*/
-typedef enum {
-	M2M_WIFI_CH_1 = ((uint8) 1),
-	M2M_WIFI_CH_2,
-	M2M_WIFI_CH_3,
-	M2M_WIFI_CH_4,
-	M2M_WIFI_CH_5,
-	M2M_WIFI_CH_6,
-	M2M_WIFI_CH_7,
-	M2M_WIFI_CH_8,
-	M2M_WIFI_CH_9,
-	M2M_WIFI_CH_10,
-	M2M_WIFI_CH_11,
-	M2M_WIFI_CH_12,
-	M2M_WIFI_CH_13,
-	M2M_WIFI_CH_14,
-	M2M_WIFI_CH_ALL = ((uint8) 255)
-}tenuM2mScanCh;
-
-/*!
-@enum	\
-	tenuM2mScanRegion
-
-@brief
-	Wi-Fi RF Channels.
-*/
-typedef enum {
-
-	REG_CH_1 = ((uint16) 1 << 0),
-	REG_CH_2 = ((uint16) 1 << 1),
-	REG_CH_3 = ((uint16) 1 << 2),
-	REG_CH_4 = ((uint16) 1 << 3),
-	REG_CH_5 = ((uint16) 1 << 4),
-	REG_CH_6 = ((uint16) 1 << 5),
-	REG_CH_7 = ((uint16) 1 << 6),
-	REG_CH_8 = ((uint16) 1 << 7),
-	REG_CH_9 = ((uint16) 1 << 8),
-	REG_CH_10 = ((uint16) 1 << 9),
-	REG_CH_11 = ((uint16) 1 << 10),
-	REG_CH_12 = ((uint16) 1 << 11),
-	REG_CH_13 = ((uint16) 1 << 12),
-	REG_CH_14 = ((uint16) 1 << 13),
-	REG_CH_ALL = ((uint16) 0x3FFF),
-	NORTH_AMERICA = ((uint16) 0x7FF),
-	/** 11 channel
-	*/
-	EUROPE		=   ((uint16) 0x1FFF),
-	/** 13 channel
-	*/
-	ASIA		=   ((uint16) 0x3FFF)
-	/* 14 channel
-	*/
-}tenuM2mScanRegion;
-
-
-/*!
-@enum	\
-	tenuPowerSaveModes
-
-@brief
-	Power Save Modes.
-*/
-typedef enum {
-	M2M_NO_PS,
-	/*!< Power save is disabled.
-	*/
-	M2M_PS_AUTOMATIC,
-	/*!< Power save is done automatically by the WINC.
-		This mode doesn't disable all of the WINC modules and 
-		use higher amount of power than the H_AUTOMATIC and 
-		the DEEP_AUTOMATIC modes..
-	*/
-	M2M_PS_H_AUTOMATIC,
-	/*!< Power save is done automatically by the WINC.
-		Achieve higher power save than the AUTOMATIC mode
-		by shutting down more parts of the WINC board.
-	*/
-	M2M_PS_DEEP_AUTOMATIC,
-	/*!< Power save is done automatically by the WINC.
-		Achieve the highest possible power save.
-	*/
-	M2M_PS_MANUAL
-	/*!< Power save is done manually by the user.
-	*/
-}tenuPowerSaveModes;
-
-/*!
-@enum	\
-	tenuM2mWifiMode
-	
-@brief
-	Wi-Fi Operation Mode.
-*/
-typedef enum {
-	M2M_WIFI_MODE_NORMAL = ((uint8) 1),
-	/*!< Normal Mode means to run customer firmware version.
-	 */
-	M2M_WIFI_MODE_ATE_HIGH,
-	/*!< Config Mode in HIGH POWER means to run production test firmware version which is known as ATE (Burst) firmware.
-	 */
-	M2M_WIFI_MODE_ATE_LOW,
-	/*!< Config Mode in LOW POWER means to run production test firmware version which is known as ATE (Burst) firmware.
-	 */
-	M2M_WIFI_MODE_ETHERNET,
-	/*!< etherent Mode
-	 */
-	M2M_WIFI_MODE_MAX,
-}tenuM2mWifiMode;
-
-/*!
-@enum	\
-	tenuWPSTrigger
-
-@brief
-	WPS Triggering Methods.
-*/
-typedef enum{
-	WPS_PIN_TRIGGER = 0,
-	/*!< WPS is triggered in PIN method.
-	*/
-	WPS_PBC_TRIGGER = 4
-	/*!< WPS is triggered via push button.
-	*/
-}tenuWPSTrigger;
-
-
-/*!
-@struct	\
-	tstrM2mWifiWepParams
-
-@brief
-	WEP security key parameters.
-*/
-typedef struct{
-	uint8	u8KeyIndx;
-	/*!< Wep key Index.
-	*/
-	uint8	u8KeySz;
-	/*!< Wep key Size.
-	*/
-	uint8	au8WepKey[WEP_104_KEY_STRING_SIZE + 1];
-	/*!< WEP Key represented as a NULL terminated ASCII string.
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes to keep the structure word alligned.
-	*/
-}tstrM2mWifiWepParams;
-
-
-/*!
-@struct	\
-	tstr1xAuthCredentials
-
-@brief
-	Credentials for the user to authenticate with the AAA server (WPA-Enterprise Mode IEEE802.1x).
-*/
-typedef struct{
-	uint8	au8UserName[M2M_1X_USR_NAME_MAX];
-	/*!< User Name. It must be Null terminated string.
-	*/
-	uint8	au8Passwd[M2M_1X_PWD_MAX];
-	/*!< Password corresponding to the user name. It must be Null terminated string.
-	*/
-}tstr1xAuthCredentials;
-
-
-/*!
-@union	\
-	tuniM2MWifiAuth
-
-@brief
-	Wi-Fi Security Parameters for all supported security modes.
-*/
-typedef union{
-	uint8				au8PSK[M2M_MAX_PSK_LEN];
-	/*!< Pre-Shared Key in case of WPA-Personal security.
-	*/
-	tstr1xAuthCredentials	strCred1x;
-	/*!< Credentials for RADIUS server authentication in case of WPA-Enterprise security.
-	*/
-	tstrM2mWifiWepParams	strWepInfo;
-	/*!< WEP key parameters in case of WEP security.
-	*/
-}tuniM2MWifiAuth;
-
-
-/*!
-@struct	\
-	tstrM2MWifiSecInfo
-
-@brief
-	Authentication credentials to connect to a Wi-Fi network.
-*/
-typedef struct{
-	tuniM2MWifiAuth		uniAuth;
-	/*!< Union holding all possible authentication parameters corresponding the current security types.
-	*/
-	uint8				u8SecType;
-	/*!< Wi-Fi network security type. See tenuM2mSecType for supported security types.
-	*/
-#define __PADDING__		(4 - ((sizeof(tuniM2MWifiAuth) + 1) % 4))
-	uint8				__PAD__[__PADDING__];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2MWifiSecInfo;
-
-
-/*!
-@struct	\
-	tstrM2mWifiConnect
-
-@brief
-	Wi-Fi Connect Request
-*/
-typedef struct{
-	tstrM2MWifiSecInfo		strSec;
-	/*!< Security parameters for authenticating with the AP.
-	*/
-	uint16				u16Ch;
-	/*!< RF Channel for the target SSID.
-	*/
-	uint8				au8SSID[M2M_MAX_SSID_LEN];
-	/*!< SSID of the desired AP. It must be NULL terminated string.
-	*/
-	uint8 				u8NoSaveCred;
-#define __CONN_PAD_SIZE__		(4 - ((sizeof(tstrM2MWifiSecInfo) + M2M_MAX_SSID_LEN + 3) % 4))
-	uint8				__PAD__[__CONN_PAD_SIZE__];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mWifiConnect;
-
-
-/*!
-@struct	\
-	tstrM2MWPSConnect
-
-@brief
-	WPS Configuration parameters
-
-@sa
-	tenuWPSTrigger
-*/
-typedef struct {
-	uint8 	u8TriggerType;
-	/*!< WPS triggering method (Push button or PIN)
-	*/
-	char         acPinNumber[8];
-	/*!< WPS PIN No (for PIN method)
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2MWPSConnect;
-
-
-/*!
-@struct	\
-	tstrM2MWPSInfo
-
-@brief	WPS Result
-
-	This structure is passed to the application in response to a WPS request. If the WPS session is completed successfully, the
-	structure will have Non-ZERO authentication type. If the WPS Session fails (due to error or timeout) the authentication type
-	is set to ZERO.
-
-@sa
-	tenuM2mSecType
-*/
-typedef struct{
-	uint8	u8AuthType;
-	/*!< Network authentication type.
-	*/
-	uint8   	u8Ch;
-	/*!< RF Channel for the AP.
-	*/
-	uint8	au8SSID[M2M_MAX_SSID_LEN];
-	/*!< SSID obtained from WPS.
-	*/
-	uint8	au8PSK[M2M_MAX_PSK_LEN];
-	/*!< PSK for the network obtained from WPS.
-	*/
-}tstrM2MWPSInfo;
-
-
-/*!
-@struct	\
-	tstrM2MDefaultConnResp
-
-@brief
-	Response error of the m2m_default_connect
-
-@sa
-	M2M_DEFAULT_CONN_SCAN_MISMATCH
-	M2M_DEFAULT_CONN_EMPTY_LIST
-*/
-typedef struct{
-	sint8		s8ErrorCode;
-	/*!<
-		Default connect error code. possible values are:
-		- M2M_DEFAULT_CONN_EMPTY_LIST
-		- M2M_DEFAULT_CONN_SCAN_MISMATCH
-	*/
-	uint8	__PAD24__[3];
-}tstrM2MDefaultConnResp;
-
-/*!
-@struct	\
-	tstrM2MScan
-
-@brief
-	Wi-Fi Scan Request
-
-@sa
-	tenuM2mScanCh
-*/
-typedef struct {
-	uint8   u8NumOfSlot;
-	/*|< The min number of slots is 2 for every channel,
-	every slot the soc will send Probe Request on air, and wait/listen for PROBE RESP/BEACONS for the u16slotTime
-	*/
-	uint8   u8SlotTime;
-	/*|< the time that the Soc will wait on every channel listening to the frames on air
-		when that time increaseed number of AP will increased in the scan results
-		min time is 10 ms and the max is 250 ms
-	*/
-	uint8  u8ProbesPerSlot;
-	/*!< Number of probe requests to be sent per channel scan slot.
-	*/
-	sint8   s8RssiThresh;
-	/*! < The RSSI threshold of the AP which will be connected to directly.
-	*/
-
-}tstrM2MScanOption;
-
-/*!
-@struct	\
-	tstrM2MScanRegion
-
-@brief
-	Wi-Fi channel regulation region information.
-
-@sa
-	tenuM2mScanRegion
-*/
-typedef struct {
-	uint16   u16ScanRegion;
-	/*|< Specifies the number of channels allowed in the region (e.g. North America = 11 ... etc.).
-	*/
-	uint8 __PAD16__[2];
-
-}tstrM2MScanRegion;
-
-/*!
-@struct	\
-	tstrM2MScan
-
-@brief
-	Wi-Fi Scan Request
-
-@sa
-	tenuM2mScanCh
-*/
-typedef struct {
-	uint8 	u8ChNum;
-	/*!< The Wi-Fi RF Channel number
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-
-}tstrM2MScan;
-
-/*!
-@struct	\
-	tstrCyptoResp
-
-@brief
-	crypto response
-*/
-typedef struct {
-	sint8 s8Resp;
-	/***/
-	uint8 __PAD24__[3];
-	/*
-	*/
-}tstrCyptoResp;
-
-
-/*!
-@struct	\
-	tstrM2mScanDone
-
-@brief
-	Wi-Fi Scan Result
-*/
-typedef struct{
-	uint8 	u8NumofCh;
-	/*!< Number of found APs
-	*/
-	sint8 	s8ScanState;
-	/*!< Scan status
-	*/
-	uint8	__PAD16__[2];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mScanDone;
-
-
-/*!
-@struct	\
-	tstrM2mReqScanResult
-
-@brief	Scan Result Request
-
-	The Wi-Fi Scan results list is stored in Firmware. The application can request a certain scan result by its index.
-*/
-typedef struct {
-	uint8 	u8Index;
-	/*!< Index of the desired scan result
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mReqScanResult;
-
-
-/*!
-@struct	\
-	tstrM2mWifiscanResult
-
-@brief	Wi-Fi Scan Result
-
-	Information corresponding to an AP in the Scan Result list identified by its order (index) in the list.
-*/
-typedef struct {
-	uint8 	u8index;
-	/*!< AP index in the scan result list.
-	*/
-	sint8 	s8rssi;
-	/*!< AP signal strength.
-	*/
-	uint8 	u8AuthType;
-	/*!< AP authentication type.
-	*/
-	uint8 	u8ch;
-	/*!< AP RF channel.
-	*/
-	uint8	au8BSSID[6];
-	/*!< BSSID of the AP.
-	*/
-	uint8 	au8SSID[M2M_MAX_SSID_LEN];
-	/*!< AP ssid.
-	*/
-	uint8 	_PAD8_;
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mWifiscanResult;
-
-
-/*!
-@struct	\
-	tstrM2mWifiStateChanged
-
-@brief
-	Wi-Fi Connection State
-
-@sa
-	M2M_WIFI_DISCONNECTED, M2M_WIFI_CONNECTED, M2M_WIFI_REQ_CON_STATE_CHANGED,tenuM2mConnChangedErrcode
-*/
-typedef struct {
-	uint8	u8CurrState;
-	/*!< Current Wi-Fi connection state
-	*/
-	uint8  u8ErrCode;
-	/*!< Error type review tenuM2mConnChangedErrcode
-	*/
-	uint8	__PAD16__[2];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mWifiStateChanged;
-
-
-/*!
-@struct	\
-	tstrM2mPsType
-
-@brief
-	Power Save Configuration
-
-@sa
-	tenuPowerSaveModes
-*/
-typedef struct{
-	uint8 	u8PsType;
-	/*!< Power save operating mode
-	*/
-	uint8 	u8BcastEn;
-	/*!<
-	*/
-	uint8	__PAD16__[2];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mPsType;
-
-/*!
-@struct	\
-	tstrM2mSlpReqTime
-
-@brief
-	Manual power save request sleep time
-
-*/
-typedef struct {
-	/*!< Sleep time in ms
-	*/
-	uint32 u32SleepTime;
-
-} tstrM2mSlpReqTime;
-
-/*!
-@struct	\
-	tstrM2mLsnInt
-
-@brief	Listen interval
-
-	It is the value of the Wi-Fi STA listen interval for power saving. It is given in units of Beacon period. 
-	Periodically after the listen interval fires, the WINC is wakeup and listen to the beacon and check for any buffered frames for it from the AP.
-*/
-typedef struct {
-	uint16 	u16LsnInt;
-	/*!< Listen interval in Beacon period count.
-	*/
-	uint8	__PAD16__[2];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mLsnInt;
-
-
-/*!
-@struct	\
-	tstrM2MWifiMonitorModeCtrl
-
-@brief	Wi-Fi Monitor Mode Filter
-
-	This structure sets the filtering criteria for WLAN packets when monitoring mode is enable. 
-	The received packets matching the filtering parameters, are passed directly to the application.
-*/
-typedef struct{
-	uint8	u8ChannelID;
-	/* !< RF Channel ID. It must use values from tenuM2mScanCh
-	*/
-	uint8	u8FrameType;
-	/*!< It must use values from tenuWifiFrameType.
-	*/
-	uint8	u8FrameSubtype;
-	/*!< It must use values from tenuSubTypes.
-	*/
-	uint8	au8SrcMacAddress[6];
-	/* ZERO means DO NOT FILTER Source address.
-	*/
-	uint8	au8DstMacAddress[6];
-	/* ZERO means DO NOT FILTER Destination address.
-	*/
-	uint8	au8BSSID[6];
-	/* ZERO means DO NOT FILTER BSSID.
-	*/
-	uint8 u8EnRecvHdr;
-	/*
-	 Enable recv the full hder before the payload	
-	*/
-	uint8	__PAD16__[2];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2MWifiMonitorModeCtrl;
-
-
-/*!
-@struct	\
-	tstrM2MWifiRxPacketInfo
-
-@brief	Wi-Fi RX Frame Header
-
-	The M2M application has the ability to allow Wi-Fi monitoring mode for receiving all Wi-Fi Raw frames matching a well defined filtering criteria.
-	When a target Wi-Fi packet is received, the header information are extracted and assigned in this structure. 
-*/
-typedef struct{
-	uint8	u8FrameType;
-	/*!< It must use values from tenuWifiFrameType.
-	*/
-	uint8	u8FrameSubtype;
-	/*!< It must use values from tenuSubTypes.
-	*/
-	uint8	u8ServiceClass;
-	/*!< Service class from Wi-Fi header.
-	*/
-	uint8	u8Priority;
-	/*!< Priority from Wi-Fi header.
-	*/
-	uint8	u8HeaderLength;
-	/*!< Frame Header length.
-	*/
-	uint8	u8CipherType;
-	/*!< Encryption type for the rx packet.
-	*/
-	uint8	au8SrcMacAddress[6];
-	/* ZERO means DO NOT FILTER Source address.
-	*/
-	uint8	au8DstMacAddress[6];
-	/* ZERO means DO NOT FILTER Destination address.
-	*/
-	uint8	au8BSSID[6];
-	/* ZERO means DO NOT FILTER BSSID.
-	*/
-	uint16	u16DataLength;
-	/*!< Data payload length (Header excluded).
-	*/
-	uint16	u16FrameLength;
-	/*!< Total frame length (Header + Data).
-	*/
-	uint32	u32DataRateKbps;
-	/*!< Data Rate in Kbps.
-	*/
-	sint8		s8RSSI;
-	/*!< RSSI.
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2MWifiRxPacketInfo;
-
-
-/*!
-@struct	\
-	tstrM2MWifiTxPacketInfo
-
-@brief	Wi-Fi TX Packet Info
-
-	The M2M Application has the ability to compose a RAW Wi-Fi frames (under the application responsibility).
-	When transmitting a Wi-Fi packet, the application must supply the firmware with this structure for sending the target frame.
-*/
-typedef struct{
-	uint16	u16PacketSize;
-	/*!< Wlan frame length.
-	*/
-	uint16	u16HeaderLength;
-	/*!< Wlan frame header length.
-	*/
-}tstrM2MWifiTxPacketInfo;
-
-
-/*!
- @struct	\
- 	tstrM2MP2PConnect
-
- @brief
- 	Set the device to operate in the Wi-Fi Direct (P2P) mode.
-*/
-typedef struct {
-	uint8 	u8ListenChannel;
-	/*!< P2P Listen Channel (1, 6 or 11)
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2MP2PConnect;
-
-/*!
-@struct	\
-	tstrM2MAPConfig
-
-@brief	AP Configuration
-
-	This structure holds the configuration parameters for the M2M AP mode. It should be set by the application when
-	it requests to enable the M2M AP operation mode. The M2M AP mode currently supports only WEP security (with
-	the NO Security option available of course).
-*/
-typedef struct {
-	/*!<
-		Configuration parameters for the WiFi AP.
-	*/
-	uint8 	au8SSID[M2M_MAX_SSID_LEN];
-	/*!< AP SSID
-	*/
-	uint8 	u8ListenChannel;
-	/*!< Wi-Fi RF Channel which the AP will operate on
-	*/
-	uint8	u8KeyIndx;
-	/*!< Wep key Index
-	*/
-	uint8	u8KeySz;
-	/*!< Wep key Size
-	*/
-	uint8	au8WepKey[WEP_104_KEY_STRING_SIZE + 1];
-	/*!< Wep key
-	*/
-	uint8 	u8SecType;
-	/*!< Security type: Open or WEP only in the current implementation
-	*/
-	uint8 	u8SsidHide;
-	/*!< SSID Status "Hidden(1)/Visible(0)"
-	*/
-	uint8	au8DHCPServerIP[4];
-	/*!< Ap IP server address
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing alignment
-	*/
-}tstrM2MAPConfig;
-
-
-/*!
-@struct	\
-	tstrM2mServerInit
-
-@brief
-	PS Server initialization.
-*/
-typedef struct {
-	uint8 	u8Channel;
-	/*!< Server Listen channel
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mServerInit;
-
-
-/*!
-@struct	\
-	tstrM2mClientState
-
-@brief
-	PS Client State.
-*/
-typedef struct {
-	uint8 	u8State;
-	/*!< PS Client State
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mClientState;
-
-
-/*!
-@struct	\
-	tstrM2Mservercmd
-
-@brief
-	PS Server CMD
-*/
-typedef struct {
-	uint8	u8cmd;
-	/*!< PS Server Cmd
-	*/
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2Mservercmd;
-
-
-/*!
-@struct	\
-	tstrM2mSetMacAddress
-
-@brief
-	Sets the MAC address from application. The WINC load the mac address from the effuse by default to the WINC configuration memory, 
-	but that function is used to let the application overwrite the configuration memory with the mac address from the host.
-
-@note
-	It's recommended to call this only once before calling connect request and after the m2m_wifi_init
-*/
-typedef struct {
-	uint8 	au8Mac[6];
-	/*!< MAC address array
-	*/
-	uint8	__PAD16__[2];
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2mSetMacAddress;
-
-
-/*!
-@struct	\
- 	tstrM2MDeviceNameConfig
-
-@brief	Device name
-
-	It is assigned by the application. It is used mainly for Wi-Fi Direct device
-	discovery and WPS device information.
-*/
-typedef struct {
-	uint8 	au8DeviceName[M2M_DEVICE_NAME_MAX];
-	/*!< NULL terminated device name
-	*/
-}tstrM2MDeviceNameConfig;
-
-
-/*!
-@struct	\
- 	tstrM2MIPConfig
-
-@brief
- 	Static IP configuration.
-
-@note
- 	All member IP addresses are expressed in Network Byte Order (eg. "192.168.10.1" will be expressed as 0x010AA8C0).
- */
-typedef struct {
-	uint32 	u32StaticIP;
-	/*!< The static IP assigned to the device.
-	*/
-	uint32 	u32Gateway;
-	/*!< IP of the Default internet gateway.
-	*/
-	uint32 	u32DNS;
-	/*!< IP for the DNS server.
-	*/
-	uint32 	u32SubnetMask;
-	/*!< Subnet mask for the local area network.
-	*/
-} tstrM2MIPConfig;
-
-/*!
-@struct	\
- 	tstrM2mIpRsvdPkt
-
-@brief
- 	Received Packet Size and Data Offset
-
- */
-typedef struct{
-	uint16	u16PktSz;
-	uint16	u16PktOffset;
-} tstrM2mIpRsvdPkt;
-
-
-/*!
-@struct	\
- 	tstrM2MProvisionModeConfig
-
-@brief
- 	M2M Provisioning Mode Configuration
- */
-
-typedef struct {
-	tstrM2MAPConfig	strApConfig;
-	/*!<
-		Configuration parameters for the WiFi AP.
-	*/
-	char				acHttpServerDomainName[64];
-	/*!<
-		The device domain name for HTTP provisioning.
-	*/
-	uint8			u8EnableRedirect;
-	/*!<
-		A flag to enable/disable HTTP redirect feature for the HTTP Provisioning server. If the Redirect is enabled,
-		all HTTP traffic (http://URL) from the device associated with WINC AP will be redirected to the HTTP Provisioning Web page.
-		- 0 : Disable HTTP Redirect.
-		- 1 : Enable HTTP Redirect.
-	*/
-	uint8			__PAD24__[3];
-}tstrM2MProvisionModeConfig;
-
-
-/*!
-@struct	\
- 	tstrM2MProvisionInfo
-
-@brief
- 	M2M Provisioning Information obtained from the HTTP Provisioning server.
- */
-typedef struct{
-	uint8	au8SSID[M2M_MAX_SSID_LEN];
-	/*!<
-		Provisioned SSID.
-	*/
-	uint8	au8Password[M2M_MAX_PSK_LEN];
-	/*!<
-		Provisioned Password.
-	*/
-	uint8	u8SecType;
-	/*!<
-		Wifi Security type.
-	*/
-	uint8	u8Status;
-	/*!<
-		Provisioning status. It must be checked before reading the provisioning information. It may be
-		- M2M_SUCCESS 	: Provision successful.
-		- M2M_FAIL		: Provision Failed.
-	*/
-}tstrM2MProvisionInfo;
-
-
-/*!
-@struct	\
- 	tstrM2MConnInfo
-
-@brief
- 	M2M Provisioning Information obtained from the HTTP Provisioning server.
- */
-typedef struct{
-	char		acSSID[M2M_MAX_SSID_LEN];
-	/*!< AP connection SSID name  */
-	uint8	u8SecType;
-	/*!< Security type */
-	uint8	au8IPAddr[4];
-	/*!< Connection IP address */
-	uint8	au8MACAddress[6];
-	/*!< MAC address of the peer Wi-Fi station */ 
-	sint8	s8RSSI;
-	/*!< Connection RSSI signal */
-	uint8	__PAD24__[3];
-	/*!< Padding bytes for forcing 4-byte alignment */
-}tstrM2MConnInfo;
-
-/*!
-@struct	\
- 	tstrOtaInitHdr
-
-@brief
- 	OTA Image Header 
- */
-
-typedef struct{
-	uint32 u32OtaMagicValue;
-	/*!< Magic value kept in the OTA image after the 
-	sha256 Digest buffer to define the Start of OTA Header */
-	uint32 u32OtaPayloadSzie;
-	/*!<
-	The Total OTA image payload size, include the sha256 key size
-	*/
-
-}tstrOtaInitHdr;
-	
-
-/*!
-@struct	\
- 	tstrOtaControlSec
-
-@brief
- 	Control section structure is used to define the working image and 
-	the validity of the roll-back image and its offset, also both firmware versions is kept in that structure.
- */
-
-typedef struct {
-	uint32 u32OtaMagicValue;
-/*!<
-	Magic value used to ensure the structure is valid or not 
-*/
-	uint32 u32OtaFormatVersion;
-/*!<
-		NA   NA   NA   Flash version   cs struct version
-		00   00   00   00              00 
-	Control structure format version, the value will be incremented in case of structure changed or updated
-*/
-	uint32 u32OtaSequenceNumber;
-/*!<
-	Sequence number is used while update the control structure to keep track of how many times that section updated 
-*/
-	uint32 u32OtaLastCheckTime;
-/*!<
-	Last time OTA check for update
-*/
-	uint32 u32OtaCurrentworkingImagOffset;
-/*!<
-	Current working offset in flash 
-*/
-	uint32 u32OtaCurrentworkingImagFirmwareVer;
-/*!<
-	current working image version ex 18.0.1
-*/
-	uint32 u32OtaRollbackImageOffset;
-/*!<
-	Roll-back image offset in flash 
-*/
-	uint32 u32OtaRollbackImageValidStatus;
-/*!<
-	roll-back image valid status 
-*/
-	uint32 u32OtaRollbackImagFirmwareVer;
-/*!<
-	Roll-back image version (ex 18.0.3)
-*/
-	uint32 u32OtaCortusAppWorkingOffset;
-/*!<
-	cortus app working offset in flash 
-*/
-	uint32 u32OtaCortusAppWorkingValidSts;
-/*!<
-	Working Cortus app valid status 
-*/
-	uint32 u32OtaCortusAppWorkingVer;
-/*!<
-	Working cortus app version (ex 18.0.3)
-*/
-	uint32 u32OtaCortusAppRollbackOffset;
-/*!<
-	cortus app rollback offset in flash 
-*/
-	uint32 u32OtaCortusAppRollbackValidSts;
-/*!<
-	roll-back cortus app valid status 
-*/
-	uint32 u32OtaCortusAppRollbackVer;
-/*!<
-	Roll-back cortus app version (ex 18.0.3)
-*/
-	uint32 u32OtaControlSecCrc;
-/*!<
-	CRC for the control structure to ensure validity 
-*/
-} tstrOtaControlSec;
-
-/*!
-@enum	\
-	tenuOtaUpdateStatus
-
-@brief
-	OTA return status
-*/
-typedef enum {
-	OTA_STATUS_SUCSESS        = 0,
-	/*!< OTA Success with not errors. */
-	OTA_STATUS_FAIL           = 1,
-	/*!< OTA generic fail. */
-	OTA_STATUS_INVAILD_ARG    = 2,
-	/*!< Invalid or malformed download URL. */
-	OTA_STATUS_INVAILD_RB_IMAGE    = 3,
-	/*!< Invalid rollback image. */
-	OTA_STATUS_INVAILD_FLASH_SIZE    = 4,
-	/*!< Flash size on device is not enough for OTA. */
-	OTA_STATUS_AlREADY_ENABLED    = 5,
-	/*!< An OTA operation is already enabled. */
-	OTA_STATUS_UPDATE_INPROGRESS    = 6,
-	/*!< An OTA operation update is in progress */
-	OTA_STATUS_IMAGE_VERIF_FAILED = 7,
-	/*!<  OTA Verfication failed */
-	OTA_STATUS_CONNECTION_ERROR = 8,
-	/*!< OTA connection error */
-	OTA_STATUS_SERVER_ERROR = 9,
-	/*!< OTA server Error (file not found or else ...) */
-} tenuOtaUpdateStatus;
-/*!
-@enum	\
-	tenuOtaUpdateStatusType
-
-@brief
-	OTA update Status type
-*/
-typedef enum {
-
-	DL_STATUS        = 1,
-	/*!< Download OTA file status
-	*/
-	SW_STATUS        = 2,
-	/*!< Switching to the upgrade firmware status
-	*/
-	RB_STATUS        = 3,
-	/*!< Roll-back status
-	*/
-}tenuOtaUpdateStatusType;
-
-
-/*!
-@struct	\
-	tstrOtaUpdateStatusResp
-
-@brief
-	OTA Update Information
-
-@sa
-	tenuWPSTrigger
-*/
-typedef struct {
-	uint8	u8OtaUpdateStatusType;
-	/*!<
-		Status type tenuOtaUpdateStatusType
-	*/
-	uint8	u8OtaUpdateStatus;
-	/*!<
-	OTA_SUCCESS 						
-	OTA_ERR_WORKING_IMAGE_LOAD_FAIL		
-	OTA_ERR_INVAILD_CONTROL_SEC			
-	M2M_ERR_OTA_SWITCH_FAIL     		
-	M2M_ERR_OTA_START_UPDATE_FAIL     	
-	M2M_ERR_OTA_ROLLBACK_FAIL     		
-	M2M_ERR_OTA_INVAILD_FLASH_SIZE     	
-	M2M_ERR_OTA_INVAILD_ARG		     
-	*/
-	uint8 _PAD16_[2];
-}tstrOtaUpdateStatusResp;
-
-/*!
-@struct	\
-	tstrOtaUpdateInfo
-
-@brief
-	OTA Update Information
-
-@sa
-	tenuWPSTrigger
-*/
-typedef struct {
-	uint32	u8NcfUpgradeVersion;
-	/*!< NCF OTA Upgrade Version
-	*/
-	uint32	u8NcfCurrentVersion;
-	/*!< NCF OTA Current firmware version
-	*/
-	uint32	u8NcdUpgradeVersion;
-	/*!< NCD (host) upgraded version (if the u8NcdRequiredUpgrade == true)
-	*/
-	uint8	u8NcdRequiredUpgrade;
-	/*!< NCD Required upgrade to the above version
-	*/
-	uint8 	u8DownloadUrlOffset;
-	/*!< Download URL offset in the received packet
-	*/
-	uint8 	u8DownloadUrlSize;
-	/*!< Download URL size in the received packet
-	*/
-	uint8	__PAD8__;
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-} tstrOtaUpdateInfo;
-
-/*!
-@struct	\
-	tstrSystemTime
-
-@brief
-	Used for time storage.
-*/
-typedef struct{
-	uint16	u16Year;
-	uint8	u8Month;
-	uint8	u8Day;
-	uint8	u8Hour;
-	uint8	u8Minute;
-	uint8	u8Second;
-}tstrSystemTime;
-
-/*!
-@struct	\
- 	tstrM2MMulticastMac
-
-@brief
- 	M2M add/remove multi-cast mac address
- */
- typedef struct {
-	uint8 au8macaddress[M2M_MAC_ADDRES_LEN];
-	/*!<
-		Mac address needed to be added or removed from filter.
-	*/
-	uint8 u8AddRemove;
-	/*!<
-		set by 1 to add or 0 to remove from filter.
-	*/
-	uint8	__PAD8__;
-	/*!< Padding bytes for forcing 4-byte alignment
-	*/
-}tstrM2MMulticastMac;
-
-/*!
-@struct	\
- 	tstrPrng
-
-@brief
- 	M2M Request PRNG
- */
- typedef struct {
-	 /*!<
-		return buffer address
-	*/
-	uint8 *pu8RngBuff;
-	 /*!<
-		PRNG size requested
-	*/
-	uint16 	u16PrngSize;
-	/*!<
-		PRNG pads
-	*/
-	uint8 __PAD16__[2];
-}tstrPrng;
-
-
- /**@}*/
-
-#endif
+/**
+ *
+ * \file
+ *
+ * \brief WINC Application Interface Internal Types.
+ *
+ * Copyright (c) 2015 Atmel Corporation. All rights reserved.
+ *
+ * \asf_license_start
+ *
+ * \page License
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * 3. The name of Atmel may not be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * \asf_license_stop
+ *
+ */
+
+#ifndef __M2M_WIFI_TYPES_H__
+#define __M2M_WIFI_TYPES_H__
+
+
+/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
+INCLUDES
+*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
+
+#ifndef	_BOOT_
+#ifndef _FIRMWARE_
+#include "common/include/nm_common.h"
+#else
+#include "m2m_common.h"
+#endif
+#endif
+
+
+/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
+MACROS
+*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
+/**@defgroup  WlanDefines Defines
+ * @ingroup m2m_wifi
+ */
+/**@{*/
+#define M2M_MAJOR_SHIFT (8)
+#define M2M_MINOR_SHIFT (4)
+#define M2M_PATCH_SHIFT (0)
+
+#define M2M_DRV_VERSION_SHIFT (16)
+#define M2M_FW_VERSION_SHIFT (0)
+
+#define M2M_GET_MAJOR(ver_info_hword) ((uint8)((ver_info_hword) >> M2M_MAJOR_SHIFT) & 0xff)
+#define M2M_GET_MINOR(ver_info_hword) ((uint8)((ver_info_hword) >> M2M_MINOR_SHIFT) & 0x0f)
+#define M2M_GET_PATCH(ver_info_hword) ((uint8)((ver_info_hword) >> M2M_PATCH_SHIFT) & 0x0f)
+
+#define M2M_GET_FW_VER(ver_info_word)  ((uint16) ((ver_info_word) >> M2M_FW_VERSION_SHIFT))
+#define M2M_GET_DRV_VER(ver_info_word) ((uint16) ((ver_info_word) >> M2M_DRV_VERSION_SHIFT))
+
+#define M2M_GET_DRV_MAJOR(ver_info_word) M2M_GET_MAJOR(M2M_GET_DRV_VER(ver_info_word))
+#define M2M_GET_DRV_MINOR(ver_info_word) M2M_GET_MINOR(M2M_GET_DRV_VER(ver_info_word))
+#define M2M_GET_DRV_PATCH(ver_info_word) M2M_GET_PATCH(M2M_GET_DRV_VER(ver_info_word))
+
+#define M2M_GET_FW_MAJOR(ver_info_word) M2M_GET_MAJOR(M2M_GET_FW_VER(ver_info_word))
+#define M2M_GET_FW_MINOR(ver_info_word) M2M_GET_MINOR(M2M_GET_FW_VER(ver_info_word))
+#define M2M_GET_FW_PATCH(ver_info_word) M2M_GET_PATCH(M2M_GET_FW_VER(ver_info_word))
+
+#define M2M_MAKE_VERSION(major, minor, patch) ( \
+	((uint16)((major)  & 0xff)  << M2M_MAJOR_SHIFT) | \
+	((uint16)((minor)  & 0x0f)  << M2M_MINOR_SHIFT) | \
+	((uint16)((patch)  & 0x0f)  << M2M_PATCH_SHIFT))
+
+#define M2M_MAKE_VERSION_INFO(fw_major, fw_minor, fw_patch, drv_major, drv_minor, drv_patch) \
+	( \
+	( ((uint32)M2M_MAKE_VERSION((fw_major),  (fw_minor),  (fw_patch)))  << M2M_FW_VERSION_SHIFT) | \
+	( ((uint32)M2M_MAKE_VERSION((drv_major), (drv_minor), (drv_patch))) << M2M_DRV_VERSION_SHIFT))
+#define REL_19_4_6_VER			M2M_MAKE_VERSION_INFO(19,4,6,19,3,0)
+#define REL_19_4_5_VER			M2M_MAKE_VERSION_INFO(19,4,5,19,3,0)
+#define REL_19_4_4_VER			M2M_MAKE_VERSION_INFO(19,4,4,19,3,0)
+#define REL_19_4_3_VER			M2M_MAKE_VERSION_INFO(19,4,3,19,3,0)
+#define REL_19_4_2_VER			M2M_MAKE_VERSION_INFO(19,4,2,19,3,0)
+#define REL_19_4_1_VER			M2M_MAKE_VERSION_INFO(19,4,1,19,3,0)
+#define REL_19_4_0_VER			M2M_MAKE_VERSION_INFO(19,4,0,19,3,0)
+#define REL_19_3_1_VER			M2M_MAKE_VERSION_INFO(19,3,1,19,3,0)
+#define REL_19_3_0_VER			M2M_MAKE_VERSION_INFO(19,3,0,19,3,0)
+#define REL_19_2_2_VER			M2M_MAKE_VERSION_INFO(19,2,2,19,2,0)
+#define REL_19_2_1_VER			M2M_MAKE_VERSION_INFO(19,2,1,19,2,0)
+#define REL_19_2_0_VER			M2M_MAKE_VERSION_INFO(19,2,0,19,2,0)
+#define REL_19_1_0_VER			M2M_MAKE_VERSION_INFO(19,1,0,18,2,0)
+#define REL_19_0_0_VER			M2M_MAKE_VERSION_INFO(19,0,0,18,1,1)
+
+/*======*======*======*======*
+		FIRMWARE VERSION NO INFO
+ *======*======*======*======*/
+
+#define M2M_FIRMWARE_VERSION_MAJOR_NO 					(19)
+/*!< Firmware Major release version number.
+*/
+
+
+#define M2M_FIRMWARE_VERSION_MINOR_NO					(4)
+/*!< Firmware Minor release version number.
+*/
+
+#define M2M_FIRMWARE_VERSION_PATCH_NO					(7)
+/*!< Firmware patch release version number.
+*/
+
+/*======*======*======*======*
+  SUPPORTED DRIVER VERSION NO INFO
+ *======*======*======*======*/
+
+#define M2M_DRIVER_VERSION_MAJOR_NO 					(19)
+/*!< Driver Major release version number.
+*/
+
+
+#define M2M_DRIVER_VERSION_MINOR_NO						(3)
+/*!< Driver Minor release version number.
+*/
+
+#define M2M_DRIVER_VERSION_PATCH_NO						(0)
+/*!< Driver patch release version number.
+*/
+
+
+#if !defined(M2M_FIRMWARE_VERSION_MAJOR_NO) || !defined(M2M_FIRMWARE_VERSION_MINOR_NO)
+#error Undefined version number
+#endif
+
+#define M2M_BUFFER_MAX_SIZE								(1600UL - 4)
+/*!< Maximum size for the shared packet buffer.
+ */
+
+
+#define M2M_MAC_ADDRES_LEN                               6
+/*!< The size fo 802 MAC address.
+ */
+
+#define M2M_ETHERNET_HDR_OFFSET							34
+/*!< The offset of the Ethernet header within the WLAN Tx Buffer.
+ */
+
+
+#define M2M_ETHERNET_HDR_LEN							14
+/*!< Length of the Etherenet header in bytes.
+*/
+
+
+#define M2M_MAX_SSID_LEN 								33
+/*!< Maximum size for the Wi-Fi SSID including the NULL termination.
+ */
+
+
+#define M2M_MAX_PSK_LEN           						65
+/*!< Maximum size for the WPA PSK including the NULL termination.
+ */
+
+
+#define M2M_DEVICE_NAME_MAX								48
+/*!< Maximum Size for the device name including the NULL termination.
+ */
+
+
+#define M2M_LISTEN_INTERVAL 							1
+/*!< The STA uses the Listen Interval parameter to indicate to the AP how
+	many beacon intervals it shall sleep before it retrieves the queued frames
+	from the AP. 
+*/
+
+#define MAX_HIDDEN_SITES 								4
+/*!<
+	max number of hidden SSID suuported by scan request
+*/
+
+
+#define M2M_1X_USR_NAME_MAX								21
+/*!< The maximum size of the user name including the NULL termination.
+	It is used for RADIUS authentication in case of connecting the device to
+	an AP secured with WPA-Enterprise.
+*/
+
+
+#define M2M_1X_PWD_MAX									41
+/*!< The maximum size of the password including the NULL termination.
+	It is used for RADIUS authentication in case of connecting the device to
+	an AP secured with WPA-Enterprise.
+*/
+
+#define M2M_CUST_IE_LEN_MAX								252
+/*!< The maximum size of IE (Information Element).
+*/
+
+#define PWR_DEFAULT                                        PWR_HIGH
+/*********************
+ *
+ * WIFI GROUP requests
+ */
+
+#define M2M_CONFIG_CMD_BASE									1
+/*!< The base value of all the host configuration commands opcodes.
+*/
+#define M2M_STA_CMD_BASE									40
+/*!< The base value of all the station mode host commands opcodes.
+*/
+#define M2M_AP_CMD_BASE										70
+/*!< The base value of all the Access Point mode host commands opcodes.
+*/
+#define M2M_P2P_CMD_BASE									90
+/*!< The base value of all the P2P mode host commands opcodes.
+*/
+#define M2M_SERVER_CMD_BASE									100
+/*!< The base value of all the power save mode host commands codes.
+*/
+/**********************
+ * OTA GROUP requests
+ */
+#define M2M_OTA_CMD_BASE									100
+/*!< The base value of all the OTA mode host commands opcodes.
+ * The OTA Have special group so can extended from 1-M2M_MAX_GRP_NUM_REQ
+*/
+/***********************
+ *
+ * CRYPTO group requests
+ */
+#define M2M_CRYPTO_CMD_BASE									1
+/*!< The base value of all the crypto mode host commands opcodes.
+ * The crypto Have special group so can extended from 1-M2M_MAX_GRP_NUM_REQ
+*/
+
+#define M2M_MAX_GRP_NUM_REQ									(127)
+/*!< max number of request in one group equal to 127 as the last bit reserved for config or data pkt
+*/
+
+#define WEP_40_KEY_STRING_SIZE 							((uint8)10)
+/*!< Indicate the wep key size in bytes for 40 bit string passphrase.
+*/
+
+#define WEP_104_KEY_STRING_SIZE 						((uint8)26)
+/*!< Indicate the wep key size in bytes for 104 bit string passphrase.
+*/
+#define WEP_KEY_MAX_INDEX								((uint8)4)
+/*!< Indicate the max key index value for WEP authentication
+*/
+#define M2M_SHA256_CONTEXT_BUFF_LEN							(128)
+/*!< sha256 context size
+*/
+#define M2M_SCAN_DEFAULT_NUM_SLOTS							(2)
+/*!< The default. number of scan slots performed by the WINC board.
+*/
+#define M2M_SCAN_DEFAULT_SLOT_TIME							(30)
+/*!< The default. duration in miliseconds of a scan slots performed by the WINC board.
+*/
+#define M2M_SCAN_DEFAULT_NUM_PROBE							(2)
+/*!< The default. number of scan slots performed by the WINC board.
+*/
+
+
+/*======*======*======*======*
+	CONNECTION ERROR DEFINITIONS
+ *======*======*======*======*/
+typedef enum { 		
+	M2M_DEFAULT_CONN_INPROGRESS = ((sint8)-23),  		
+	/*!<
+	A failure that indicates that a default connection or forced connection is in progress
+	*/
+	M2M_DEFAULT_CONN_FAIL,				
+	/*!<
+	A failure response that indicates that the winc failed to connect to the cached network
+	*/
+	 M2M_DEFAULT_CONN_SCAN_MISMATCH,	 													
+	/*!<
+	A failure response that indicates that no one of the cached networks 
+	was found in the scan results, as a result to the function call m2m_default_connect.
+	*/
+	M2M_DEFAULT_CONN_EMPTY_LIST
+	/*!<
+	A failure response that indicates an empty network list as 
+	a result to the function call m2m_default_connect.
+	*/
+
+}tenuM2mDefaultConnErrcode;
+
+
+
+
+/*======*======*======*======*
+	OTA DEFINITIONS
+ *======*======*======*======*/
+ 
+#define OTA_STATUS_VALID					(0x12526285)
+/*!< 
+	Magic value updated in the Control structure in case of ROLLACK image Valid
+*/
+#define OTA_STATUS_INVALID					(0x23987718)
+/*!< 
+	Magic value updated in the Control structure in case of ROLLACK image InValid
+*/
+#define OTA_MAGIC_VALUE						(0x1ABCDEF9)
+/*!< 
+	Magic value set at the beginning of the OTA image header
+*/
+
+#define OTA_FORMAT_VER_0					(0)	/*Till 19.2.2 format*/
+#define OTA_FORMAT_VER_1					(1) /*starting from 19.3.0 CRC is used and sequence number is used*/
+/*!<
+	Control structure format version
+*/
+#define OTA_SHA256_DIGEST_SIZE 				(32)
+/*!< 
+	Sha256 digest size in the OTA image, 
+	the sha256 digest is set at the beginning of image before the OTA header 
+*/
+
+#define OTA_SUCCESS 						(0)
+/*!<
+	OTA Success status 
+*/
+#define OTA_ERR_WORKING_IMAGE_LOAD_FAIL		((sint8)-1)
+/*!<
+	Failure to load the firmware image
+*/
+#define OTA_ERR_INVAILD_CONTROL_SEC			((sint8)-2)
+/*!<
+	Control structure is being corrupted   
+*/
+#define M2M_ERR_OTA_SWITCH_FAIL     		((sint8)-3)
+/*!<
+	switching to the updated image failed as may be the image is invalid 
+*/
+#define M2M_ERR_OTA_START_UPDATE_FAIL     	((sint8)-4)
+/*!<
+	OTA update fail due to multiple reasons 
+	- Connection failure
+	- Image integrity fail  
+	
+*/
+#define M2M_ERR_OTA_ROLLBACK_FAIL     		((sint8)-5)
+/*!<
+	Roll-back failed due to Roll-back image is not valid 
+*/
+#define M2M_ERR_OTA_INVAILD_FLASH_SIZE     	((sint8)-6)
+/*!<
+	The OTA Support at least 4MB flash size, if the above error will appear if the current flash is less than 4M
+*/
+#define M2M_ERR_OTA_INVAILD_ARG		     	((sint8)-7)
+/*!<
+	Invalid argument in any OTA Function
+*/
+/**@}*/
+
+/**
+* @addtogroup WlanEnums Enumerations and Typedefs
+* @ingroup m2m_wifi
+*/
+ /**@{*/ 
+
+/*!
+@enum	\
+	tenuM2mConnChangedErrcode
+	
+@brief
+	
+*/
+typedef enum {
+	 M2M_ERR_SCAN_FAIL = ((uint8)1),
+	/*!< Indicate that the WINC board has failed to perform the scan operation.
+	*/
+	 M2M_ERR_JOIN_FAIL,	 								
+	/*!< Indicate that the WINC board has failed to join the BSS .
+	*/
+	 M2M_ERR_AUTH_FAIL, 									
+	/*!< Indicate that the WINC board has failed to authenticate with the AP.
+	*/
+	 M2M_ERR_ASSOC_FAIL,
+	/*!< Indicate that the WINC board has failed to associate with the AP.
+	*/
+	 M2M_ERR_CONN_INPROGRESS,
+	 /*!< Indicate that the WINC board has another connection request in progress.
+	*/
+}tenuM2mConnChangedErrcode;
+/*!
+@enum	\
+	tenuM2mWepKeyIndex
+	
+@brief
+	
+*/
+typedef enum {
+	M2M_WIFI_WEP_KEY_INDEX_1 = ((uint8) 1),
+	M2M_WIFI_WEP_KEY_INDEX_2,
+	M2M_WIFI_WEP_KEY_INDEX_3,
+	M2M_WIFI_WEP_KEY_INDEX_4,
+	/*!< Index for WEP key Authentication
+	*/
+}tenuM2mWepKeyIndex;
+
+/*!
+@enum	\
+	tenuM2mPwrMode
+	
+@brief
+	
+*/
+typedef enum {
+	PWR_AUTO = ((uint8) 1),
+	/*!< FW will decide the best power mode to use internally. */
+	PWR_LOW1,
+	/*low power mode #1*/
+	PWR_LOW2,
+	/*low power mode #2*/
+	PWR_HIGH,
+	/* high power mode*/
+}tenuM2mPwrMode;
+
+/*!
+@struct	\
+	tstrM2mPwrState
+
+@brief
+	Power Mode
+*/
+typedef struct {
+	uint8	u8PwrMode; 
+	/*!< power Save Mode
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mPwrMode;
+/*!
+@enum	\
+	tenuM2mTxPwrLevel
+	
+@brief
+	
+*/
+typedef enum {
+	TX_PWR_HIGH = ((uint8) 1),
+	/*!< PPA Gain 6dbm	PA Gain 18dbm */
+	TX_PWR_MED,
+	/*!< PPA Gain 6dbm	PA Gain 12dbm */
+	TX_PWR_LOW,
+	/*!< PPA Gain 6dbm	PA Gain 6dbm */
+}tenuM2mTxPwrLevel;
+
+/*!
+@struct	\
+	tstrM2mTxPwrLevel
+
+@brief
+	Tx power level 
+*/
+typedef struct {
+	uint8	u8TxPwrLevel; 
+	/*!< Tx power level
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mTxPwrLevel;
+
+/*!
+@struct	\
+	tstrM2mEnableLogs
+
+@brief
+	Enable Firmware logs
+*/
+typedef struct {
+	uint8	u8Enable; 
+	/*!< Enable/Disable firmware logs
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mEnableLogs;
+
+/*!
+@struct	\
+	tstrM2mBatteryVoltage
+
+@brief
+	Battery Voltage
+*/
+typedef struct {
+	//Note: on SAMD D21 the size of double is 8 Bytes
+	uint16	u16BattVolt; 
+	/*!< Battery Voltage
+	*/
+	uint8	__PAD16__[2];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mBatteryVoltage;
+
+/*!
+@enum	\
+	tenuM2mReqGroup
+
+@brief
+*/
+typedef enum{
+	M2M_REQ_GROUP_MAIN = 0,
+	M2M_REQ_GROUP_WIFI,
+	M2M_REQ_GROUP_IP,
+	M2M_REQ_GROUP_HIF,
+	M2M_REQ_GROUP_OTA,
+	M2M_REQ_GROUP_SSL,
+	M2M_REQ_GROUP_CRYPTO,
+	M2M_REQ_GROUP_SIGMA,
+}tenuM2mReqGroup;
+
+/*!
+@enum	\
+	tenuM2mReqpkt
+
+@brief
+*/
+typedef enum{
+	M2M_REQ_CONFIG_PKT,
+	M2M_REQ_DATA_PKT = 0x80 /*BIT7*/
+}tenuM2mReqpkt;
+/*!
+@enum	\
+	tenuM2mConfigCmd
+
+@brief
+	This enum contains all the host commands used to configure the WINC board.
+
+*/
+typedef enum {
+	M2M_WIFI_REQ_RESTART = M2M_CONFIG_CMD_BASE,
+	/*!<
+		Restart the WINC MAC layer, it's doesn't restart the IP layer.
+	*/
+	M2M_WIFI_REQ_SET_MAC_ADDRESS,
+	/*!<
+		Set the WINC mac address (not possible for production effused boards).
+	*/
+	M2M_WIFI_REQ_CURRENT_RSSI,
+	/*!<
+		Request the current connected AP RSSI.
+	*/
+	M2M_WIFI_RESP_CURRENT_RSSI,
+	/*!<
+		Response to M2M_WIFI_REQ_CURRENT_RSSI with the RSSI value.
+	*/
+	M2M_WIFI_REQ_GET_CONN_INFO,
+	/*!< Request connection information command.
+	*/
+	M2M_WIFI_RESP_CONN_INFO,
+
+	/*!< Connect with default AP response.
+	*/
+	M2M_WIFI_REQ_SET_DEVICE_NAME,
+	/*!<
+		Set the WINC device name property.
+	*/
+	M2M_WIFI_REQ_START_PROVISION_MODE,
+	/*!<
+		Start the provisioning mode for the M2M Device.
+	*/
+	M2M_WIFI_RESP_PROVISION_INFO,
+	/*!<
+		Send the provisioning information to the host.
+	*/
+	M2M_WIFI_REQ_STOP_PROVISION_MODE,
+	/*!<
+		Stop the current running provision mode.
+	*/
+	M2M_WIFI_REQ_SET_SYS_TIME,
+	/*!<
+		Set time of day from host.
+	*/
+	M2M_WIFI_REQ_ENABLE_SNTP_CLIENT,
+	/*!<
+		Enable the simple network time protocol to get the
+		time from the Internet. this is required for security purposes.
+	*/
+	M2M_WIFI_REQ_DISABLE_SNTP_CLIENT,
+	/*!<
+		Disable the simple network time protocol for applications that
+		do not need it.
+	*/
+	M2M_WIFI_RESP_MEMORY_RECOVER,
+	/*!<
+	 * Reserved for debuging
+	 * */
+	M2M_WIFI_REQ_CUST_INFO_ELEMENT,
+	/*!< Add Custom ELement to Beacon Managament Frame.
+	*/
+	M2M_WIFI_REQ_SCAN,
+	/*!< Request scan command.
+	*/
+	M2M_WIFI_RESP_SCAN_DONE,
+	/*!< Scan complete notification response.
+	*/
+	M2M_WIFI_REQ_SCAN_RESULT,
+	/*!< Request Scan results command.
+	*/
+	M2M_WIFI_RESP_SCAN_RESULT,
+	/*!< Request Scan results resopnse.
+	*/
+	M2M_WIFI_REQ_SET_SCAN_OPTION,
+	/*!< Set Scan options "slot time, slot number .. etc" .
+	*/
+	M2M_WIFI_REQ_SET_SCAN_REGION,
+	/*!< Set scan region.
+	*/
+	M2M_WIFI_REQ_SET_POWER_PROFILE,
+	/*!< The API shall set power mode to one of 3 modes
+	*/
+	M2M_WIFI_REQ_SET_TX_POWER,
+	/*!<  API to set TX power. 
+	*/
+	M2M_WIFI_REQ_SET_BATTERY_VOLTAGE,
+	/*!<  API to set Battery Voltage. 
+	*/
+	M2M_WIFI_REQ_SET_ENABLE_LOGS,
+	/*!<  API to set Battery Voltage. 
+	*/
+	M2M_WIFI_REQ_GET_SYS_TIME,
+	/*!<
+		REQ GET time of day from WINC.
+	*/
+	M2M_WIFI_RESP_GET_SYS_TIME,
+	/*!<
+		RESP time of day from host.
+	*/
+	M2M_WIFI_REQ_SEND_ETHERNET_PACKET,
+	/*!< Send Ethernet packet in bypass mode.
+	*/
+	M2M_WIFI_RESP_ETHERNET_RX_PACKET,
+	/*!< Receive Ethernet packet in bypass mode.
+	*/	
+	M2M_WIFI_REQ_SET_MAC_MCAST,
+	/*!< Set the WINC multicast filters.
+	*/
+	M2M_WIFI_REQ_GET_PRNG,
+	/*!< Request PRNG.
+	*/
+	M2M_WIFI_RESP_GET_PRNG,
+	/*!< Response for PRNG.
+	*/
+	M2M_WIFI_REQ_SCAN_SSID_LIST,
+	/*!< Request scan with list of hidden SSID plus the broadcast scan.
+	*/
+	M2M_WIFI_MAX_CONFIG_ALL,
+}tenuM2mConfigCmd;
+
+/*!
+@enum	\
+	tenuM2mStaCmd
+	
+@brief
+	This enum contains all the WINC commands while in Station mode.
+*/
+typedef enum {
+	M2M_WIFI_REQ_CONNECT = M2M_STA_CMD_BASE,
+	/*!< Connect with AP command.
+	*/
+	M2M_WIFI_REQ_DEFAULT_CONNECT,
+	/*!< Connect with default AP command.
+	*/
+	M2M_WIFI_RESP_DEFAULT_CONNECT,
+	/*!< Request connection information response.
+	*/
+	M2M_WIFI_REQ_DISCONNECT,
+	/*!< Request to disconnect from AP command.
+	*/
+	M2M_WIFI_RESP_CON_STATE_CHANGED,
+	/*!< Connection state changed response.
+	*/
+	M2M_WIFI_REQ_SLEEP,
+	/*!< Set PS mode command.
+	*/
+	M2M_WIFI_REQ_WPS_SCAN,
+	/*!< Request WPS scan command.
+	*/
+	M2M_WIFI_REQ_WPS,
+	/*!< Request WPS start command.
+	*/
+	M2M_WIFI_REQ_START_WPS,
+	/*!< This command is for internal use by the WINC and 
+		should not be used by the host driver.
+	*/
+	M2M_WIFI_REQ_DISABLE_WPS,
+	/*!< Request to disable WPS command.
+	*/
+	M2M_WIFI_REQ_DHCP_CONF,
+	/*!< Response indicating that IP address was obtained.
+	*/
+	M2M_WIFI_RESP_IP_CONFIGURED,
+	/*!< This command is for internal use by the WINC and 
+		should not be used by the host driver.
+	*/
+	M2M_WIFI_RESP_IP_CONFLICT,
+	/*!< Response indicating a conflict in obtained IP address.
+		The user should re attempt the DHCP request.
+	*/
+	M2M_WIFI_REQ_ENABLE_MONITORING,
+	/*!< Request to enable monitor mode  command.
+	*/
+	M2M_WIFI_REQ_DISABLE_MONITORING,
+	/*!< Request to disable monitor mode  command.
+	*/
+	M2M_WIFI_RESP_WIFI_RX_PACKET,
+	/*!< Indicate that a packet was received in monitor mode.
+	*/
+	M2M_WIFI_REQ_SEND_WIFI_PACKET,
+	/*!< Send packet in monitor mode.
+	*/
+	M2M_WIFI_REQ_LSN_INT,
+	/*!< Set WiFi listen interval.
+	*/
+	M2M_WIFI_REQ_DOZE,
+	/*!< Used to force the WINC to sleep in manual PS mode.
+	*/
+	M2M_WIFI_MAX_STA_ALL,
+} tenuM2mStaCmd;
+
+/*!
+@enum	\
+	tenuM2mApCmd
+
+@brief
+	This enum contains all the WINC commands while in AP mode.
+*/
+typedef enum {
+	M2M_WIFI_REQ_ENABLE_AP = M2M_AP_CMD_BASE,
+	/*!< Enable AP mode command.
+	*/
+	M2M_WIFI_REQ_DISABLE_AP,
+	/*!< Disable AP mode command.
+	*/
+	M2M_WIFI_MAX_AP_ALL,
+}tenuM2mApCmd;
+
+/*!
+@enum	\
+	tenuM2mP2pCmd
+
+@brief
+	This enum contains all the WINC commands while in P2P mode.
+*/
+typedef enum {
+	M2M_WIFI_REQ_P2P_INT_CONNECT = M2M_P2P_CMD_BASE,
+	/*!< This command is for internal use by the WINC and 
+		should not be used by the host driver.
+	*/
+	M2M_WIFI_REQ_ENABLE_P2P,
+	/*!< Enable P2P mode command.
+	*/
+	M2M_WIFI_REQ_DISABLE_P2P,
+	/*!< Disable P2P mode command.
+	*/
+	M2M_WIFI_REQ_P2P_REPOST,
+	/*!< This command is for internal use by the WINC and 
+		should not be used by the host driver.
+	*/
+	M2M_WIFI_MAX_P2P_ALL,
+}tenuM2mP2pCmd;
+
+
+
+/*!
+@enum	\
+	tenuM2mServerCmd
+
+@brief
+	This enum contains all the WINC commands while in PS mode.
+	These command are currently not supported.
+*/
+typedef enum {
+	M2M_WIFI_REQ_CLIENT_CTRL = M2M_SERVER_CMD_BASE,
+	M2M_WIFI_RESP_CLIENT_INFO,
+	M2M_WIFI_REQ_SERVER_INIT,
+	M2M_WIFI_MAX_SERVER_ALL
+}tenuM2mServerCmd;
+
+
+
+/*!
+@enum	\
+	tenuM2mOtaCmd
+	
+@brief
+
+*/
+typedef enum {
+	M2M_OTA_REQ_NOTIF_SET_URL = M2M_OTA_CMD_BASE,
+	M2M_OTA_REQ_NOTIF_CHECK_FOR_UPDATE,
+	M2M_OTA_REQ_NOTIF_SCHED,
+	M2M_OTA_REQ_START_UPDATE,
+	M2M_OTA_REQ_SWITCH_FIRMWARE,
+	M2M_OTA_REQ_ROLLBACK,
+	M2M_OTA_RESP_NOTIF_UPDATE_INFO,
+	M2M_OTA_RESP_UPDATE_STATUS,
+	M2M_OTA_REQ_TEST,
+	M2M_OTA_MAX_ALL,
+}tenuM2mOtaCmd;
+
+/*!
+@enum	\
+	tenuM2mCryptoCmd
+
+@brief
+
+*/
+typedef enum {
+	M2M_CRYPTO_REQ_SHA256_INIT = M2M_CRYPTO_CMD_BASE,
+	M2M_CRYPTO_RESP_SHA256_INIT,
+	M2M_CRYPTO_REQ_SHA256_UPDATE,
+	M2M_CRYPTO_RESP_SHA256_UPDATE,
+	M2M_CRYPTO_REQ_SHA256_FINSIH,
+	M2M_CRYPTO_RESP_SHA256_FINSIH,
+	M2M_CRYPTO_REQ_RSA_SIGN_GEN,
+	M2M_CRYPTO_RESP_RSA_SIGN_GEN,
+	M2M_CRYPTO_REQ_RSA_SIGN_VERIFY,
+	M2M_CRYPTO_RESP_RSA_SIGN_VERIFY,
+	M2M_CRYPTO_MAX_ALL,
+}tenuM2mCryptoCmd;
+
+/*!
+@enum	\
+	tenuM2mIpCmd
+
+@brief
+
+*/
+typedef enum {
+	/* Request IDs corresponding to the IP GROUP. */
+	M2M_IP_REQ_STATIC_IP_CONF = ((uint8) 10),
+	M2M_IP_REQ_ENABLE_DHCP,
+	M2M_IP_REQ_DISABLE_DHCP
+} tenuM2mIpCmd;
+
+/*!
+@enum	\
+	tenuM2mSigmaCmd
+	
+@brief
+
+*/
+typedef enum {
+	/* Request IDs corresponding to the IP GROUP. */
+	M2M_SIGMA_ENABLE = ((uint8) 3),
+	M2M_SIGMA_TA_START,
+	M2M_SIGMA_TA_STATS,
+	M2M_SIGMA_TA_RECEIVE_STOP,
+	M2M_SIGMA_ICMP_ARP,
+	M2M_SIGMA_ICMP_RX,
+	M2M_SIGMA_ICMP_TX,
+	M2M_SIGMA_UDP_TX,
+	M2M_SIGMA_UDP_TX_DEFER,
+	M2M_SIGMA_SECURITY_POLICY,
+	M2M_SIGMA_SET_SYSTIME
+} tenuM2mSigmaCmd;
+
+
+/*!
+@enum	\
+	tenuM2mConnState
+
+@brief
+	Wi-Fi Connection State.
+*/
+typedef enum {
+	M2M_WIFI_DISCONNECTED = 0,
+	/*!< Wi-Fi state is disconnected.
+	*/
+	M2M_WIFI_CONNECTED,
+	/*!< Wi-Fi state is connected.
+	*/
+	M2M_WIFI_UNDEF = 0xff
+	/*!< Undefined Wi-Fi State.
+	*/
+}tenuM2mConnState;
+
+/*!
+@enum	\
+	tenuM2mSecType
+
+@brief
+	Wi-Fi Supported Security types.
+*/
+typedef enum {
+	M2M_WIFI_SEC_INVALID = 0,
+	/*!< Invalid security type.
+	*/
+	M2M_WIFI_SEC_OPEN,
+	/*!< Wi-Fi network is not secured.
+	*/
+	M2M_WIFI_SEC_WPA_PSK,
+	/*!< Wi-Fi network is secured with WPA/WPA2 personal(PSK).
+	*/
+	M2M_WIFI_SEC_WEP,
+	/*!< Security type WEP (40 or 104) OPEN OR SHARED.
+	*/
+	M2M_WIFI_SEC_802_1X
+	/*!< Wi-Fi network is secured with WPA/WPA2 Enterprise.IEEE802.1x user-name/password authentication.
+	 */
+}tenuM2mSecType;
+
+
+/*!
+@enum	\
+	tenuM2mSecType
+
+@brief
+	Wi-Fi Supported SSID types.
+*/
+typedef enum {
+	SSID_MODE_VISIBLE = 0,
+	/*!< SSID is visible to others.
+	*/
+	SSID_MODE_HIDDEN
+	/*!< SSID is hidden.
+	*/
+}tenuM2mSsidMode;
+
+/*!
+@enum	\
+	tenuM2mScanCh
+
+@brief
+	Wi-Fi RF Channels.
+*/
+typedef enum {
+	M2M_WIFI_CH_1 = ((uint8) 1),
+	M2M_WIFI_CH_2,
+	M2M_WIFI_CH_3,
+	M2M_WIFI_CH_4,
+	M2M_WIFI_CH_5,
+	M2M_WIFI_CH_6,
+	M2M_WIFI_CH_7,
+	M2M_WIFI_CH_8,
+	M2M_WIFI_CH_9,
+	M2M_WIFI_CH_10,
+	M2M_WIFI_CH_11,
+	M2M_WIFI_CH_12,
+	M2M_WIFI_CH_13,
+	M2M_WIFI_CH_14,
+	M2M_WIFI_CH_ALL = ((uint8) 255)
+}tenuM2mScanCh;
+
+/*!
+@enum	\
+	tenuM2mScanRegion
+
+@brief
+	Wi-Fi RF Channels.
+*/
+typedef enum {
+
+	REG_CH_1 = ((uint16) 1 << 0),
+	REG_CH_2 = ((uint16) 1 << 1),
+	REG_CH_3 = ((uint16) 1 << 2),
+	REG_CH_4 = ((uint16) 1 << 3),
+	REG_CH_5 = ((uint16) 1 << 4),
+	REG_CH_6 = ((uint16) 1 << 5),
+	REG_CH_7 = ((uint16) 1 << 6),
+	REG_CH_8 = ((uint16) 1 << 7),
+	REG_CH_9 = ((uint16) 1 << 8),
+	REG_CH_10 = ((uint16) 1 << 9),
+	REG_CH_11 = ((uint16) 1 << 10),
+	REG_CH_12 = ((uint16) 1 << 11),
+	REG_CH_13 = ((uint16) 1 << 12),
+	REG_CH_14 = ((uint16) 1 << 13),
+	REG_CH_ALL = ((uint16) 0x3FFF),
+	NORTH_AMERICA = ((uint16) 0x7FF),
+	/** 11 channel
+	*/
+	EUROPE		=   ((uint16) 0x1FFF),
+	/** 13 channel
+	*/
+	ASIA		=   ((uint16) 0x3FFF)
+	/* 14 channel
+	*/
+}tenuM2mScanRegion;
 
 
+/*!
+@enum	\
+	tenuPowerSaveModes
+
+@brief
+	Power Save Modes.
+*/
+typedef enum {
+	M2M_NO_PS,
+	/*!< Power save is disabled.
+	*/
+	M2M_PS_AUTOMATIC,
+	/*!< Power save is done automatically by the WINC.
+		This mode doesn't disable all of the WINC modules and 
+		use higher amount of power than the H_AUTOMATIC and 
+		the DEEP_AUTOMATIC modes..
+	*/
+	M2M_PS_H_AUTOMATIC,
+	/*!< Power save is done automatically by the WINC.
+		Achieve higher power save than the AUTOMATIC mode
+		by shutting down more parts of the WINC board.
+	*/
+	M2M_PS_DEEP_AUTOMATIC,
+	/*!< Power save is done automatically by the WINC.
+		Achieve the highest possible power save.
+	*/
+	M2M_PS_MANUAL
+	/*!< Power save is done manually by the user.
+	*/
+}tenuPowerSaveModes;
+
+/*!
+@enum	\
+	tenuM2mWifiMode
+	
+@brief
+	Wi-Fi Operation Mode.
+*/
+typedef enum {
+	M2M_WIFI_MODE_NORMAL = ((uint8) 1),
+	/*!< Normal Mode means to run customer firmware version.
+	 */
+	M2M_WIFI_MODE_ATE_HIGH,
+	/*!< Config Mode in HIGH POWER means to run production test firmware version which is known as ATE (Burst) firmware.
+	 */
+	M2M_WIFI_MODE_ATE_LOW,
+	/*!< Config Mode in LOW POWER means to run production test firmware version which is known as ATE (Burst) firmware.
+	 */
+	M2M_WIFI_MODE_ETHERNET,
+	/*!< etherent Mode
+	 */
+	M2M_WIFI_MODE_MAX,
+}tenuM2mWifiMode;
+
+/*!
+@enum	\
+	tenuWPSTrigger
+
+@brief
+	WPS Triggering Methods.
+*/
+typedef enum{
+	WPS_PIN_TRIGGER = 0,
+	/*!< WPS is triggered in PIN method.
+	*/
+	WPS_PBC_TRIGGER = 4
+	/*!< WPS is triggered via push button.
+	*/
+}tenuWPSTrigger;
+
+
+/*!
+@struct	\
+	tstrM2mWifiWepParams
+
+@brief
+	WEP security key parameters.
+*/
+typedef struct{
+	uint8	u8KeyIndx;
+	/*!< Wep key Index.
+	*/
+	uint8	u8KeySz;
+	/*!< Wep key Size.
+	*/
+	uint8	au8WepKey[WEP_104_KEY_STRING_SIZE + 1];
+	/*!< WEP Key represented as a NULL terminated ASCII string.
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes to keep the structure word alligned.
+	*/
+}tstrM2mWifiWepParams;
+
+
+/*!
+@struct	\
+	tstr1xAuthCredentials
+
+@brief
+	Credentials for the user to authenticate with the AAA server (WPA-Enterprise Mode IEEE802.1x).
+*/
+typedef struct{
+	uint8	au8UserName[M2M_1X_USR_NAME_MAX];
+	/*!< User Name. It must be Null terminated string.
+	*/
+	uint8	au8Passwd[M2M_1X_PWD_MAX];
+	/*!< Password corresponding to the user name. It must be Null terminated string.
+	*/
+}tstr1xAuthCredentials;
+
+
+/*!
+@union	\
+	tuniM2MWifiAuth
+
+@brief
+	Wi-Fi Security Parameters for all supported security modes.
+*/
+typedef union{
+	uint8				au8PSK[M2M_MAX_PSK_LEN];
+	/*!< Pre-Shared Key in case of WPA-Personal security.
+	*/
+	tstr1xAuthCredentials	strCred1x;
+	/*!< Credentials for RADIUS server authentication in case of WPA-Enterprise security.
+	*/
+	tstrM2mWifiWepParams	strWepInfo;
+	/*!< WEP key parameters in case of WEP security.
+	*/
+}tuniM2MWifiAuth;
+
+
+/*!
+@struct	\
+	tstrM2MWifiSecInfo
+
+@brief
+	Authentication credentials to connect to a Wi-Fi network.
+*/
+typedef struct{
+	tuniM2MWifiAuth		uniAuth;
+	/*!< Union holding all possible authentication parameters corresponding the current security types.
+	*/
+	uint8				u8SecType;
+	/*!< Wi-Fi network security type. See tenuM2mSecType for supported security types.
+	*/
+#define __PADDING__		(4 - ((sizeof(tuniM2MWifiAuth) + 1) % 4))
+	uint8				__PAD__[__PADDING__];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2MWifiSecInfo;
+
+
+/*!
+@struct	\
+	tstrM2mWifiConnect
+
+@brief
+	Wi-Fi Connect Request
+*/
+typedef struct{
+	tstrM2MWifiSecInfo		strSec;
+	/*!< Security parameters for authenticating with the AP.
+	*/
+	uint16				u16Ch;
+	/*!< RF Channel for the target SSID.
+	*/
+	uint8				au8SSID[M2M_MAX_SSID_LEN];
+	/*!< SSID of the desired AP. It must be NULL terminated string.
+	*/
+	uint8 				u8NoSaveCred;
+#define __CONN_PAD_SIZE__		(4 - ((sizeof(tstrM2MWifiSecInfo) + M2M_MAX_SSID_LEN + 3) % 4))
+	uint8				__PAD__[__CONN_PAD_SIZE__];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mWifiConnect;
+
+
+/*!
+@struct	\
+	tstrM2MWPSConnect
+
+@brief
+	WPS Configuration parameters
+
+@sa
+	tenuWPSTrigger
+*/
+typedef struct {
+	uint8 	u8TriggerType;
+	/*!< WPS triggering method (Push button or PIN)
+	*/
+	char         acPinNumber[8];
+	/*!< WPS PIN No (for PIN method)
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2MWPSConnect;
+
+
+/*!
+@struct	\
+	tstrM2MWPSInfo
+
+@brief	WPS Result
+
+	This structure is passed to the application in response to a WPS request. If the WPS session is completed successfully, the
+	structure will have Non-ZERO authentication type. If the WPS Session fails (due to error or timeout) the authentication type
+	is set to ZERO.
+
+@sa
+	tenuM2mSecType
+*/
+typedef struct{
+	uint8	u8AuthType;
+	/*!< Network authentication type.
+	*/
+	uint8   	u8Ch;
+	/*!< RF Channel for the AP.
+	*/
+	uint8	au8SSID[M2M_MAX_SSID_LEN];
+	/*!< SSID obtained from WPS.
+	*/
+	uint8	au8PSK[M2M_MAX_PSK_LEN];
+	/*!< PSK for the network obtained from WPS.
+	*/
+}tstrM2MWPSInfo;
+
+
+/*!
+@struct	\
+	tstrM2MDefaultConnResp
+
+@brief
+	Response error of the m2m_default_connect
+
+@sa
+	M2M_DEFAULT_CONN_SCAN_MISMATCH
+	M2M_DEFAULT_CONN_EMPTY_LIST
+*/
+typedef struct{
+	sint8		s8ErrorCode;
+	/*!<
+		Default connect error code. possible values are:
+		- M2M_DEFAULT_CONN_EMPTY_LIST
+		- M2M_DEFAULT_CONN_SCAN_MISMATCH
+	*/
+	uint8	__PAD24__[3];
+}tstrM2MDefaultConnResp;
+
+/*!
+@struct	\
+	tstrM2MScan
+
+@brief
+	Wi-Fi Scan Request
+
+@sa
+	tenuM2mScanCh
+*/
+typedef struct {
+	uint8   u8NumOfSlot;
+	/*|< The min number of slots is 2 for every channel,
+	every slot the soc will send Probe Request on air, and wait/listen for PROBE RESP/BEACONS for the u16slotTime
+	*/
+	uint8   u8SlotTime;
+	/*|< the time that the Soc will wait on every channel listening to the frames on air
+		when that time increaseed number of AP will increased in the scan results
+		min time is 10 ms and the max is 250 ms
+	*/
+	uint8  u8ProbesPerSlot;
+	/*!< Number of probe requests to be sent per channel scan slot.
+	*/
+	sint8   s8RssiThresh;
+	/*! < The RSSI threshold of the AP which will be connected to directly.
+	*/
+
+}tstrM2MScanOption;
+
+/*!
+@struct	\
+	tstrM2MScanRegion
+
+@brief
+	Wi-Fi channel regulation region information.
+
+@sa
+	tenuM2mScanRegion
+*/
+typedef struct {
+	uint16   u16ScanRegion;
+	/*|< Specifies the number of channels allowed in the region (e.g. North America = 11 ... etc.).
+	*/
+	uint8 __PAD16__[2];
+
+}tstrM2MScanRegion;
+
+/*!
+@struct	\
+	tstrM2MScan
+
+@brief
+	Wi-Fi Scan Request
+
+@sa
+	tenuM2mScanCh
+*/
+typedef struct {
+	uint8 	u8ChNum;
+	/*!< The Wi-Fi RF Channel number
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+
+}tstrM2MScan;
+
+/*!
+@struct	\
+	tstrCyptoResp
+
+@brief
+	crypto response
+*/
+typedef struct {
+	sint8 s8Resp;
+	/***/
+	uint8 __PAD24__[3];
+	/*
+	*/
+}tstrCyptoResp;
+
+
+/*!
+@struct	\
+	tstrM2mScanDone
+
+@brief
+	Wi-Fi Scan Result
+*/
+typedef struct{
+	uint8 	u8NumofCh;
+	/*!< Number of found APs
+	*/
+	sint8 	s8ScanState;
+	/*!< Scan status
+	*/
+	uint8	__PAD16__[2];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mScanDone;
+
+
+/*!
+@struct	\
+	tstrM2mReqScanResult
+
+@brief	Scan Result Request
+
+	The Wi-Fi Scan results list is stored in Firmware. The application can request a certain scan result by its index.
+*/
+typedef struct {
+	uint8 	u8Index;
+	/*!< Index of the desired scan result
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mReqScanResult;
+
+
+/*!
+@struct	\
+	tstrM2mWifiscanResult
+
+@brief	Wi-Fi Scan Result
+
+	Information corresponding to an AP in the Scan Result list identified by its order (index) in the list.
+*/
+typedef struct {
+	uint8 	u8index;
+	/*!< AP index in the scan result list.
+	*/
+	sint8 	s8rssi;
+	/*!< AP signal strength.
+	*/
+	uint8 	u8AuthType;
+	/*!< AP authentication type.
+	*/
+	uint8 	u8ch;
+	/*!< AP RF channel.
+	*/
+	uint8	au8BSSID[6];
+	/*!< BSSID of the AP.
+	*/
+	uint8 	au8SSID[M2M_MAX_SSID_LEN];
+	/*!< AP ssid.
+	*/
+	uint8 	_PAD8_;
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mWifiscanResult;
+
+
+/*!
+@struct	\
+	tstrM2mWifiStateChanged
+
+@brief
+	Wi-Fi Connection State
+
+@sa
+	M2M_WIFI_DISCONNECTED, M2M_WIFI_CONNECTED, M2M_WIFI_REQ_CON_STATE_CHANGED,tenuM2mConnChangedErrcode
+*/
+typedef struct {
+	uint8	u8CurrState;
+	/*!< Current Wi-Fi connection state
+	*/
+	uint8  u8ErrCode;
+	/*!< Error type review tenuM2mConnChangedErrcode
+	*/
+	uint8	__PAD16__[2];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mWifiStateChanged;
+
+
+/*!
+@struct	\
+	tstrM2mPsType
+
+@brief
+	Power Save Configuration
+
+@sa
+	tenuPowerSaveModes
+*/
+typedef struct{
+	uint8 	u8PsType;
+	/*!< Power save operating mode
+	*/
+	uint8 	u8BcastEn;
+	/*!<
+	*/
+	uint8	__PAD16__[2];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mPsType;
+
+/*!
+@struct	\
+	tstrM2mSlpReqTime
+
+@brief
+	Manual power save request sleep time
+
+*/
+typedef struct {
+	/*!< Sleep time in ms
+	*/
+	uint32 u32SleepTime;
+
+} tstrM2mSlpReqTime;
+
+/*!
+@struct	\
+	tstrM2mLsnInt
+
+@brief	Listen interval
+
+	It is the value of the Wi-Fi STA listen interval for power saving. It is given in units of Beacon period. 
+	Periodically after the listen interval fires, the WINC is wakeup and listen to the beacon and check for any buffered frames for it from the AP.
+*/
+typedef struct {
+	uint16 	u16LsnInt;
+	/*!< Listen interval in Beacon period count.
+	*/
+	uint8	__PAD16__[2];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mLsnInt;
+
+
+/*!
+@struct	\
+	tstrM2MWifiMonitorModeCtrl
+
+@brief	Wi-Fi Monitor Mode Filter
+
+	This structure sets the filtering criteria for WLAN packets when monitoring mode is enable. 
+	The received packets matching the filtering parameters, are passed directly to the application.
+*/
+typedef struct{
+	uint8	u8ChannelID;
+	/* !< RF Channel ID. It must use values from tenuM2mScanCh
+	*/
+	uint8	u8FrameType;
+	/*!< It must use values from tenuWifiFrameType.
+	*/
+	uint8	u8FrameSubtype;
+	/*!< It must use values from tenuSubTypes.
+	*/
+	uint8	au8SrcMacAddress[6];
+	/* ZERO means DO NOT FILTER Source address.
+	*/
+	uint8	au8DstMacAddress[6];
+	/* ZERO means DO NOT FILTER Destination address.
+	*/
+	uint8	au8BSSID[6];
+	/* ZERO means DO NOT FILTER BSSID.
+	*/
+	uint8 u8EnRecvHdr;
+	/*
+	 Enable recv the full hder before the payload	
+	*/
+	uint8	__PAD16__[2];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2MWifiMonitorModeCtrl;
+
+
+/*!
+@struct	\
+	tstrM2MWifiRxPacketInfo
+
+@brief	Wi-Fi RX Frame Header
+
+	The M2M application has the ability to allow Wi-Fi monitoring mode for receiving all Wi-Fi Raw frames matching a well defined filtering criteria.
+	When a target Wi-Fi packet is received, the header information are extracted and assigned in this structure. 
+*/
+typedef struct{
+	uint8	u8FrameType;
+	/*!< It must use values from tenuWifiFrameType.
+	*/
+	uint8	u8FrameSubtype;
+	/*!< It must use values from tenuSubTypes.
+	*/
+	uint8	u8ServiceClass;
+	/*!< Service class from Wi-Fi header.
+	*/
+	uint8	u8Priority;
+	/*!< Priority from Wi-Fi header.
+	*/
+	uint8	u8HeaderLength;
+	/*!< Frame Header length.
+	*/
+	uint8	u8CipherType;
+	/*!< Encryption type for the rx packet.
+	*/
+	uint8	au8SrcMacAddress[6];
+	/* ZERO means DO NOT FILTER Source address.
+	*/
+	uint8	au8DstMacAddress[6];
+	/* ZERO means DO NOT FILTER Destination address.
+	*/
+	uint8	au8BSSID[6];
+	/* ZERO means DO NOT FILTER BSSID.
+	*/
+	uint16	u16DataLength;
+	/*!< Data payload length (Header excluded).
+	*/
+	uint16	u16FrameLength;
+	/*!< Total frame length (Header + Data).
+	*/
+	uint32	u32DataRateKbps;
+	/*!< Data Rate in Kbps.
+	*/
+	sint8		s8RSSI;
+	/*!< RSSI.
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2MWifiRxPacketInfo;
+
+
+/*!
+@struct	\
+	tstrM2MWifiTxPacketInfo
+
+@brief	Wi-Fi TX Packet Info
+
+	The M2M Application has the ability to compose a RAW Wi-Fi frames (under the application responsibility).
+	When transmitting a Wi-Fi packet, the application must supply the firmware with this structure for sending the target frame.
+*/
+typedef struct{
+	uint16	u16PacketSize;
+	/*!< Wlan frame length.
+	*/
+	uint16	u16HeaderLength;
+	/*!< Wlan frame header length.
+	*/
+}tstrM2MWifiTxPacketInfo;
+
+
+/*!
+ @struct	\
+ 	tstrM2MP2PConnect
+
+ @brief
+ 	Set the device to operate in the Wi-Fi Direct (P2P) mode.
+*/
+typedef struct {
+	uint8 	u8ListenChannel;
+	/*!< P2P Listen Channel (1, 6 or 11)
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2MP2PConnect;
+
+/*!
+@struct	\
+	tstrM2MAPConfig
+
+@brief	AP Configuration
+
+	This structure holds the configuration parameters for the M2M AP mode. It should be set by the application when
+	it requests to enable the M2M AP operation mode. The M2M AP mode currently supports only WEP security (with
+	the NO Security option available of course).
+*/
+typedef struct {
+	/*!<
+		Configuration parameters for the WiFi AP.
+	*/
+	uint8 	au8SSID[M2M_MAX_SSID_LEN];
+	/*!< AP SSID
+	*/
+	uint8 	u8ListenChannel;
+	/*!< Wi-Fi RF Channel which the AP will operate on
+	*/
+	uint8	u8KeyIndx;
+	/*!< Wep key Index
+	*/
+	uint8	u8KeySz;
+	/*!< Wep key Size
+	*/
+	uint8	au8WepKey[WEP_104_KEY_STRING_SIZE + 1];
+	/*!< Wep key
+	*/
+	uint8 	u8SecType;
+	/*!< Security type: Open or WEP only in the current implementation
+	*/
+	uint8 	u8SsidHide;
+	/*!< SSID Status "Hidden(1)/Visible(0)"
+	*/
+	uint8	au8DHCPServerIP[4];
+	/*!< Ap IP server address
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing alignment
+	*/
+}tstrM2MAPConfig;
+
+
+/*!
+@struct	\
+	tstrM2mServerInit
+
+@brief
+	PS Server initialization.
+*/
+typedef struct {
+	uint8 	u8Channel;
+	/*!< Server Listen channel
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mServerInit;
+
+
+/*!
+@struct	\
+	tstrM2mClientState
+
+@brief
+	PS Client State.
+*/
+typedef struct {
+	uint8 	u8State;
+	/*!< PS Client State
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mClientState;
+
+
+/*!
+@struct	\
+	tstrM2Mservercmd
+
+@brief
+	PS Server CMD
+*/
+typedef struct {
+	uint8	u8cmd;
+	/*!< PS Server Cmd
+	*/
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2Mservercmd;
+
+
+/*!
+@struct	\
+	tstrM2mSetMacAddress
+
+@brief
+	Sets the MAC address from application. The WINC load the mac address from the effuse by default to the WINC configuration memory, 
+	but that function is used to let the application overwrite the configuration memory with the mac address from the host.
+
+@note
+	It's recommended to call this only once before calling connect request and after the m2m_wifi_init
+*/
+typedef struct {
+	uint8 	au8Mac[6];
+	/*!< MAC address array
+	*/
+	uint8	__PAD16__[2];
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2mSetMacAddress;
+
+
+/*!
+@struct	\
+ 	tstrM2MDeviceNameConfig
+
+@brief	Device name
+
+	It is assigned by the application. It is used mainly for Wi-Fi Direct device
+	discovery and WPS device information.
+*/
+typedef struct {
+	uint8 	au8DeviceName[M2M_DEVICE_NAME_MAX];
+	/*!< NULL terminated device name
+	*/
+}tstrM2MDeviceNameConfig;
+
+
+/*!
+@struct	\
+ 	tstrM2MIPConfig
+
+@brief
+ 	Static IP configuration.
+
+@note
+ 	All member IP addresses are expressed in Network Byte Order (eg. "192.168.10.1" will be expressed as 0x010AA8C0).
+ */
+typedef struct {
+	uint32 	u32StaticIP;
+	/*!< The static IP assigned to the device.
+	*/
+	uint32 	u32Gateway;
+	/*!< IP of the Default internet gateway.
+	*/
+	uint32 	u32DNS;
+	/*!< IP for the DNS server.
+	*/
+	uint32 	u32SubnetMask;
+	/*!< Subnet mask for the local area network.
+	*/
+} tstrM2MIPConfig;
+
+/*!
+@struct	\
+ 	tstrM2mIpRsvdPkt
+
+@brief
+ 	Received Packet Size and Data Offset
+
+ */
+typedef struct{
+	uint16	u16PktSz;
+	uint16	u16PktOffset;
+} tstrM2mIpRsvdPkt;
+
+
+/*!
+@struct	\
+ 	tstrM2MProvisionModeConfig
+
+@brief
+ 	M2M Provisioning Mode Configuration
+ */
+
+typedef struct {
+	tstrM2MAPConfig	strApConfig;
+	/*!<
+		Configuration parameters for the WiFi AP.
+	*/
+	char				acHttpServerDomainName[64];
+	/*!<
+		The device domain name for HTTP provisioning.
+	*/
+	uint8			u8EnableRedirect;
+	/*!<
+		A flag to enable/disable HTTP redirect feature for the HTTP Provisioning server. If the Redirect is enabled,
+		all HTTP traffic (http://URL) from the device associated with WINC AP will be redirected to the HTTP Provisioning Web page.
+		- 0 : Disable HTTP Redirect.
+		- 1 : Enable HTTP Redirect.
+	*/
+	uint8			__PAD24__[3];
+}tstrM2MProvisionModeConfig;
+
+
+/*!
+@struct	\
+ 	tstrM2MProvisionInfo
+
+@brief
+ 	M2M Provisioning Information obtained from the HTTP Provisioning server.
+ */
+typedef struct{
+	uint8	au8SSID[M2M_MAX_SSID_LEN];
+	/*!<
+		Provisioned SSID.
+	*/
+	uint8	au8Password[M2M_MAX_PSK_LEN];
+	/*!<
+		Provisioned Password.
+	*/
+	uint8	u8SecType;
+	/*!<
+		Wifi Security type.
+	*/
+	uint8	u8Status;
+	/*!<
+		Provisioning status. It must be checked before reading the provisioning information. It may be
+		- M2M_SUCCESS 	: Provision successful.
+		- M2M_FAIL		: Provision Failed.
+	*/
+}tstrM2MProvisionInfo;
+
+
+/*!
+@struct	\
+ 	tstrM2MConnInfo
+
+@brief
+ 	M2M Provisioning Information obtained from the HTTP Provisioning server.
+ */
+typedef struct{
+	char		acSSID[M2M_MAX_SSID_LEN];
+	/*!< AP connection SSID name  */
+	uint8	u8SecType;
+	/*!< Security type */
+	uint8	au8IPAddr[4];
+	/*!< Connection IP address */
+	uint8	au8MACAddress[6];
+	/*!< MAC address of the peer Wi-Fi station */ 
+	sint8	s8RSSI;
+	/*!< Connection RSSI signal */
+	uint8	__PAD24__[3];
+	/*!< Padding bytes for forcing 4-byte alignment */
+}tstrM2MConnInfo;
+
+/*!
+@struct	\
+ 	tstrOtaInitHdr
+
+@brief
+ 	OTA Image Header 
+ */
+
+typedef struct{
+	uint32 u32OtaMagicValue;
+	/*!< Magic value kept in the OTA image after the 
+	sha256 Digest buffer to define the Start of OTA Header */
+	uint32 u32OtaPayloadSzie;
+	/*!<
+	The Total OTA image payload size, include the sha256 key size
+	*/
+
+}tstrOtaInitHdr;
+	
+
+/*!
+@struct	\
+ 	tstrOtaControlSec
+
+@brief
+ 	Control section structure is used to define the working image and 
+	the validity of the roll-back image and its offset, also both firmware versions is kept in that structure.
+ */
+
+typedef struct {
+	uint32 u32OtaMagicValue;
+/*!<
+	Magic value used to ensure the structure is valid or not 
+*/
+	uint32 u32OtaFormatVersion;
+/*!<
+		NA   NA   NA   Flash version   cs struct version
+		00   00   00   00              00 
+	Control structure format version, the value will be incremented in case of structure changed or updated
+*/
+	uint32 u32OtaSequenceNumber;
+/*!<
+	Sequence number is used while update the control structure to keep track of how many times that section updated 
+*/
+	uint32 u32OtaLastCheckTime;
+/*!<
+	Last time OTA check for update
+*/
+	uint32 u32OtaCurrentworkingImagOffset;
+/*!<
+	Current working offset in flash 
+*/
+	uint32 u32OtaCurrentworkingImagFirmwareVer;
+/*!<
+	current working image version ex 18.0.1
+*/
+	uint32 u32OtaRollbackImageOffset;
+/*!<
+	Roll-back image offset in flash 
+*/
+	uint32 u32OtaRollbackImageValidStatus;
+/*!<
+	roll-back image valid status 
+*/
+	uint32 u32OtaRollbackImagFirmwareVer;
+/*!<
+	Roll-back image version (ex 18.0.3)
+*/
+	uint32 u32OtaCortusAppWorkingOffset;
+/*!<
+	cortus app working offset in flash 
+*/
+	uint32 u32OtaCortusAppWorkingValidSts;
+/*!<
+	Working Cortus app valid status 
+*/
+	uint32 u32OtaCortusAppWorkingVer;
+/*!<
+	Working cortus app version (ex 18.0.3)
+*/
+	uint32 u32OtaCortusAppRollbackOffset;
+/*!<
+	cortus app rollback offset in flash 
+*/
+	uint32 u32OtaCortusAppRollbackValidSts;
+/*!<
+	roll-back cortus app valid status 
+*/
+	uint32 u32OtaCortusAppRollbackVer;
+/*!<
+	Roll-back cortus app version (ex 18.0.3)
+*/
+	uint32 u32OtaControlSecCrc;
+/*!<
+	CRC for the control structure to ensure validity 
+*/
+} tstrOtaControlSec;
+
+/*!
+@enum	\
+	tenuOtaUpdateStatus
+
+@brief
+	OTA return status
+*/
+typedef enum {
+	OTA_STATUS_SUCSESS        = 0,
+	/*!< OTA Success with not errors. */
+	OTA_STATUS_FAIL           = 1,
+	/*!< OTA generic fail. */
+	OTA_STATUS_INVAILD_ARG    = 2,
+	/*!< Invalid or malformed download URL. */
+	OTA_STATUS_INVAILD_RB_IMAGE    = 3,
+	/*!< Invalid rollback image. */
+	OTA_STATUS_INVAILD_FLASH_SIZE    = 4,
+	/*!< Flash size on device is not enough for OTA. */
+	OTA_STATUS_AlREADY_ENABLED    = 5,
+	/*!< An OTA operation is already enabled. */
+	OTA_STATUS_UPDATE_INPROGRESS    = 6,
+	/*!< An OTA operation update is in progress */
+	OTA_STATUS_IMAGE_VERIF_FAILED = 7,
+	/*!<  OTA Verfication failed */
+	OTA_STATUS_CONNECTION_ERROR = 8,
+	/*!< OTA connection error */
+	OTA_STATUS_SERVER_ERROR = 9,
+	/*!< OTA server Error (file not found or else ...) */
+} tenuOtaUpdateStatus;
+/*!
+@enum	\
+	tenuOtaUpdateStatusType
+
+@brief
+	OTA update Status type
+*/
+typedef enum {
+
+	DL_STATUS        = 1,
+	/*!< Download OTA file status
+	*/
+	SW_STATUS        = 2,
+	/*!< Switching to the upgrade firmware status
+	*/
+	RB_STATUS        = 3,
+	/*!< Roll-back status
+	*/
+}tenuOtaUpdateStatusType;
+
+
+/*!
+@struct	\
+	tstrOtaUpdateStatusResp
+
+@brief
+	OTA Update Information
+
+@sa
+	tenuWPSTrigger
+*/
+typedef struct {
+	uint8	u8OtaUpdateStatusType;
+	/*!<
+		Status type tenuOtaUpdateStatusType
+	*/
+	uint8	u8OtaUpdateStatus;
+	/*!<
+	OTA_SUCCESS 						
+	OTA_ERR_WORKING_IMAGE_LOAD_FAIL		
+	OTA_ERR_INVAILD_CONTROL_SEC			
+	M2M_ERR_OTA_SWITCH_FAIL     		
+	M2M_ERR_OTA_START_UPDATE_FAIL     	
+	M2M_ERR_OTA_ROLLBACK_FAIL     		
+	M2M_ERR_OTA_INVAILD_FLASH_SIZE     	
+	M2M_ERR_OTA_INVAILD_ARG		     
+	*/
+	uint8 _PAD16_[2];
+}tstrOtaUpdateStatusResp;
+
+/*!
+@struct	\
+	tstrOtaUpdateInfo
+
+@brief
+	OTA Update Information
+
+@sa
+	tenuWPSTrigger
+*/
+typedef struct {
+	uint32	u8NcfUpgradeVersion;
+	/*!< NCF OTA Upgrade Version
+	*/
+	uint32	u8NcfCurrentVersion;
+	/*!< NCF OTA Current firmware version
+	*/
+	uint32	u8NcdUpgradeVersion;
+	/*!< NCD (host) upgraded version (if the u8NcdRequiredUpgrade == true)
+	*/
+	uint8	u8NcdRequiredUpgrade;
+	/*!< NCD Required upgrade to the above version
+	*/
+	uint8 	u8DownloadUrlOffset;
+	/*!< Download URL offset in the received packet
+	*/
+	uint8 	u8DownloadUrlSize;
+	/*!< Download URL size in the received packet
+	*/
+	uint8	__PAD8__;
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+} tstrOtaUpdateInfo;
+
+/*!
+@struct	\
+	tstrSystemTime
+
+@brief
+	Used for time storage.
+*/
+typedef struct{
+	uint16	u16Year;
+	uint8	u8Month;
+	uint8	u8Day;
+	uint8	u8Hour;
+	uint8	u8Minute;
+	uint8	u8Second;
+}tstrSystemTime;
+
+/*!
+@struct	\
+ 	tstrM2MMulticastMac
+
+@brief
+ 	M2M add/remove multi-cast mac address
+ */
+ typedef struct {
+	uint8 au8macaddress[M2M_MAC_ADDRES_LEN];
+	/*!<
+		Mac address needed to be added or removed from filter.
+	*/
+	uint8 u8AddRemove;
+	/*!<
+		set by 1 to add or 0 to remove from filter.
+	*/
+	uint8	__PAD8__;
+	/*!< Padding bytes for forcing 4-byte alignment
+	*/
+}tstrM2MMulticastMac;
+
+/*!
+@struct	\
+ 	tstrPrng
+
+@brief
+ 	M2M Request PRNG
+ */
+ typedef struct {
+	 /*!<
+		return buffer address
+	*/
+	uint8 *pu8RngBuff;
+	 /*!<
+		PRNG size requested
+	*/
+	uint16 	u16PrngSize;
+	/*!<
+		PRNG pads
+	*/
+	uint8 __PAD16__[2];
+}tstrPrng;
+
+
+ /**@}*/
+
+#endif
+
--- a/wifi_host_driver/socket/include/socket.h	Mon Jun 19 17:40:26 2017 +0000
+++ b/wifi_host_driver/socket/include/socket.h	Thu Jun 22 01:13:11 2017 +0000
@@ -825,7 +825,7 @@
 NMI_API void socketInit(void);
 
 /*!
-@fn	\			
+@fn	\
 	NMI_API void socketDeinit(void);
 
 @brief	Socket Layer De-initialization
@@ -1222,7 +1222,7 @@
  */
  /**@{*/
 /*!
-@fn	\	
+@fn	\
 	NMI_API sint8 connect(SOCKET sock, struct sockaddr *pstrAddr, uint8 u8AddrLen);
 
 @param [in]	sock
@@ -1444,7 +1444,7 @@
  */
  /**@{*/
 /*!
-@fn	\	
+@fn	\
 	NMI_API sint16 recvfrom(SOCKET sock, void *pvRecvBuf, uint16 u16BufLen, uint32 u32TimeoutSeconds);
 
 @param [in]	sock
@@ -1551,7 +1551,7 @@
  */
  /**@{*/
 /*!
-@fn	\		
+@fn	\
 	NMI_API sint16 send(SOCKET sock, void *pvSendBuffer, uint16 u16SendLength, uint16 u16Flags);
 
 @param [in]	sock
@@ -1841,7 +1841,7 @@
  */
  /**@{*/
 /*!
-@fn	\		
+@fn	\
 	NMI_API sint8 setsockopt(SOCKET socket, uint8 u8Level, uint8 option_name,
        const void *option_value, uint16 u16OptionLen);
 
@@ -1931,4 +1931,3 @@
 #endif /* __SOCKET_H__ */
 
 
-
Binary file wifidevice.o has changed