diff options
Diffstat (limited to 'cc3200/simplelink/include')
| -rw-r--r-- | cc3200/simplelink/include/device.h | 635 | ||||
| -rw-r--r-- | cc3200/simplelink/include/fs.h | 380 | ||||
| -rw-r--r-- | cc3200/simplelink/include/netapp.h | 845 | ||||
| -rw-r--r-- | cc3200/simplelink/include/netcfg.h | 281 | ||||
| -rw-r--r-- | cc3200/simplelink/include/simplelink.h | 592 | ||||
| -rw-r--r-- | cc3200/simplelink/include/socket.h | 1498 | ||||
| -rw-r--r-- | cc3200/simplelink/include/trace.h | 202 | ||||
| -rw-r--r-- | cc3200/simplelink/include/wlan.h | 1320 | ||||
| -rw-r--r-- | cc3200/simplelink/include/wlan_rx_filters.h | 930 |
9 files changed, 0 insertions, 6683 deletions
diff --git a/cc3200/simplelink/include/device.h b/cc3200/simplelink/include/device.h deleted file mode 100644 index 3f505c94d..000000000 --- a/cc3200/simplelink/include/device.h +++ /dev/null @@ -1,635 +0,0 @@ -/* - * device.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - -#ifndef __DEVICE_H__ -#define __DEVICE_H__ - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ -#include "simplelink.h" - -#ifdef __cplusplus -extern "C" { -#endif - - - -/*! - - \addtogroup device - @{ - -*/ - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - - -/* SL internal Error codes */ - -/* Receive this error in case there are no resources to issue the command - If possible, increase the number of MAX_CUNCURENT_ACTIONS (result in memory increase) - If not, try again later */ -#define SL_POOL_IS_EMPTY (-2000) - -/* Receive this error in case a given length for RX buffer was too small. - Receive payload was bigger than the given buffer size. Therefore, payload is cut according to receive size - Recommend to increase buffer size */ -#define SL_ESMALLBUF (-2001) - -/* Receive this error in case zero length is supplied to a "get" API - Recommend to supply length according to requested information (view options defines for help) */ -#define SL_EZEROLEN (-2002) - -/* User supplied invalid parameter */ -#define SL_INVALPARAM (-2003) - -/* End of SL internal Error codes */ - - - -/*****************************************************************************/ -/* Errors returned from the general error async event */ -/*****************************************************************************/ - -/* Send types */ -typedef enum -{ - SL_ERR_SENDER_HEALTH_MON, - SL_ERR_SENDER_CLI_UART, - SL_ERR_SENDER_SUPPLICANT, - SL_ERR_SENDER_NETWORK_STACK, - SL_ERR_SENDER_WLAN_DRV_IF, - SL_ERR_SENDER_WILINK, - SL_ERR_SENDER_INIT_APP, - SL_ERR_SENDER_NETX, - SL_ERR_SENDER_HOST_APD, - SL_ERR_SENDER_MDNS, - SL_ERR_SENDER_HTTP_SERVER, - SL_ERR_SENDER_DHCP_SERVER, - SL_ERR_SENDER_DHCP_CLIENT, - SL_ERR_DISPATCHER, - SL_ERR_NUM_SENDER_LAST=0xFF -}SlErrorSender_e; - - -/* Error codes */ -#define SL_ERROR_STATIC_ADDR_SUBNET_ERROR (-60) /* network stack error*/ -#define SL_ERROR_ILLEGAL_CHANNEL (-61) /* supplicant error */ -#define SL_ERROR_SUPPLICANT_ERROR (-72) /* init error code */ -#define SL_ERROR_HOSTAPD_INIT_FAIL (-73) /* init error code */ -#define SL_ERROR_HOSTAPD_INIT_IF_FAIL (-74) /* init error code */ -#define SL_ERROR_WLAN_DRV_INIT_FAIL (-75) /* init error code */ -#define SL_ERROR_WLAN_DRV_START_FAIL (-76) /* wlan start error */ -#define SL_ERROR_FS_FILE_TABLE_LOAD_FAILED (-77) /* init file system failed */ -#define SL_ERROR_PREFERRED_NETWORKS_FILE_LOAD_FAILED (-78) /* init file system failed */ -#define SL_ERROR_HOSTAPD_BSSID_VALIDATION_ERROR (-79) /* Ap configurations BSSID error */ -#define SL_ERROR_HOSTAPD_FAILED_TO_SETUP_INTERFACE (-80) /* Ap configurations interface error */ -#define SL_ERROR_MDNS_ENABLE_FAIL (-81) /* mDNS enable failed */ -#define SL_ERROR_HTTP_SERVER_ENABLE_FAILED (-82) /* HTTP server enable failed */ -#define SL_ERROR_DHCP_SERVER_ENABLE_FAILED (-83) /* DHCP server enable failed */ -#define SL_ERROR_PREFERRED_NETWORK_LIST_FULL (-93) /* supplicant error */ -#define SL_ERROR_PREFERRED_NETWORKS_FILE_WRITE_FAILED (-94) /* supplicant error */ -#define SL_ERROR_DHCP_CLIENT_RENEW_FAILED (-100) /* DHCP client error */ -/* WLAN Connection management status */ -#define SL_ERROR_CON_MGMT_STATUS_UNSPECIFIED (-102) -#define SL_ERROR_CON_MGMT_STATUS_AUTH_REJECT (-103) -#define SL_ERROR_CON_MGMT_STATUS_ASSOC_REJECT (-104) -#define SL_ERROR_CON_MGMT_STATUS_SECURITY_FAILURE (-105) -#define SL_ERROR_CON_MGMT_STATUS_AP_DEAUTHENTICATE (-106) -#define SL_ERROR_CON_MGMT_STATUS_AP_DISASSOCIATE (-107) -#define SL_ERROR_CON_MGMT_STATUS_ROAMING_TRIGGER (-108) -#define SL_ERROR_CON_MGMT_STATUS_DISCONNECT_DURING_CONNECT (-109) -#define SL_ERROR_CON_MGMT_STATUS_SG_RESELECT (-110) -#define SL_ERROR_CON_MGMT_STATUS_ROC_FAILURE (-111) -#define SL_ERROR_CON_MGMT_STATUS_MIC_FAILURE (-112) -/* end of WLAN connection management error statuses */ -#define SL_ERROR_WAKELOCK_ERROR_PREFIX (-115) /* Wake lock expired */ -#define SL_ERROR_LENGTH_ERROR_PREFIX (-116) /* Uart header length error */ -#define SL_ERROR_MDNS_CREATE_FAIL (-121) /* mDNS create failed */ -#define SL_ERROR_GENERAL_ERROR (-127) - - - -#define SL_DEVICE_GENERAL_CONFIGURATION (1) -#define SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME (11) -#define SL_DEVICE_GENERAL_VERSION (12) -#define SL_DEVICE_STATUS (2) - -/* - Declare the different event group classifications - The SimpleLink device send asynchronous events. Each event has a group - classification according to its nature. -*/ -/* SL_EVENT_CLASS_WLAN connection user events */ -#define SL_WLAN_CONNECT_EVENT (1) -#define SL_WLAN_DISCONNECT_EVENT (2) -/* WLAN Smart Config user events */ -#define SL_WLAN_SMART_CONFIG_COMPLETE_EVENT (3) -#define SL_WLAN_SMART_CONFIG_STOP_EVENT (4) -/* WLAN AP user events */ -#define SL_WLAN_STA_CONNECTED_EVENT (5) -#define SL_WLAN_STA_DISCONNECTED_EVENT (6) -/* WLAN P2P user events */ -#define SL_WLAN_P2P_DEV_FOUND_EVENT (7) -#define SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT (8) -#define SL_WLAN_CONNECTION_FAILED_EVENT (9) -/* SL_EVENT_CLASS_DEVICE user events */ -#define SL_DEVICE_FATAL_ERROR_EVENT (1) -/* SL_EVENT_CLASS_BSD user events */ -#define SL_SOCKET_TX_FAILED_EVENT (1) -#define SL_SOCKET_ASYNC_EVENT (2) -/* SL_EVENT_CLASS_NETAPP user events */ -#define SL_NETAPP_IPV4_IPACQUIRED_EVENT (1) -#define SL_NETAPP_IPV6_IPACQUIRED_EVENT (2) -#define SL_NETAPP_IP_LEASED_EVENT (3) -#define SL_NETAPP_IP_RELEASED_EVENT (4) - -/* Server Events */ -#define SL_NETAPP_HTTPGETTOKENVALUE_EVENT (1) -#define SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT (2) - - -/* - Declare the different event group classifications for sl_DevGet - for getting status indications - */ - -/* Events list to mask/unmask*/ -#define SL_EVENT_CLASS_GLOBAL (0) -#define SL_EVENT_CLASS_DEVICE (1) -#define SL_EVENT_CLASS_WLAN (2) -#define SL_EVENT_CLASS_BSD (3) -#define SL_EVENT_CLASS_NETAPP (4) -#define SL_EVENT_CLASS_NETCFG (5) -#define SL_EVENT_CLASS_FS (6) - - -/****************** DEVICE CLASS status ****************/ -#define EVENT_DROPPED_DEVICE_ASYNC_GENERAL_ERROR (0x00000001L) -#define STATUS_DEVICE_SMART_CONFIG_ACTIVE (0x80000000L) - -/****************** WLAN CLASS status ****************/ -#define EVENT_DROPPED_WLAN_WLANASYNCONNECTEDRESPONSE (0x00000001L) -#define EVENT_DROPPED_WLAN_WLANASYNCDISCONNECTEDRESPONSE (0x00000002L) -#define EVENT_DROPPED_WLAN_STA_CONNECTED (0x00000004L) -#define EVENT_DROPPED_WLAN_STA_DISCONNECTED (0x00000008L) -#define STATUS_WLAN_STA_CONNECTED (0x80000000L) - -/****************** NETAPP CLASS status ****************/ -#define EVENT_DROPPED_NETAPP_IPACQUIRED (0x00000001L) -#define EVENT_DROPPED_NETAPP_IPACQUIRED_V6 (0x00000002L) -#define EVENT_DROPPED_NETAPP_IP_LEASED (0x00000004L) -#define EVENT_DROPPED_NETAPP_IP_RELEASED (0x00000008L) - -/****************** BSD CLASS status ****************/ -#define EVENT_DROPPED_SOCKET_TXFAILEDASYNCRESPONSE (0x00000001L) - -/****************** FS CLASS ****************/ - - - -/*****************************************************************************/ -/* Structure/Enum declarations */ -/*****************************************************************************/ - -#ifdef SL_IF_TYPE_UART -typedef struct -{ - _u32 BaudRate; - _u8 FlowControlEnable; - _u8 CommPort; -} SlUartIfParams_t; -#endif - -typedef struct -{ - _u32 ChipId; - _u32 FwVersion[4]; - _u8 PhyVersion[4]; -}_SlPartialVersion; - -typedef struct -{ - _SlPartialVersion ChipFwAndPhyVersion; - _u32 NwpVersion[4]; - _u16 RomVersion; - _u16 Padding; -}SlVersionFull; - -typedef struct -{ - _i8 status; - SlErrorSender_e sender; -}sl_DeviceReport; - -typedef union -{ - sl_DeviceReport deviceEvent; -} _SlDeviceEventData_u; - -typedef struct -{ - _u32 Event; - _SlDeviceEventData_u EventData; -} SlDeviceEvent_t; - -typedef struct -{ - /* time */ - _u32 sl_tm_sec; - _u32 sl_tm_min; - _u32 sl_tm_hour; - /* date */ - _u32 sl_tm_day; /* 1-31 */ - _u32 sl_tm_mon; /* 1-12 */ - _u32 sl_tm_year; /* YYYY 4 digits */ - _u32 sl_tm_week_day; /* not required */ - _u32 sl_tm_year_day; /* not required */ - _u32 reserved[3]; -}SlDateTime_t; - - -/******************************************************************************/ -/* Type declarations */ -/******************************************************************************/ -typedef void (*P_INIT_CALLBACK)(_u32 Status); - -/*****************************************************************************/ -/* Function prototypes */ -/*****************************************************************************/ - -/*! - \brief Start the SimpleLink device - - This function initialize the communication interface, set the enable pin - of the device, and call to the init complete callback. - - \param[in] pIfHdl Opened Interface Object. In case the interface - must be opened outside the SimpleLink Driver, the - user might give the handler to be used in \n - any access of the communication interface with the - device (UART/SPI). \n - The SimpleLink driver will open an interface port - only if this parameter is null! \n - \param[in] pDevName The name of the device to open. Could be used when - the pIfHdl is null, to transfer information to the - open interface function \n - This pointer could be used to pass additional information to - sl_IfOpen in case it is required (e.g. UART com port name) - \param[in] pInitCallBack Pointer to function that would be called - on completion of the initialization process.\n - If this parameter is NULL the function is - blocked until the device initialization - is completed, otherwise the function returns - immediately. - - \return Returns the current active role (STA/AP/P2P) or an error code: - - ROLE_STA, ROLE_AP, ROLE_P2P in case of success, - otherwise in failure one of the following is return: - - ROLE_STA_ERR (Failure to load MAC/PHY in STA role) - - ROLE_AP_ERR (Failure to load MAC/PHY in AP role) - - ROLE_P2P_ERR (Failure to load MAC/PHY in P2P role) - - - \sa sl_Stop - - \note belongs to \ref basic_api - - \warning This function must be called before any other SimpleLink API is used, or after sl_Stop is called for reinit the device - \par Example: - \code - An example for open interface without callback routine. The interface name and handler are - handled by the sl_IfOpen routine: - - if( sl_Start(NULL, NULL, NULL) < 0 ) - { - LOG("Error opening interface to device\n"); - } - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_Start) -_i16 sl_Start(const void* pIfHdl, _i8* pDevName, const P_INIT_CALLBACK pInitCallBack); -#endif - -/*! - \brief Stop the SimpleLink device - - This function clears the enable pin of the device, closes the communication \n - interface and invokes the stop complete callback - - \param[in] timeout Stop timeout in msec. Should be used to give the device time to finish \n - any transmission/reception that is not completed when the function was called. \n - Additional options: - - 0 Enter to hibernate immediately \n - - 0xFFFF Host waits for device's response before \n - hibernating, without timeout protection \n - - 0 < Timeout[msec] < 0xFFFF Host waits for device's response before \n - hibernating, with a defined timeout protection \n - This timeout defines the max time to wait. The NWP \n - response can be sent earlier than this timeout. - - \return On success, zero is returned. On error, -1 is returned - - \sa sl_Start - - \note This API will shutdown the device and invoke the "i/f close" function regardless \n - if it was opened implicitly or explicitly. \n - It is up to the platform interface library to properly handle interface close \n - routine \n - belongs to \ref basic_api \n - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Stop) -_i16 sl_Stop(_u16 timeout); -#endif - - -/*! - \brief Internal function for setting device configurations - - \return On success, zero is returned. On error, -1 is - returned - - \param[in] DeviceSetId configuration id - \param[in] Option configurations option - \param[in] ConfigLen configurations len - \param[in] pValues configurations values - - \sa - \note - \warning - \par Examples: - \code - Setting device time and date example: - - SlDateTime_t dateTime= {0}; - dateTime.sl_tm_day = (_u32)23; // Day of month (DD format) range 1-13 - dateTime.sl_tm_mon = (_u32)6; // Month (MM format) in the range of 1-12 - dateTime.sl_tm_year = (_u32)2014; // Year (YYYY format) - dateTime.sl_tm_hour = (_u32)17; // Hours in the range of 0-23 - dateTime.sl_tm_min = (_u32)55; // Minutes in the range of 0-59 - dateTime.sl_tm_sec = (_u32)22; // Seconds in the range of 0-59 - sl_DevSet(SL_DEVICE_GENERAL_CONFIGURATION, - SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME, - sizeof(SlDateTime_t), - (_u8 *)(&dateTime)); - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_DevSet) -_i32 sl_DevSet(_u8 DeviceSetId ,_u8 Option,_u8 ConfigLen, _u8 *pValues); -#endif - -/*! - \brief Internal function for getting device configurations - \return On success, zero is returned. On error, -1 is - returned - \param[in] DeviceGetId configuration id - example SL_DEVICE_STATUS - \param[out] pOption Get configurations option, example for get status options - - SL_EVENT_CLASS_GLOBAL - - SL_EVENT_CLASS_DEVICE - - SL_EVENT_CLASS_WLAN - - SL_EVENT_CLASS_BSD - - SL_EVENT_CLASS_NETAPP - - SL_EVENT_CLASS_NETCFG - - SL_EVENT_CLASS_FS - \param[out] pConfigLen The length of the allocated memory as input, when the - function complete, the value of this parameter would be - the len that actually read from the device.\n - If the device return length that is longer from the input - value, the function will cut the end of the returned structure - and will return SL_ESMALLBUF - \param[out] pValues Get configurations values - \sa - \note - \warning - \par Examples: - \code - Example for getting WLAN class status: - _u32 statusWlan; - _u8 pConfigOpt; - _u8 pConfigLen; - pConfigOpt = SL_EVENT_CLASS_WLAN; - sl_DevGet(SL_DEVICE_STATUS,&pConfigOpt,&pConfigLen,(_u8 *)(&statusWlan)); - Example for getting version: - SlVersionFull ver; - pConfigOpt = SL_DEVICE_GENERAL_VERSION; - sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION,&pConfigOpt,&pConfigLen,(_u8 *)(&ver)); - printf("CHIP %d\nMAC 31.%d.%d.%d.%d\nPHY %d.%d.%d.%d\nNWP %d.%d.%d.%d\nROM %d\nHOST %d.%d.%d.%d\n", - ver.ChipFwAndPhyVersion.ChipId, - ver.ChipFwAndPhyVersion.FwVersion[0],ver.ChipFwAndPhyVersion.FwVersion[1], - ver.ChipFwAndPhyVersion.FwVersion[2],ver.ChipFwAndPhyVersion.FwVersion[3], - ver.ChipFwAndPhyVersion.PhyVersion[0],ver.ChipFwAndPhyVersion.PhyVersion[1], - ver.ChipFwAndPhyVersion.PhyVersion[2],ver.ChipFwAndPhyVersion.PhyVersion[3], - ver.NwpVersion[0],ver.NwpVersion[1],ver.NwpVersion[2],ver.NwpVersion[3], - ver.RomVersion, - SL_MAJOR_VERSION_NUM,SL_MINOR_VERSION_NUM,SL_VERSION_NUM,SL_SUB_VERSION_NUM); - - \endcode - \code - Getting Device time and date example: - - SlDateTime_t dateTime = {0}; - _i8 configLen = sizeof(SlDateTime_t); - _i8 configOpt = SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME; - sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION,&configOpt, &configLen,(_u8 *)(&dateTime)); - - printf("Day %d,Mon %d,Year %d,Hour %,Min %d,Sec %d\n",dateTime.sl_tm_day,dateTime.sl_tm_mon,dateTime.sl_tm_year - dateTime.sl_tm_hour,dateTime.sl_tm_min,dateTime.sl_tm_sec); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_DevGet) -_i32 sl_DevGet(_u8 DeviceGetId, _u8 *pOption,_u8 *pConfigLen, _u8 *pValues); -#endif - - -/*! - \brief Set asynchronous event mask - - Mask asynchronous events from the device. Masked events do not - generate asynchronous messages from the device. - By default - all events are active - - \param[in] EventClass The classification groups that the - mask is referred to. Need to be one of - the following: - - SL_EVENT_CLASS_GLOBAL - - SL_EVENT_CLASS_DEVICE - - SL_EVENT_CLASS_WLAN - - SL_EVENT_CLASS_BSD - - SL_EVENT_CLASS_NETAPP - - SL_EVENT_CLASS_NETCFG - - SL_EVENT_CLASS_FS - - - \param[in] Mask Event Mask bitmap. Valid mask are (per group): - - SL_EVENT_CLASS_WLAN user events - - SL_WLAN_CONNECT_EVENT - - SL_WLAN_DISCONNECT_EVENT - - SL_EVENT_CLASS_DEVICE user events - - SL_DEVICE_FATAL_ERROR_EVENT - - SL_EVENT_CLASS_BSD user events - - SL_SOCKET_TX_FAILED_EVENT - - SL_SOCKET_ASYNC_EVENT - - SL_EVENT_CLASS_NETAPP user events - - SL_NETAPP_IPV4_IPACQUIRED_EVENT - - SL_NETAPP_IPV6_IPACQUIRED_EVENT - - \return On success, zero is returned. On error, -1 is returned - - \sa sl_EventMaskGet - - \note belongs to \ref ext_api - - \warning - \par Example: - \code - - An example of masking connection/disconnection async events from WLAN class: - sl_EventMaskSet(SL_EVENT_CLASS_WLAN, (SL_WLAN_CONNECT_EVENT | SL_WLAN_DISCONNECT_EVENT) ); - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_EventMaskSet) -_i16 sl_EventMaskSet(_u8 EventClass , _u32 Mask); -#endif - -/*! - \brief Get current event mask of the device - - return the events bit mask from the device. In case that event is - masked, the device is not sending this event. - - \param[in] EventClass The classification groups that the - mask is referred to. Need to be one of - the following: - - SL_EVENT_CLASS_GLOBAL - - SL_EVENT_CLASS_DEVICE - - SL_EVENT_CLASS_WLAN - - SL_EVENT_CLASS_BSD - - SL_EVENT_CLASS_NETAPP - - SL_EVENT_CLASS_NETCFG - - SL_EVENT_CLASS_FS - - \param[out] pMask Pointer to Mask bitmap where the - value should be stored. Bitmasks are the same as in \ref sl_EventMaskSet - - \return On success, zero is returned. On error, -1 is returned - - \sa sl_EventMaskSet - - \note belongs to \ref ext_api - - \warning - \par Example: - \code - - An example of getting an event mask for WLAN class - _u32 maskWlan; - sl_StatusGet(SL_EVENT_CLASS_WLAN,&maskWlan); - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_EventMaskGet) -_i16 sl_EventMaskGet(_u8 EventClass, _u32 *pMask); -#endif - - -/*! - \brief the simple link task entry - - \Param - This function must be called from the main loop or from dedicated thread in - the following cases: - - Non-Os Platform - should be called from the mail loop - - Multi Threaded Platform when the user does not implement the external spawn functions - - should be called from dedicated thread allocated to the simplelink driver. - In this mode the function never return. - - \return None - - \sa sl_Stop - - \note belongs to \ref basic_api - - \warning This function must be called from a thread that is start running before - any call to other simple link API -*/ -#if _SL_INCLUDE_FUNC(sl_Task) -void sl_Task(void); -#endif - - -/*! - \brief Setting the internal uart mode - - \param[in] pUartParams Pointer to the uart configuration parameter set: - baudrate - up to 711 Kbps - flow control - enable/disable - comm port - the comm port number - - \return On success zero is returned, otherwise - Failed. - - \sa sl_Stop - - \note belongs to \ref basic_api - - \warning This function must consider the host uart capability -*/ -#ifdef SL_IF_TYPE_UART -#if _SL_INCLUDE_FUNC(sl_UartSetMode) -_i16 sl_UartSetMode(const SlUartIfParams_t* pUartParams); -#endif -#endif - -/*! - - Close the Doxygen group. - @} - - */ - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __DEVICE_H__ */ - - diff --git a/cc3200/simplelink/include/fs.h b/cc3200/simplelink/include/fs.h deleted file mode 100644 index 094b03813..000000000 --- a/cc3200/simplelink/include/fs.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * fs.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - -#ifndef __FS_H__ -#define __FS_H__ - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ - -#include "simplelink.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*! - - \addtogroup FileSystem - @{ - -*/ - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - -/* FS error codes */ -#define SL_FS_OK (0) -#define SL_FS_ERR_EMPTY_SFLASH (-67) -#define SL_FS_ERR_FILE_IS_NOT_SECURE_AND_SIGN (-66) -#define SL_FS_ERASING_FLASH (-65) -#define SL_FS_FILE_HAS_NOT_BEEN_CLOSE_CORRECTLY (-64) -#define SL_FS_WRONG_SIGNATURE (-63) -#define SL_FS_WRONG_SIGNATURE_OR_CERTIFIC_NAME_LENGTH (-62) -#define SL_FS_NOT_16_ALIGNED (-61) -#define SL_FS_CERT_CHAIN_ERROR (-60) -#define SL_FS_FILE_NAME_EXIST (-59) -#define SL_FS_SECURITY_BUF_ALREADY_ALLOC (-58) -#define SL_FS_SECURE_FILE_MUST_BE_COMMIT (-57) -#define SL_FS_ERR_INCORRECT_OFFSET_ALIGNMENT (-56) -#define SL_FS_ERR_FAILED_READ_NVMEM_HEADER (-55) -#define SL_FS_WRONG_FILE_NAME (-54) -#define SL_FS_FILE_SYSTEM_IS_LOCKED (-53) -#define SL_FS_SECURITY_ALLERT (-52) -#define SL_FS_FILE_UNVALID_FILE_SIZE (-51) -#define SL_FS_ERR_TOKEN_IS_NOT_VALID (-50) -#define SL_FS_NO_DEVICE_IS_LOADED (-49) -#define SL_FS_DATA_ADDRESS_SHOUD_BE_IN_DATA_RAM (-48) -#define SL_FS_DATA_IS_NOT_ALIGNED (-47) -#define SL_FS_ERR_OVERLAP_DETECTION_THRESHHOLD (-46) -#define SL_FS_FILE_HAS_RESERVED_NV_INDEX (-45) -#define SL_FS_ERR_MAX_FS_FILES_IS_LARGER (-44) -#define SL_FS_ERR_MAX_FS_FILES_IS_SMALLER (-43) -#define SL_FS_FILE_MAX_SIZE_EXCEEDED (-42) -#define SL_FS_INVALID_BUFFER_FOR_READ (-41) -#define SL_FS_INVALID_BUFFER_FOR_WRITE (-40) -#define SL_FS_ERR_FILE_IMAGE_IS_CORRUPTED (-39) -#define SL_FS_ERR_SIZE_OF_FILE_EXT_EXCEEDED (-38) -#define SL_FS_WARNING_FILE_NAME_NOT_KEPT (-37) -#define SL_FS_ERR_DEVICE_IS_NOT_FORMATTED (-36) -#define SL_FS_ERR_FAILED_WRITE_NVMEM_HEADER (-35) -#define SL_FS_ERR_NO_AVAILABLE_NV_INDEX (-34) -#define SL_FS_ERR_FAILED_TO_ALLOCATE_MEM (-33) -#define SL_FS_ERR_FAILED_TO_READ_INTEGRITY_HEADER_2 (-32) -#define SL_FS_ERR_FAILED_TO_READ_INTEGRITY_HEADER_1 (-31) -#define SL_FS_ERR_NO_AVAILABLE_BLOCKS (-30) -#define SL_FS_ERR_FILE_MAX_SIZE_BIGGER_THAN_EXISTING_FILE (-29) -#define SL_FS_ERR_FILE_EXISTS_ON_DIFFERENT_DEVICE_ID (-28) -#define SL_FS_ERR_INVALID_ACCESS_TYPE (-27) -#define SL_FS_ERR_FILE_ALREADY_EXISTS (-26) -#define SL_FS_ERR_PROGRAM (-25) -#define SL_FS_ERR_NO_ENTRIES_AVAILABLE (-24) -#define SL_FS_ERR_FILE_ACCESS_IS_DIFFERENT (-23) -#define SL_FS_ERR_BAD_FILE_MODE (-22) -#define SL_FS_ERR_FAILED_READ_NVFILE (-21) -#define SL_FS_ERR_FAILED_INIT_STORAGE (-20) -#define SL_FS_ERR_CONTINUE_WRITE_MUST_BE_MOD_4 (-19) -#define SL_FS_ERR_FAILED_LOAD_FILE (-18) -#define SL_FS_ERR_INVALID_HANDLE (-17) -#define SL_FS_ERR_FAILED_TO_WRITE (-16) -#define SL_FS_ERR_OFFSET_OUT_OF_RANGE (-15) -#define SL_FS_ERR_ALLOC (-14) -#define SL_FS_ERR_READ_DATA_LENGTH (-13) -#define SL_FS_ERR_INVALID_FILE_ID (-12) -#define SL_FS_ERR_FILE_NOT_EXISTS (-11) -#define SL_FS_ERR_EMPTY_ERROR (-10) -#define SL_FS_ERR_INVALID_ARGS (-9) -#define SL_FS_ERR_FAILED_TO_CREATE_FILE (-8) -#define SL_FS_ERR_FS_ALREADY_LOADED (-7) -#define SL_FS_ERR_UNKNOWN (-6) -#define SL_FS_ERR_FAILED_TO_CREATE_LOCK_OBJ (-5) -#define SL_FS_ERR_DEVICE_NOT_LOADED (-4) -#define SL_FS_ERR_INVALID_MAGIC_NUM (-3) -#define SL_FS_ERR_FAILED_TO_READ (-2) -#define SL_FS_ERR_NOT_SUPPORTED (-1) -/* end of error codes */ - -#define _FS_MODE_ACCESS_RESERVED_OFFSET (24) -#define _FS_MODE_ACCESS_RESERVED_MASK (0xFF) -#define _FS_MODE_ACCESS_FLAGS_OFFSET (16) -#define _FS_MODE_ACCESS_FLAGS_MASK (0xFF) -#define _FS_MODE_ACCESS_OFFSET (12) -#define _FS_MODE_ACCESS_MASK (0xF) -#define _FS_MODE_OPEN_SIZE_GRAN_OFFSET (8) -#define _FS_MODE_OPEN_SIZE_GRAN_MASK (0xF) -#define _FS_MODE_OPEN_SIZE_OFFSET (0) -#define _FS_MODE_OPEN_SIZE_MASK (0xFF) -#define MAX_MODE_SIZE (0xFF) -#define _FS_MODE(Access, SizeGran, Size,Flags) (_u32)(((_u32)((Access) & _FS_MODE_ACCESS_MASK)<<_FS_MODE_ACCESS_OFFSET) | \ - ((_u32)((SizeGran) & _FS_MODE_OPEN_SIZE_GRAN_MASK)<<_FS_MODE_OPEN_SIZE_GRAN_OFFSET) | \ - ((_u32)((Size) & _FS_MODE_OPEN_SIZE_MASK)<<_FS_MODE_OPEN_SIZE_OFFSET) | \ - ((_u32)((Flags) & _FS_MODE_ACCESS_FLAGS_MASK)<<_FS_MODE_ACCESS_FLAGS_OFFSET)) - - -/* sl_FsOpen options */ -/* Open for Read */ -#define FS_MODE_OPEN_READ _FS_MODE(_FS_MODE_OPEN_READ,0,0,0) -/* Open for Write (in case file exist) */ -#define FS_MODE_OPEN_WRITE _FS_MODE(_FS_MODE_OPEN_WRITE,0,0,0) -/* Open for Creating a new file */ -#define FS_MODE_OPEN_CREATE(maxSizeInBytes,accessModeFlags) _sl_GetCreateFsMode(maxSizeInBytes,accessModeFlags) - -/*****************************************************************************/ -/* Structure/Enum declarations */ -/*****************************************************************************/ -typedef struct -{ - _u16 flags; - _u32 FileLen; - _u32 AllocatedLen; - _u32 Token[4]; -}SlFsFileInfo_t; - -typedef enum -{ - _FS_MODE_OPEN_READ = 0, - _FS_MODE_OPEN_WRITE, - _FS_MODE_OPEN_CREATE, - _FS_MODE_OPEN_WRITE_CREATE_IF_NOT_EXIST -}SlFsFileOpenAccessType_e; - -typedef enum -{ - _FS_FILE_OPEN_FLAG_COMMIT = 0x1, /* MIRROR - for fail safe */ - _FS_FILE_OPEN_FLAG_SECURE = 0x2, /* SECURE */ - _FS_FILE_OPEN_FLAG_NO_SIGNATURE_TEST = 0x4, /* Relevant to secure file only */ - _FS_FILE_OPEN_FLAG_STATIC = 0x8, /* Relevant to secure file only */ - _FS_FILE_OPEN_FLAG_VENDOR = 0x10, /* Relevant to secure file only */ - _FS_FILE_PUBLIC_WRITE = 0x20, /* Relevant to secure file only, the file can be opened for write without Token */ - _FS_FILE_PUBLIC_READ = 0x40 /* Relevant to secure file only, the file can be opened for read without Token */ -}SlFileOpenFlags_e; - -typedef enum -{ - _FS_MODE_SIZE_GRAN_256B = 0, /* MAX_SIZE = 64K */ - _FS_MODE_SIZE_GRAN_1KB, /* MAX_SIZE = 256K */ - _FS_MODE_SIZE_GRAN_4KB, /* MAX_SZIE = 1M */ - _FS_MODE_SIZE_GRAN_16KB, /* MAX_SIZE = 4M */ - _FS_MODE_SIZE_GRAN_64KB, /* MAX_SIZE = 16M */ - _FS_MAX_MODE_SIZE_GRAN -}_SlFsFileOpenMaxSizeGran_e; - -/*****************************************************************************/ -/* Internal Function prototypes */ -/*****************************************************************************/ -_u32 _sl_GetCreateFsMode(_u32 maxSizeInBytes,_u32 accessFlags); - -/*****************************************************************************/ -/* Function prototypes */ -/*****************************************************************************/ - -/*! - \brief open file for read or write from/to storage device - - \param[in] pFileName File Name buffer pointer - \param[in] AccessModeAndMaxSize Options: As described below - \param[in] pToken Reserved for future use. Use NULL for this field - \param[out] pFileHandle Pointing on the file and used for read and write commands to the file - - AccessModeAndMaxSize possible input \n - FS_MODE_OPEN_READ - Read a file \n - FS_MODE_OPEN_WRITE - Open for write for an existing file \n - FS_MODE_OPEN_CREATE(maxSizeInBytes,accessModeFlags) - Open for creating a new file. Max file size is defined in bytes. \n - For optimal FS size, use max size in 4K-512 bytes steps (e.g. 3584,7680,117760) \n - Several access modes bits can be combined together from SlFileOpenFlags_e enum - - \return On success, zero is returned. On error, an error code is returned - - \sa sl_FsRead sl_FsWrite sl_FsClose - \note belongs to \ref basic_api - \warning - \par Example: - \code - char* DeviceFileName = "MyFile.txt"; - unsigned long MaxSize = 63 * 1024; //62.5K is max file size - long DeviceFileHandle = -1; - long RetVal; //negative retval is an error - unsigned long Offset = 0; - unsigned char InputBuffer[100]; - - // Create a file and write data. The file in this example is secured, without signature and with a fail safe commit - RetVal = sl_FsOpen((unsigned char *)DeviceFileName, - FS_MODE_OPEN_CREATE(MaxSize , _FS_FILE_OPEN_FLAG_NO_SIGNATURE_TEST | _FS_FILE_OPEN_FLAG_COMMIT ), - NULL, &DeviceFileHandle); - - Offset = 0; - //Preferred in secure file that the Offset and the length will be aligned to 16 bytes. - RetVal = sl_FsWrite( DeviceFileHandle, Offset, (unsigned char *)"HelloWorld", strlen("HelloWorld")); - - RetVal = sl_FsClose(DeviceFileHandle, NULL, NULL , 0); - - // open the same file for read, using the Token we got from the creation procedure above - RetVal = sl_FsOpen((unsigned char *)DeviceFileName, - FS_MODE_OPEN_READ, - NULL, &DeviceFileHandle); - - Offset = 0; - RetVal = sl_FsRead( DeviceFileHandle, Offset, (unsigned char *)InputBuffer, strlen("HelloWorld")); - - RetVal = sl_FsClose(DeviceFileHandle, NULL, NULL , 0); - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_FsOpen) -_i32 sl_FsOpen(_u8 *pFileName,_u32 AccessModeAndMaxSize,_u32 *pToken,_i32 *pFileHandle); -#endif - -/*! - \brief close file in storage device - - \param[in] FileHdl Pointer to the file (assigned from sl_FsOpen) - \param[in] pCeritificateFileName Reserved for future use. Use NULL. - \param[in] pSignature Reserved for future use. Use NULL. - \param[in] SignatureLen Reserved for future use. Use 0. - - - \return On success, zero is returned. On error, an error code is returned - - \sa sl_FsRead sl_FsWrite sl_FsOpen - \note Call the fs_Close with signature = 'A' signature len = 1 for activating an abort action - \warning - \par Example: - \code - sl_FsClose(FileHandle,0,0,0); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_FsClose) -_i16 sl_FsClose(_i32 FileHdl,_u8* pCeritificateFileName,_u8* pSignature,_u32 SignatureLen); -#endif - -/*! - \brief Read block of data from a file in storage device - - \param[in] FileHdl Pointer to the file (assigned from sl_FsOpen) - \param[in] Offset Offset to specific read block - \param[out] pData Pointer for the received data - \param[in] Len Length of the received data - - \return On success, returns the number of read bytes. On error, negative number is returned - - \sa sl_FsClose sl_FsWrite sl_FsOpen - \note belongs to \ref basic_api - \warning - \par Example: - \code - Status = sl_FsRead(FileHandle, 0, &readBuff[0], readSize); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_FsRead) -_i32 sl_FsRead(_i32 FileHdl,_u32 Offset ,_u8* pData,_u32 Len); -#endif - -/*! - \brief write block of data to a file in storage device - - \param[in] FileHdl Pointer to the file (assigned from sl_FsOpen) - \param[in] Offset Offset to specific block to be written - \param[in] pData Pointer the transmitted data to the storage device - \param[in] Len Length of the transmitted data - - \return On success, returns the number of written bytes. On error, an error code is returned - - \sa - \note belongs to \ref basic_api - \warning - \par Example: - \code - Status = sl_FsWrite(FileHandle, 0, &buff[0], readSize); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_FsWrite) -_i32 sl_FsWrite(_i32 FileHdl,_u32 Offset,_u8* pData,_u32 Len); -#endif - -/*! - \brief get info on a file - - \param[in] pFileName File name - \param[in] Token Reserved for future use. Use 0 - \param[out] pFsFileInfo Returns the File's Information: flags,file size, allocated size and Tokens - - \return On success, zero is returned. On error, an error code is returned - - \sa sl_FsOpen - \note belongs to \ref basic_api - \warning - \par Example: - \code - Status = sl_FsGetInfo("FileName.html",0,&FsFileInfo); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_FsGetInfo) -_i16 sl_FsGetInfo(_u8 *pFileName,_u32 Token,SlFsFileInfo_t* pFsFileInfo); -#endif - -/*! - \brief Delete specific file from a storage or all files from a storage (format) - - \param[in] pFileName File Name - \param[in] Token Reserved for future use. Use 0 - \return On success, zero is returned. On error, an error code is returned - - \sa - \note belongs to \ref basic_api - \warning - \par Example: - \code - Status = sl_FsDel("FileName.html",0); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_FsDel) -_i16 sl_FsDel(_u8 *pFileName,_u32 Token); -#endif -/*! - - Close the Doxygen group. - @} - - */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __FS_H__ */ - diff --git a/cc3200/simplelink/include/netapp.h b/cc3200/simplelink/include/netapp.h deleted file mode 100644 index f14fd21a1..000000000 --- a/cc3200/simplelink/include/netapp.h +++ /dev/null @@ -1,845 +0,0 @@ -/* - * netapp.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - -#ifndef __NETAPP_H__ -#define __NETAPP_H__ - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ - -#include "simplelink.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -/*! - - \addtogroup netapp - @{ - -*/ - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - -/*ERROR code*/ -#define SL_ERROR_NETAPP_RX_BUFFER_LENGTH_ERROR (-230) - -/* Http Server interface */ -#define MAX_INPUT_STRING (64) /* because of WPA */ - -#define MAX_AUTH_NAME_LEN (20) -#define MAX_AUTH_PASSWORD_LEN (20) -#define MAX_AUTH_REALM_LEN (20) - -#define MAX_DEVICE_URN_LEN (15+1) -#define MAX_DOMAIN_NAME_LEN (24+1) - -#define MAX_ACTION_LEN (30) -/* Important: in case the max len is changed, make sure the struct sl_NetAppHttpServerSendToken_t in protocol.h is padded correctly! */ -#define MAX_TOKEN_NAME_LEN (20) -#define MAX_TOKEN_VALUE_LEN MAX_INPUT_STRING - -#define NETAPP_MAX_SERVICE_TEXT_SIZE (256) -#define NETAPP_MAX_SERVICE_NAME_SIZE (60) -#define NETAPP_MAX_SERVICE_HOST_NAME_SIZE (64) - - -/* Server Responses */ -#define SL_NETAPP_RESPONSE_NONE (0) -#define SL_NETAPP_HTTPSETTOKENVALUE (1) - -#define SL_NETAPP_FAMILY_MASK (0x80) - -/* mDNS types */ -#define SL_NET_APP_MASK_IPP_TYPE_OF_SERVICE (0x00000001) -#define SL_NET_APP_MASK_DEVICE_INFO_TYPE_OF_SERVICE (0x00000002) -#define SL_NET_APP_MASK_HTTP_TYPE_OF_SERVICE (0x00000004) -#define SL_NET_APP_MASK_HTTPS_TYPE_OF_SERVICE (0x00000008) -#define SL_NET_APP_MASK_WORKSATION_TYPE_OF_SERVICE (0x00000010) -#define SL_NET_APP_MASK_GUID_TYPE_OF_SERVICE (0x00000020) -#define SL_NET_APP_MASK_H323_TYPE_OF_SERVICE (0x00000040) -#define SL_NET_APP_MASK_NTP_TYPE_OF_SERVICE (0x00000080) -#define SL_NET_APP_MASK_OBJECITVE_TYPE_OF_SERVICE (0x00000100) -#define SL_NET_APP_MASK_RDP_TYPE_OF_SERVICE (0x00000200) -#define SL_NET_APP_MASK_REMOTE_TYPE_OF_SERVICE (0x00000400) -#define SL_NET_APP_MASK_RTSP_TYPE_OF_SERVICE (0x00000800) -#define SL_NET_APP_MASK_SIP_TYPE_OF_SERVICE (0x00001000) -#define SL_NET_APP_MASK_SMB_TYPE_OF_SERVICE (0x00002000) -#define SL_NET_APP_MASK_SOAP_TYPE_OF_SERVICE (0x00004000) -#define SL_NET_APP_MASK_SSH_TYPE_OF_SERVICE (0x00008000) -#define SL_NET_APP_MASK_TELNET_TYPE_OF_SERVICE (0x00010000) -#define SL_NET_APP_MASK_TFTP_TYPE_OF_SERVICE (0x00020000) -#define SL_NET_APP_MASK_XMPP_CLIENT_TYPE_OF_SERVICE (0x00040000) -#define SL_NET_APP_MASK_RAOP_TYPE_OF_SERVICE (0x00080000) -#define SL_NET_APP_MASK_ALL_TYPE_OF_SERVICE (0xFFFFFFFF) - -/********************************************************************************************************/ -/* sl_NetAppDnsGetHostByName error codes */ - -#define SL_NET_APP_DNS_QUERY_NO_RESPONSE (-159) /* DNS query failed, no response */ -#define SL_NET_APP_DNS_NO_SERVER (-161) /* No DNS server was specified */ -#define SL_NET_APP_DNS_PARAM_ERROR (-162) /* mDNS parameters error */ -#define SL_NET_APP_DNS_QUERY_FAILED (-163) /* DNS query failed; no DNS server sent an 'answer' */ -#define SL_NET_APP_DNS_INTERNAL_1 (-164) -#define SL_NET_APP_DNS_INTERNAL_2 (-165) -#define SL_NET_APP_DNS_MALFORMED_PACKET (-166) /* Improperly formed or corrupted DNS packet received */ -#define SL_NET_APP_DNS_INTERNAL_3 (-167) -#define SL_NET_APP_DNS_INTERNAL_4 (-168) -#define SL_NET_APP_DNS_INTERNAL_5 (-169) -#define SL_NET_APP_DNS_INTERNAL_6 (-170) -#define SL_NET_APP_DNS_INTERNAL_7 (-171) -#define SL_NET_APP_DNS_INTERNAL_8 (-172) -#define SL_NET_APP_DNS_INTERNAL_9 (-173) -#define SL_NET_APP_DNS_MISMATCHED_RESPONSE (-174) /* Server response type does not match the query request*/ -#define SL_NET_APP_DNS_INTERNAL_10 (-175) -#define SL_NET_APP_DNS_INTERNAL_11 (-176) -#define SL_NET_APP_DNS_NO_ANSWER (-177) /* No response for one-shot query */ -#define SL_NET_APP_DNS_NO_KNOWN_ANSWER (-178) /* No known answer for query */ -#define SL_NET_APP_DNS_NAME_MISMATCH (-179) /* Illegal service name according to the RFC */ -#define SL_NET_APP_DNS_NOT_STARTED (-180) /* mDNS is not running */ -#define SL_NET_APP_DNS_HOST_NAME_ERROR (-181) /* Host name error. Host name format is not allowed according to RFC 1033,1034,1035, 6763 */ -#define SL_NET_APP_DNS_NO_MORE_ENTRIES (-182) /* No more entries be found. */ - -#define SL_NET_APP_DNS_MAX_SERVICES_ERROR (-200) /* Maximum advertise services are already configured */ -#define SL_NET_APP_DNS_IDENTICAL_SERVICES_ERROR (-201) /* Trying to register a service that is already exists */ -#define SL_NET_APP_DNS_NOT_EXISTED_SERVICE_ERROR (-203) /* Trying to delete service that does not existed */ -#define SL_NET_APP_DNS_ERROR_SERVICE_NAME_ERROR (-204) /* Illegal service name according to the RFC */ -#define SL_NET_APP_DNS_RX_PACKET_ALLOCATION_ERROR (-205) /* Retry request */ -#define SL_NET_APP_DNS_BUFFER_SIZE_ERROR (-206) /* List size buffer is bigger than internally allowed in the NWP */ -#define SL_NET_APP_DNS_NET_APP_SET_ERROR (-207) /* Illegal length of one of the mDNS Set functions */ -#define SL_NET_APP_DNS_GET_SERVICE_LIST_FLAG_ERROR (-208) -#define SL_NET_APP_DNS_NO_CONFIGURATION_ERROR (-209) - -/* Set Dev name error codes (NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN) */ -#define SL_ERROR_DEVICE_NAME_LEN_ERR (-117) -#define SL_ERROR_DEVICE_NAME_INVALID (-118) -/* Set domain name error codes (NETAPP_SET_GET_DEV_CONF_OPT_DOMAIN_NAME) */ -#define SL_ERROR_DOMAIN_NAME_LEN_ERR (-119) -#define SL_ERROR_DOMAIN_NAME_INVALID (-120) - -/********************************************************************************************************/ - -/* NetApp application IDs */ -#define SL_NET_APP_HTTP_SERVER_ID (1) -#define SL_NET_APP_DHCP_SERVER_ID (2) -#define SL_NET_APP_MDNS_ID (4) -#define SL_NET_APP_DNS_SERVER_ID (8) -#define SL_NET_APP_DEVICE_CONFIG_ID (16) -/* NetApp application set/get options */ -#define NETAPP_SET_DHCP_SRV_BASIC_OPT (0) -/* HTTP server set/get options */ -#define NETAPP_SET_GET_HTTP_OPT_PORT_NUMBER (0) -#define NETAPP_SET_GET_HTTP_OPT_AUTH_CHECK (1) -#define NETAPP_SET_GET_HTTP_OPT_AUTH_NAME (2) -#define NETAPP_SET_GET_HTTP_OPT_AUTH_PASSWORD (3) -#define NETAPP_SET_GET_HTTP_OPT_AUTH_REALM (4) -#define NETAPP_SET_GET_HTTP_OPT_ROM_PAGES_ACCESS (5) - -#define NETAPP_SET_GET_MDNS_CONT_QUERY_OPT (1) -#define NETAPP_SET_GET_MDNS_QEVETN_MASK_OPT (2) -#define NETAPP_SET_GET_MDNS_TIMING_PARAMS_OPT (3) - -/* DNS server set/get options */ -#define NETAPP_SET_GET_DNS_OPT_DOMAIN_NAME (0) - -/* Device Config set/get options */ -#define NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN (0) -#define NETAPP_SET_GET_DEV_CONF_OPT_DOMAIN_NAME (1) - - -/*****************************************************************************/ -/* Structure/Enum declarations */ -/*****************************************************************************/ - -typedef struct -{ - _u32 PacketsSent; - _u32 PacketsReceived; - _u16 MinRoundTime; - _u16 MaxRoundTime; - _u16 AvgRoundTime; - _u32 TestTime; -}SlPingReport_t; - -typedef struct -{ - _u32 PingIntervalTime; /* delay between pings, in milliseconds */ - _u16 PingSize; /* ping packet size in bytes */ - _u16 PingRequestTimeout; /* timeout time for every ping in milliseconds */ - _u32 TotalNumberOfAttempts; /* max number of ping requests. 0 - forever */ - _u32 Flags; /* flag - 0 report only when finished, 1 - return response for every ping, 2 - stop after 1 successful ping. */ - _u32 Ip; /* IPv4 address or IPv6 first 4 bytes */ - _u32 Ip1OrPaadding; - _u32 Ip2OrPaadding; - _u32 Ip3OrPaadding; -}SlPingStartCommand_t; - -typedef struct _slHttpServerString_t -{ - _u8 len; - _u8 *data; -} slHttpServerString_t; - -typedef struct _slHttpServerData_t -{ - _u8 value_len; - _u8 name_len; - _u8 *token_value; - _u8 *token_name; -} slHttpServerData_t; - -typedef struct _slHttpServerPostData_t -{ - slHttpServerString_t action; - slHttpServerString_t token_name; - slHttpServerString_t token_value; -}slHttpServerPostData_t; - -typedef union -{ - slHttpServerString_t httpTokenName; /* SL_NETAPP_HTTPGETTOKENVALUE */ - slHttpServerPostData_t httpPostData; /* SL_NETAPP_HTTPPOSTTOKENVALUE */ -} SlHttpServerEventData_u; - -typedef union -{ - slHttpServerString_t token_value; -} SlHttpServerResponsedata_u; - -typedef struct -{ - _u32 Event; - SlHttpServerEventData_u EventData; -}SlHttpServerEvent_t; - -typedef struct -{ - _u32 Response; - SlHttpServerResponsedata_u ResponseData; -}SlHttpServerResponse_t; - - -typedef struct -{ - _u32 lease_time; - _u32 ipv4_addr_start; - _u32 ipv4_addr_last; -}SlNetAppDhcpServerBasicOpt_t; - -/*mDNS parameters*/ -typedef enum -{ - SL_NET_APP_FULL_SERVICE_WITH_TEXT_IPV4_TYPE = 1, - SL_NET_APP_FULL_SERVICE_IPV4_TYPE, - SL_NET_APP_SHORT_SERVICE_IPV4_TYPE - -} SlNetAppGetServiceListType_e; - -typedef struct -{ - _u32 service_ipv4; - _u16 service_port; - _u16 Reserved; -}SlNetAppGetShortServiceIpv4List_t; - -typedef struct -{ - _u32 service_ipv4; - _u16 service_port; - _u16 Reserved; - _u8 service_name[NETAPP_MAX_SERVICE_NAME_SIZE]; - _u8 service_host[NETAPP_MAX_SERVICE_HOST_NAME_SIZE]; -}SlNetAppGetFullServiceIpv4List_t; - -typedef struct -{ - _u32 service_ipv4; - _u16 service_port; - _u16 Reserved; - _u8 service_name[NETAPP_MAX_SERVICE_NAME_SIZE]; - _u8 service_host[NETAPP_MAX_SERVICE_HOST_NAME_SIZE]; - _u8 service_text[NETAPP_MAX_SERVICE_TEXT_SIZE]; -}SlNetAppGetFullServiceWithTextIpv4List_t; - -typedef struct -{ - /*The below parameters are used to configure the advertise times and interval - For example: - If: - Period is set to T - Repetitions are set to P - Telescopic factor is K=2 - The transmission shall be: - advertise P times - wait T - advertise P times - wait 4 * T - advertise P time - wait 16 * T ... (till max time reached / configuration changed / query issued) - */ - _u32 t; /* Number of ticks for the initial period. Default is 100 ticks for 1 second. */ - _u32 p; /* Number of repetitions. Default value is 1 */ - _u32 k; /* Telescopic factor. Default value is 2. */ - _u32 RetransInterval;/* Announcing retransmission interval */ - _u32 Maxinterval; /* Announcing max period interval */ - _u32 max_time; /* Announcing max time */ -}SlNetAppServiceAdvertiseTimingParameters_t; - -/*****************************************************************************/ -/* Types declarations */ -/*****************************************************************************/ -typedef void (*P_SL_DEV_PING_CALLBACK)(SlPingReport_t*); - -/*****************************************************************************/ -/* Function prototypes */ -/*****************************************************************************/ - - -/*! - \brief Starts a network application - - Gets and starts network application for the current WLAN mode - - \param[in] AppBitMap application bitmap, could be one or combination of the following: \n - - SL_NET_APP_HTTP_SERVER_ID - - SL_NET_APP_DHCP_SERVER_ID - - SL_NET_APP_MDNS_ID - - \return On error, negative number is returned - - \sa Stop one or more the above started applications using sl_NetAppStop - \note This command activates the application for the current WLAN mode (AP or STA) - \warning - \par Example: - \code - For example: Starting internal HTTP server + DHCP server: - sl_NetAppStart(SL_NET_APP_HTTP_SERVER_ID | SL_NET_APP_DHCP_SERVER_ID) - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppStart) -_i16 sl_NetAppStart(_u32 AppBitMap); -#endif -/*! - \brief Stops a network application - - Gets and stops network application for the current WLAN mode - - \param[in] AppBitMap application id, could be one of the following: \n - - SL_NET_APP_HTTP_SERVER_ID - - SL_NET_APP_DHCP_SERVER_ID - - SL_NET_APP_MDNS_ID - - \return On error, negative number is returned - - \sa - \note This command disables the application for the current active WLAN mode (AP or STA) - \warning - \par Example: - \code - - For example: Stopping internal HTTP server: - sl_NetAppStop(SL_NET_APP_HTTP_SERVER_ID); - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppStop) -_i16 sl_NetAppStop(_u32 AppBitMap); -#endif - -/*! - \brief Get host IP by name - - Obtain the IP Address of machine on network, by machine name. - - \param[in] hostname host name - \param[in] usNameLen name length - \param[out] out_ip_addr This parameter is filled in with - host IP address. In case that host name is not - resolved, out_ip_addr is zero. - \param[in] family protocol family - - \return On success, 0 is returned. - On error, negative is returned - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - Possible DNS error codes: - - SL_NET_APP_DNS_QUERY_NO_RESPONSE - - SL_NET_APP_DNS_NO_SERVER - - SL_NET_APP_DNS_QUERY_FAILED - - SL_NET_APP_DNS_MALFORMED_PACKET - - SL_NET_APP_DNS_MISMATCHED_RESPONSE - - \sa - \note Only one sl_NetAppDnsGetHostByName can be handled at a time. - Calling this API while the same command is called from another thread, may result - in one of the two scenarios: - 1. The command will wait (internal) until the previous command finish, and then be executed. - 2. There are not enough resources and POOL_IS_EMPTY error will return. - In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try - again later to issue the command. - \warning - \par Example: - \code - _u32 DestinationIP; - sl_NetAppDnsGetHostByName("www.google.com", strlen("www.google.com"), &DestinationIP,SL_AF_INET); - - Addr.sin_family = SL_AF_INET; - Addr.sin_port = sl_Htons(80); - Addr.sin_addr.s_addr = sl_Htonl(DestinationIP); - AddrSize = sizeof(SlSockAddrIn_t); - SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppDnsGetHostByName) -_i16 sl_NetAppDnsGetHostByName(_i8 * hostname, _u16 usNameLen, _u32* out_ip_addr,_u8 family ); -#endif - -/*! - \brief Return service attributes like IP address, port and text according to service name - \par - The user sets a service name Full/Part (see example below), and should get: - - IP of service - - The port of service - - The text of service - - Hence it can make a connection to the specific service and use it. - It is similar to get host by name method. - It is done by a single shot query with PTR type on the service name. - The command that is sent is from constant parameters and variables parameters. - - \param[in] pService Service name can be full or partial. \n - Example for full service name: - 1. PC1._ipp._tcp.local - 2. PC2_server._ftp._tcp.local \n - . - Example for partial service name: - 1. _ipp._tcp.local - 2. _ftp._tcp.local - - \param[in] ServiceLen The length of the service name (in_pService). - \param[in] Family IPv4 or IPv6 (SL_AF_INET , SL_AF_INET6). - \param[out] pAddr Contains the IP address of the service. - \param[out] pPort Contains the port of the service. - \param[out] pTextLen Has 2 options. One as Input field and the other one as output: - - Input: \n - Contains the max length of the text that the user wants to get.\n - It means that if the text len of service is bigger that its value than - the text is cut to inout_TextLen value. - - Output: \n - Contain the length of the text that is returned. Can be full text or part of the text (see above). - - \param[out] pOut_pText Contains the text of the service full or partial - - \return On success, zero is returned - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - In case No service is found error SL_NET_APP_DNS_NO_ANSWER will be returned - - \note The returns attributes belongs to the first service found. - There may be other services with the same service name that will response to the query. - The results of these responses are saved in the peer cache of the Device and should be read by another API. - - Only one sl_NetAppDnsGetHostByService can be handled at a time. - Calling this API while the same command is called from another thread, may result - in one of the two scenarios: - 1. The command will wait (internal) until the previous command finish, and then be executed. - 2. There are not enough resources and SL_POOL_IS_EMPTY error will return. - In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try - again later to issue the command. - - \warning Text length can be 120 bytes only -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppDnsGetHostByService) -_i32 sl_NetAppDnsGetHostByService(_i8 *pServiceName, /* string containing all (or only part): name + subtype + service */ - _u8 ServiceLen, - _u8 Family, /* 4-IPv4 , 16-IPv6 */ - _u32 pAddr[], - _u32 *pPort, - _u16 *pTextLen, /* in: max len , out: actual len */ - _i8 *pText - ); - -#endif - -/*! - \brief Get service List - Insert into out pBuffer a list of peer's services that are the NWP. - The list is in a form of service struct. The user should chose the type - of the service struct like: - - Full service parameters with text. - - Full service parameters. - - Short service parameters (port and IP only) especially for tiny hosts. - - The different types of struct are made to give the - Possibility to save memory in the host - - - The user also chose how many max services to get and start point index - NWP peer cache. - For example: - 1. Get max of 3 full services from index 0.Up to 3 full services - from index 0 are inserted into pBuffer (services that are in indexes 0,1,2). - 2. Get max of 4 full services from index 3.Up to 4 full services - from index 3 are inserted into pBuffer (services that are in indexes 3,4,5,6). - 3. Get max of 2 int services from index 6.Up to 2 int services - from index 6 are inserted into pBuffer (services that are in indexes 6,7). - - See below - command parameters. - - \param[in] indexOffset - The start index in the peer cache that from it the first service is returned. - \param[in] MaxServiceCount - The Max services that can be returned if existed or if not exceed the max index - in the peer cache - \param[in] Flags - an ENUM number that means which service struct to use (means which types of service to fill) - - use SlNetAppGetFullServiceWithTextIpv4List_t - - use SlNetAppGetFullServiceIpv4List_t - - use SlNetAppGetShortServiceIpv4List_t - - \param[out] Buffer - The Services are inserted into this buffer. In the struct form according to the bit that is set in the Flags - input parameter. - - \return ServiceFoundCount - The number of the services that were inserted into the buffer. zero means no service is found - negative number means an error - \sa sl_NetAppMDNSRegisterService - \note - \warning - if the out pBuffer size is bigger than an RX packet(1480), than - an error is returned because there - is no place in the RX packet. - The size is a multiply of MaxServiceCount and size of service struct(that is set - according to flag value). -*/ - -#if _SL_INCLUDE_FUNC(sl_NetAppGetServiceList) -_i16 sl_NetAppGetServiceList(_u8 IndexOffest, - _u8 MaxServiceCount, - _u8 Flags, - _i8 *pBuffer, - _u32 RxBufferLength - ); - -#endif - -/*! - \brief Unregister mDNS service - This function deletes the mDNS service from the mDNS package and the database. - - The mDNS service that is to be unregistered is a service that the application no longer wishes to provide. \n - The service name should be the full service name according to RFC - of the DNS-SD - meaning the value in name field in the SRV answer. - - Examples for service names: - 1. PC1._ipp._tcp.local - 2. PC2_server._ftp._tcp.local - - \param[in] pServiceName Full service name. \n - Example for service name: - 1. PC1._ipp._tcp.local - 2. PC2_server._ftp._tcp.local - \param[in] ServiceLen The length of the service. - \return On success, zero is returned - \sa sl_NetAppMDNSRegisterService - \note - \warning - The size of the service length should be smaller than 255. -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppMDNSUnRegisterService) -_i16 sl_NetAppMDNSUnRegisterService(const _i8 *pServiceName,_u8 ServiceNameLen); -#endif - -/*! - \brief Register a new mDNS service - \par - This function registers a new mDNS service to the mDNS package and the DB. - - This registered service is a service offered by the application. - The service name should be full service name according to RFC - of the DNS-SD - meaning the value in name field in the SRV answer. - Example for service name: - 1. PC1._ipp._tcp.local - 2. PC2_server._ftp._tcp.local - - If the option is_unique is set, mDNS probes the service name to make sure - it is unique before starting to announce the service on the network. - Instance is the instance portion of the service name. - - \param[in] ServiceLen The length of the service. - \param[in] TextLen The length of the service should be smaller than 64. - \param[in] port The port on this target host port. - \param[in] TTL The TTL of the service - \param[in] Options bitwise parameters: \n - - bit 0 - service is unique (means that the service needs to be unique) - - bit 31 - for internal use if the service should be added or deleted (set means ADD). - - bit 1-30 for future. - - \param[in] pServiceName The service name. - Example for service name: \n - 1. PC1._ipp._tcp.local - 2. PC2_server._ftp._tcp.local - - \param[in] pText The description of the service. - should be as mentioned in the RFC - (according to type of the service IPP,FTP...) - - \return On success, zero is returned - Possible error codes: - - Maximum advertise services are already configured. - Delete another existed service that is registered and then register again the new service - - Trying to register a service that is already exists - - Trying to delete service that does not existed - - Illegal service name according to the RFC - - Retry request - - Illegal length of one of the mDNS Set functions - - mDNS is not operational as the device has no IP.Connect the device to an AP to get an IP address. - - mDNS parameters error - - mDNS internal cache error - - mDNS internal error - - Adding a service is not allowed as it is already exist (duplicate service) - - mDNS is not running - - Host name error. Host name format is not allowed according to RFC 1033,1034,1035, 6763 - - List size buffer is bigger than internally allowed in the NWP (API get service list), - change the APIs’ parameters to decrease the size of the list - - - \sa sl_NetAppMDNSUnRegisterService - - \warning 1) Temporary - there is an allocation on stack of internal buffer. - Its size is NETAPP_MDNS_MAX_SERVICE_NAME_AND_TEXT_LENGTH. \n - It means that the sum of the text length and service name length cannot be bigger than - NETAPP_MDNS_MAX_SERVICE_NAME_AND_TEXT_LENGTH.\n - If it is - An error is returned. \n - 2) According to now from certain constraints the variables parameters are set in the - attribute part (contain constant parameters) -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppMDNSRegisterService) -_i16 sl_NetAppMDNSRegisterService( const _i8* pServiceName, - _u8 ServiceNameLen, - const _i8* pText, - _u8 TextLen, - _u16 Port, - _u32 TTL, - _u32 Options); -#endif - -/*! - \brief send ICMP ECHO_REQUEST to network hosts - - Ping uses the ICMP protocol's mandatory ECHO_REQUEST - - \param[in] pPingParams Pointer to the ping request structure: \n - - if flags parameter is set to 0, ping will report back once all requested pings are done (as defined by TotalNumberOfAttempts). \n - - if flags parameter is set to 1, ping will report back after every ping, for TotalNumberOfAttempts. - - if flags parameter is set to 2, ping will stop after the first successful ping, and report back for the successful ping, as well as any preceding failed ones. - For stopping an ongoing ping activity, set parameters IP address to 0 - - \param[in] family SL_AF_INET or SL_AF_INET6 - \param[out] pReport Ping pReport - \param[out] pCallback Callback function upon completion. - If callback is NULL, the API is blocked until data arrives - - - \return On success, zero is returned. On error, -1 is returned - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - - \sa sl_NetAppPingReport - \note Only one sl_NetAppPingStart can be handled at a time. - Calling this API while the same command is called from another thread, may result - in one of the two scenarios: - 1. The command will wait (internal) until the previous command finish, and then be executed. - 2. There are not enough resources and SL_POOL_IS_EMPTY error will return. - In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try - again later to issue the command. - \warning - \par Example: - \code - - An example of sending 20 ping requests and reporting results to a callback routine when - all requests are sent: - - // callback routine - void pingRes(SlPingReport_t* pReport) - { - // handle ping results - } - - // ping activation - void PingTest() - { - SlPingReport_t report; - SlPingStartCommand_t pingCommand; - - pingCommand.Ip = SL_IPV4_VAL(10,1,1,200); // destination IP address is 10.1.1.200 - pingCommand.PingSize = 150; // size of ping, in bytes - pingCommand.PingIntervalTime = 100; // delay between pings, in milliseconds - pingCommand.PingRequestTimeout = 1000; // timeout for every ping in milliseconds - pingCommand.TotalNumberOfAttempts = 20; // max number of ping requests. 0 - forever - pingCommand.Flags = 0; // report only when finished - - sl_NetAppPingStart( &pingCommand, SL_AF_INET, &report, pingRes ) ; - } - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppPingStart) -_i16 sl_NetAppPingStart(SlPingStartCommand_t* pPingParams,_u8 family,SlPingReport_t *pReport,const P_SL_DEV_PING_CALLBACK pPingCallback); -#endif - -/*! - \brief Internal function for setting network application configurations - - \return On success, zero is returned. On error, -1 is - returned - - \param[in] AppId Application id, could be one of the following: \n - - SL_NET_APP_HTTP_SERVER_ID - - SL_NET_APP_DHCP_SERVER_ID - - SL_NET_APP_DHCP_SERVER_ID - - \param[in] SetOptions set option, could be one of the following: \n - NETAPP_SET_BASIC_OPT - - \param[in] OptionLen option structure length - - \param[in] pOptionValues pointer to the option structure - \sa - \note - \warning - \par - \code - Set DHCP Server (AP mode) parameters example: - - SlNetAppDhcpServerBasicOpt_t dhcpParams; - _u8 outLen = sizeof(SlNetAppDhcpServerBasicOpt_t); - dhcpParams.lease_time = 4096; // lease time (in seconds) of the IP Address - dhcpParams.ipv4_addr_start = SL_IPV4_VAL(192,168,1,10); // first IP Address for allocation. IP Address should be set as Hex number - i.e. 0A0B0C01 for (10.11.12.1) - dhcpParams.ipv4_addr_last = SL_IPV4_VAL(192,168,1,16); // last IP Address for allocation. IP Address should be set as Hex number - i.e. 0A0B0C01 for (10.11.12.1) - sl_NetAppStop(SL_NET_APP_DHCP_SERVER_ID); // Stop DHCP server before settings - sl_NetAppSet(SL_NET_APP_DHCP_SERVER_ID, NETAPP_SET_DHCP_SRV_BASIC_OPT, outLen, (_u8* )&dhcpParams); // set parameters - sl_NetAppStart(SL_NET_APP_DHCP_SERVER_ID); // Start DHCP server with new settings - \endcode - \code - Set Device URN name example: - - Device name, maximum length of 33 characters - Device name affects URN name, own SSID name in AP mode, and WPS file "device name" in WPS I.E (STA-WPS / P2P) - In case no device URN name set, the default name is "mysimplelink" - Allowed characters in device name are: 'a - z' , 'A - Z' , '0-9' and '-' - - _u8 *my_device = "MY-SIMPLELINK-DEV"; - sl_NetAppSet (SL_NET_APP_DEVICE_CONFIG_ID, NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN, strlen(my_device), (_u8 *) my_device); - \endcode - -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppSet) -_i32 sl_NetAppSet(_u8 AppId ,_u8 Option,_u8 OptionLen, _u8 *pOptionValue); -#endif - -/*! - \brief Internal function for getting network applications configurations - - \return On success, zero is returned. On error, -1 is - returned - - \param[in] AppId Application id, could be one of the following: \n - - SL_NET_APP_HTTP_SERVER_ID - - SL_NET_APP_DHCP_SERVER_ID - - \param[in] Options Get option, could be one of the following: \n - NETAPP_SET_BASIC_OPT - - \param[in] OptionLen The length of the allocated memory as input, when the - function complete, the value of this parameter would be - the len that actually read from the device. - If the device return length that is longer from the input - value, the function will cut the end of the returned structure - and will return ESMALLBUF - - \param[out] pValues pointer to the option structure which will be filled with the response from the device - - \sa - \note - \warning - \par - \code - Get DHCP Server parameters example: - - SlNetAppDhcpServerBasicOpt_t dhcpParams; - _u8 outLen = sizeof(SlNetAppDhcpServerBasicOpt_t); - sl_NetAppGet(SL_NET_APP_DHCP_SERVER_ID, NETAPP_SET_DHCP_SRV_BASIC_OPT, &outLen, (_u8* )&dhcpParams); - - printf("DHCP Start IP %d.%d.%d.%d End IP %d.%d.%d.%d Lease time seconds %d\n", - SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,3),SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,2), - SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,1),SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,0), - SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,3),SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,2), - SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,1),SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,0), - dhcpParams.lease_time); - \endcode - \code - Get Device URN name example: - Maximum length of 33 characters of device name. - Device name affects URN name, own SSID name in AP mode, and WPS file "device name" in WPS I.E (STA-WPS / P2P) - in case no device URN name set, the default name is "mysimplelink" - - _u8 my_device_name[35]; - sl_NetAppGet (SL_NET_APP_DEVICE_CONFIG_ID, NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN, strlen(my_device_name), (_u8 *)my_device_name); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_NetAppGet) -_i32 sl_NetAppGet(_u8 AppId, _u8 Option,_u8 *pOptionLen, _u8 *pOptionValue); -#endif - - - -/*! - - Close the Doxygen group. - @} - - */ - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __NETAPP_H__ */ - diff --git a/cc3200/simplelink/include/netcfg.h b/cc3200/simplelink/include/netcfg.h deleted file mode 100644 index 8014f062a..000000000 --- a/cc3200/simplelink/include/netcfg.h +++ /dev/null @@ -1,281 +0,0 @@ -/* - * netcfg.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - -#ifndef __NETCFG_H__ -#define __NETCFG_H__ - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ -#include "simplelink.h" - -#ifdef __cplusplus -extern "C" { -#endif - - - -/*! - - \addtogroup netcfg - @{ - -*/ - - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - -#define SL_MAC_ADDR_LEN (6) -#define SL_IPV4_VAL(add_3,add_2,add_1,add_0) ((((_u32)add_3 << 24) & 0xFF000000) | (((_u32)add_2 << 16) & 0xFF0000) | (((_u32)add_1 << 8) & 0xFF00) | ((_u32)add_0 & 0xFF) ) -#define SL_IPV4_BYTE(val,index) ( (val >> (index*8)) & 0xFF ) - -#define IPCONFIG_MODE_DISABLE_IPV4 (0) -#define IPCONFIG_MODE_ENABLE_IPV4 (1) - -/*****************************************************************************/ -/* Structure/Enum declarations */ -/*****************************************************************************/ -typedef enum -{ - SL_MAC_ADDRESS_SET = 1, - SL_MAC_ADDRESS_GET = 2, - SL_IPV4_STA_P2P_CL_GET_INFO = 3, - SL_IPV4_STA_P2P_CL_DHCP_ENABLE = 4, - SL_IPV4_STA_P2P_CL_STATIC_ENABLE = 5, - SL_IPV4_AP_P2P_GO_GET_INFO = 6, - SL_IPV4_AP_P2P_GO_STATIC_ENABLE = 7, - SL_SET_HOST_RX_AGGR = 8, - MAX_SETTINGS = 0xFF -}Sl_NetCfg_e; - - -typedef struct -{ - _u32 ipV4; - _u32 ipV4Mask; - _u32 ipV4Gateway; - _u32 ipV4DnsServer; -}SlNetCfgIpV4Args_t; - - -/*****************************************************************************/ -/* Function prototypes */ -/*****************************************************************************/ - -/*! - \brief Internal function for setting network configurations - - \return On success, zero is returned. On error, -1 is - returned - - \param[in] ConfigId configuration id - \param[in] ConfigOpt configurations option - \param[in] ConfigLen configurations len - \param[in] pValues configurations values - - \sa - \note - \warning - - \par Examples: - \code - SL_MAC_ADDRESS_SET: - - Setting MAC address to the Device. - The new MAC address will override the default MAC address and it be saved in the FileSystem. - Requires restarting the device for updating this setting. - - _u8 MAC_Address[6]; - MAC_Address[0] = 0x8; - MAC_Address[1] = 0x0; - MAC_Address[2] = 0x28; - MAC_Address[3] = 0x22; - MAC_Address[4] = 0x69; - MAC_Address[5] = 0x31; - sl_NetCfgSet(SL_MAC_ADDRESS_SET,1,SL_MAC_ADDR_LEN,(_u8 *)newMacAddress); - sl_Stop(0); - sl_Start(NULL,NULL,NULL); - \endcode - - \code - SL_IPV4_STA_P2P_CL_STATIC_ENABLE: - - Setting a static IP address to the device working in STA mode or P2P client. - The IP address will be stored in the FileSystem. - In order to disable the static IP and get the address assigned from DHCP one should use SL_STA_P2P_CL_IPV4_DHCP_SET - - SlNetCfgIpV4Args_t ipV4; - ipV4.ipV4 = (_u32)SL_IPV4_VAL(10,1,1,201); // _u32 IP address - ipV4.ipV4Mask = (_u32)SL_IPV4_VAL(255,255,255,0); // _u32 Subnet mask for this STA/P2P - ipV4.ipV4Gateway = (_u32)SL_IPV4_VAL(10,1,1,1); // _u32 Default gateway address - ipV4.ipV4DnsServer = (_u32)SL_IPV4_VAL(8,16,32,64); // _u32 DNS server address - - sl_NetCfgSet(SL_IPV4_STA_P2P_CL_STATIC_ENABLE,IPCONFIG_MODE_ENABLE_IPV4,sizeof(SlNetCfgIpV4Args_t),(_u8 *)&ipV4); - sl_Stop(0); - sl_Start(NULL,NULL,NULL); - \endcode - - \code - SL_IPV4_STA_P2P_CL_DHCP_ENABLE: - - Setting IP address by DHCP to FileSystem using WLAN sta mode or P2P client. - This should be done once if using Serial Flash. - This is the system's default mode for acquiring an IP address after WLAN connection. - _u8 val = 1; - sl_NetCfgSet(SL_IPV4_STA_P2P_CL_DHCP_ENABLE,IPCONFIG_MODE_ENABLE_IPV4,1,&val); - sl_Stop(0); - sl_Start(NULL,NULL,NULL); - \endcode - - \code - SL_IPV4_AP_P2P_GO_STATIC_ENABLE: - - Setting a static IP address to the device working in AP mode or P2P go. - The IP address will be stored in the FileSystem. Requires restart. - - SlNetCfgIpV4Args_t ipV4; - ipV4.ipV4 = (_u32)SL_IPV4_VAL(10,1,1,201); // _u32 IP address - ipV4.ipV4Mask = (_u32)SL_IPV4_VAL(255,255,255,0); // _u32 Subnet mask for this AP/P2P - ipV4.ipV4Gateway = (_u32)SL_IPV4_VAL(10,1,1,1); // _u32 Default gateway address - ipV4.ipV4DnsServer = (_u32)SL_IPV4_VAL(8,16,32,64); // _u32 DNS server address - - sl_NetCfgSet(SL_IPV4_AP_P2P_GO_STATIC_ENABLE,IPCONFIG_MODE_ENABLE_IPV4,sizeof(SlNetCfgIpV4Args_t),(_u8 *)&ipV4); - sl_Stop(0); - sl_Start(NULL,NULL,NULL); - \endcode - - -*/ -#if _SL_INCLUDE_FUNC(sl_NetCfgSet) -_i32 sl_NetCfgSet(_u8 ConfigId ,_u8 ConfigOpt, _u8 ConfigLen, _u8 *pValues); -#endif - - -/*! - \brief Internal function for getting network configurations - - \return On success, zero is returned. On error, -1 is - returned - - \param[in] ConfigId configuration id - - \param[out] pConfigOpt Get configurations option - - \param[out] pConfigLen The length of the allocated memory as input, when the - function complete, the value of this parameter would be - the len that actually read from the device.\n - If the device return length that is longer from the input - value, the function will cut the end of the returned structure - and will return ESMALLBUF - - \param[out] pValues - get configurations values - - \sa - \note - \warning - \par Examples: - \code - SL_MAC_ADDRESS_GET: - - Get the device MAC address. - The returned MAC address is taken from FileSystem first. If the MAC address was not set by SL_MAC_ADDRESS_SET, the default MAC address - is retrieved from HW. - - _u8 macAddressVal[SL_MAC_ADDR_LEN]; - _u8 macAddressLen = SL_MAC_ADDR_LEN; - sl_NetCfgGet(SL_MAC_ADDRESS_GET,NULL,&macAddressLen,(_u8 *)macAddressVal); - - \endcode - - \code - SL_IPV4_STA_P2P_CL_GET_INFO: - - Get IP address from WLAN station or P2P client. A DHCP flag is returned to indicate if the IP address is static or from DHCP. - - _u8 len = sizeof(SlNetCfgIpV4Args_t); - _u8 dhcpIsOn = 0; - SlNetCfgIpV4Args_t ipV4 = {0}; - sl_NetCfgGet(SL_IPV4_STA_P2P_CL_GET_INFO,&dhcpIsOn,&len,(_u8 *)&ipV4); - - printf("DHCP is %s IP %d.%d.%d.%d MASK %d.%d.%d.%d GW %d.%d.%d.%d DNS %d.%d.%d.%d\n", - (dhcpIsOn > 0) ? "ON" : "OFF", - SL_IPV4_BYTE(ipV4.ipV4,3),SL_IPV4_BYTE(ipV4.ipV4,2),SL_IPV4_BYTE(ipV4.ipV4,1),SL_IPV4_BYTE(ipV4.ipV4,0), - SL_IPV4_BYTE(ipV4.ipV4Mask,3),SL_IPV4_BYTE(ipV4.ipV4Mask,2),SL_IPV4_BYTE(ipV4.ipV4Mask,1),SL_IPV4_BYTE(ipV4.ipV4Mask,0), - SL_IPV4_BYTE(ipV4.ipV4Gateway,3),SL_IPV4_BYTE(ipV4.ipV4Gateway,2),SL_IPV4_BYTE(ipV4.ipV4Gateway,1),SL_IPV4_BYTE(ipV4.ipV4Gateway,0), - SL_IPV4_BYTE(ipV4.ipV4DnsServer,3),SL_IPV4_BYTE(ipV4.ipV4DnsServer,2),SL_IPV4_BYTE(ipV4.ipV4DnsServer,1),SL_IPV4_BYTE(ipV4.ipV4DnsServer,0)); - - \endcode - - \code - SL_IPV4_AP_P2P_GO_GET_INFO: - - Get static IP address for AP or P2P go. - - _u8 len = sizeof(SlNetCfgIpV4Args_t); - _u8 dhcpIsOn = 0; // this flag is meaningless on AP/P2P go. - SlNetCfgIpV4Args_t ipV4 = {0}; - sl_NetCfgGet(SL_IPV4_AP_P2P_GO_GET_INFO,&dhcpIsOn,&len,(_u8 *)&ipV4); - - printf("IP %d.%d.%d.%d MASK %d.%d.%d.%d GW %d.%d.%d.%d DNS %d.%d.%d.%d\n", - SL_IPV4_BYTE(ipV4.ipV4,3),SL_IPV4_BYTE(ipV4.ipV4,2),SL_IPV4_BYTE(ipV4.ipV4,1),SL_IPV4_BYTE(ipV4.ipV4,0), - SL_IPV4_BYTE(ipV4.ipV4Mask,3),SL_IPV4_BYTE(ipV4.ipV4Mask,2),SL_IPV4_BYTE(ipV4.ipV4Mask,1),SL_IPV4_BYTE(ipV4.ipV4Mask,0), - SL_IPV4_BYTE(ipV4.ipV4Gateway,3),SL_IPV4_BYTE(ipV4.ipV4Gateway,2),SL_IPV4_BYTE(ipV4.ipV4Gateway,1),SL_IPV4_BYTE(ipV4.ipV4Gateway,0), - SL_IPV4_BYTE(ipV4.ipV4DnsServer,3),SL_IPV4_BYTE(ipV4.ipV4DnsServer,2),SL_IPV4_BYTE(ipV4.ipV4DnsServer,1),SL_IPV4_BYTE(ipV4.ipV4DnsServer,0)); - - \endcode - - -*/ -#if _SL_INCLUDE_FUNC(sl_NetCfgGet) -_i32 sl_NetCfgGet(_u8 ConfigId ,_u8 *pConfigOpt, _u8 *pConfigLen, _u8 *pValues); -#endif - -/*! - - Close the Doxygen group. - @} - - */ - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __NETCFG_H__ */ - diff --git a/cc3200/simplelink/include/simplelink.h b/cc3200/simplelink/include/simplelink.h deleted file mode 100644 index 412d6242c..000000000 --- a/cc3200/simplelink/include/simplelink.h +++ /dev/null @@ -1,592 +0,0 @@ -/* - * simplelink.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - - -/*! - \mainpage SimpleLink Driver - - \section intro_sec Introduction - - The SimpleLink CC31xx/CC2xx family allows to add Wi-Fi and networking capabilities - to low-cost embedded products without having prior Wi-Fi, RF or networking expertise. - The CC31xx/CC32xx is an ideal solution for microcontroller-based sensor and control - applications such as home appliances, home automation and smart metering. - The CC31xx/CC32xx has integrated a comprehensive TCP/IP network stack, Wi-Fi driver and - security supplicant leading to easier portability to microcontrollers, to an - ultra-low memory footprint, all without compromising the capabilities and robustness - of the final application. - - - - \section modules_sec Module Names - To make it simple, TI's SimpleLink CC31xx/CC32xx platform capabilities were divided into modules by topic (Silo). - These capabilities range from basic device management through wireless - network configuration, standard BSD socket and much more. - Listed below are the various modules in the SimpleLink CC31xx/CC32xx driver: - -# \ref device - controls the behaviour of the CC31xx/CC32xx device (start/stop, events masking and obtaining specific device status) - -# \ref wlan - controls the use of the WiFi WLAN module including: - - Connection features, such as: profiles, policies, SmartConfig™ - - Advanced WLAN features, such as: scans, rx filters and rx statistics collection - -# \ref socket - controls standard client/server sockets programming options and capabilities - -# \ref netapp - activates networking applications, such as: HTTP Server, DHCP Server, Ping, DNS and mDNS. - -# \ref netcfg - controls the configuration of the device addresses (i.e. IP and MAC addresses) - -# \ref FileSystem - provides file system capabilities to TI's CC31XX that can be used by both the CC31XX device and the user. - - - \section proting_sec Porting Guide - - The porting of the SimpleLink driver to any new platform is based on few simple steps. - This guide takes you through this process step by step. Please follow the instructions - carefully to avoid any problems during this process and to enable efficient and proper - work with the device. - Please notice that all modifications and porting adjustments of the driver should be - made in the user.h header file only. - Keep making any of the changes only in this file will ensure smoothly transaction to - new versions of the driver at the future! - - - \subsection porting_step1 Step 1 - Create your own user.h file - - The first step is to create a user.h file that will include your configurations and - adjustments. You can use the empty template provided as part of this driver or - you can choose to base your file on file from one of the wide range of examples - applications provided by Texas Instruments - - - \subsection porting_step2 Step 2 - Select the capabilities set required for your application - - Texas Instruments made a lot of efforts to build set of predefined capability sets that would - fit most of the target application. - It is recommended to try and choose one of this predefined capabilities set before going to - build your own customized set. If you find compatible set you can skip the rest of this step. - - The available sets are: - -# SL_TINY - Compatible to be used on platforms with very limited resources. Provides - the best in class foot print in terms of Code and Data consumption. - -# SL_SMALL - Compatible to most common networking applications. Provide the most - common APIs with decent balance between code size, data size, functionality - and performances - -# SL_FULL - Provide access to all SimpleLink functionalities - - - \subsection porting_step3 Step 3 - Bind the device enable/disable output line - - The enable/disable line (nHib) provide mechanism to enter the device into the least current - consumption mode. This mode could be used when no traffic is required (tx/rx). - when this line is not connected to any IO of the host this define should be left empty. - Not connecting this line results in ability to start the driver only once. - - - \subsection porting_step4 Step 4 - Writing your interface communication driver - - The SimpleLink device support several standard communication protocol among SPI and - UART. Depending on your needs and your hardware design, you should choose the - communication channel type. - The interface for this communication channel should include 4 simple access functions: - -# open - -# close - -# read - -# write - - The way this driver would be implemented is directly effecting the efficiency and - the performances of the SimpleLink device on this platform. - If your system has DMA you should consider to use it in order to increase the utilization - of the communication channel - If you have enough memory resources you should consider using a buffer to increase the - efficiency of the write operations. - - - \subsection porting_step5 Step 5 - Choose your memory management model - - The SimpleLink driver support two memory models: - -# Static (default) - -# Dynamic - - If you choose to work in dynamic model you will have to provide alloc and free functions - to be used by the Simple Link driver otherwise nothing need to be done. - - - \subsection porting_step6 Step 6 - OS adaptation - - The SimpleLink driver could run on two kind of platforms: - -# Non-Os / Single Threaded (default) - -# Multi-Threaded - - If you choose to work in multi-threaded environment under operating system you will have to - provide some basic adaptation routines to allow the driver to protect access to resources - for different threads (locking object) and to allow synchronization between threads (sync objects). - In additional the driver support running without dedicated thread allocated solely to the simple - link driver. If you choose to work in this mode, you should also supply a spawn method that - will enable to run function on a temporary context. - - - \subsection porting_step7 Step 7 - Set your asynchronous event handlers routines - - The SimpleLink device generate asynchronous events in several situations. - These asynchronous events could be masked. - In order to catch these events you have to provide handler routines. - Please notice that if you not provide a handler routine and the event is received, - the driver will drop this event without any indication of this drop. - - - \subsection porting_step8 Step 8 - Run diagnostic tools to validate the correctness of your porting - - The driver is delivered with some porting diagnostic tools to simplify the porting validation process - and to reduce issues latter. It is very important to follow carefully this process. - - The diagnostic process include: - -# Validating Interface Communication Driver - -# Validating OS adaptation layer - -# Validating HW integrity - -# Validating basic work with the device - - - \section sw_license License - - * - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - - - -#ifndef __SIMPLELINK_H__ -#define __SIMPLELINK_H__ - -#include "user.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - -/*! \attention Async event activation notes - Function prototypes for event callback handlers - Event handler function names should be defined in the user.h file - e.g. - "#define sl_WlanEvtHdlr SLWlanEventHandler" - Indicates all WLAN events are handled by User func "SLWlanEventHandler" - Important notes: - 1. Event handlers cannot activate another SimpleLink API from the event's context - 2. Event's data is valid during event's context. Any application data - which is required for the user application should be copied or marked - into user's variables - 3. It is not recommended to delay the execution of the event callback handler - -*/ - -/*! - - \addtogroup UserEvents - @{ - -*/ - - -/*****************************************************************************/ -/* Macro declarations for Host Driver version */ -/*****************************************************************************/ -#define SL_DRIVER_VERSION "1.0.0.1" -#define SL_MAJOR_VERSION_NUM 1L -#define SL_MINOR_VERSION_NUM 0L -#define SL_VERSION_NUM 0L -#define SL_SUB_VERSION_NUM 1L - - -/*****************************************************************************/ -/* Macro declarations for predefined configurations */ -/*****************************************************************************/ - -#ifdef SL_TINY -#undef SL_INC_ARG_CHECK -#undef SL_INC_EXT_API -#undef SL_INC_SOCK_CLIENT_SIDE_API -#undef SL_INC_SOCK_SEND_API -#undef SL_INC_WLAN_PKG -#undef SL_INC_NET_APP_PKG -#undef SL_INC_NET_CFG_PKG -#undef SL_INC_FS_PKG -#define SL_INC_SOCK_SERVER_SIDE_API -#define SL_INC_SOCK_RECV_API -#define SL_INC_SOCKET_PKG -#endif - -#ifdef SL_SMALL -#undef SL_INC_EXT_API -#undef SL_INC_NET_APP_PKG -#undef SL_INC_NET_CFG_PKG -#undef SL_INC_FS_PKG -#define SL_INC_ARG_CHECK -#define SL_INC_WLAN_PKG -#define SL_INC_SOCKET_PKG -#define SL_INC_SOCK_CLIENT_SIDE_API -#define SL_INC_SOCK_SERVER_SIDE_API -#define SL_INC_SOCK_RECV_API -#define SL_INC_SOCK_SEND_API -#endif - -#ifdef SL_FULL -#define SL_INC_EXT_API -#define SL_INC_NET_APP_PKG -#define SL_INC_NET_CFG_PKG -#define SL_INC_FS_PKG -#define SL_INC_ARG_CHECK -#define SL_INC_WLAN_PKG -#define SL_INC_SOCKET_PKG -#define SL_INC_SOCK_CLIENT_SIDE_API -#define SL_INC_SOCK_SERVER_SIDE_API -#define SL_INC_SOCK_RECV_API -#define SL_INC_SOCK_SEND_API -#endif - -#define SL_RET_CODE_OK (0) -#define SL_RET_CODE_INVALID_INPUT (-2) -#define SL_RET_CODE_SELF_ERROR (-3) -#define SL_RET_CODE_NWP_IF_ERROR (-4) -#define SL_RET_CODE_MALLOC_ERROR (-5) - -#define sl_Memcpy memcpy -#define sl_Memset memset - -#define sl_SyncObjClear(pObj) sl_SyncObjWait(pObj,SL_OS_NO_WAIT) - -#define SL_MAX_SOCKETS (8) - - -/*****************************************************************************/ -/* Types definitions */ -/*****************************************************************************/ -typedef void (*_SlSpawnEntryFunc_t)(void* pValue); - -#ifndef NULL -#define NULL (0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (!FALSE) -#endif - -#ifndef OK -#define OK (0) -#endif - -#ifndef _SL_USER_TYPES - #define _u8 unsigned char - #define _i8 signed char - - #define _u16 unsigned short - #define _i16 signed short - - #define _u32 unsigned long - #define _i32 signed long - #define _volatile volatile - #define _const const -#endif - -typedef _u16 _SlOpcode_t; -typedef _u8 _SlArgSize_t; -typedef _i16 _SlDataSize_t; -typedef _i16 _SlReturnVal_t; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ - -#ifdef SL_PLATFORM_MULTI_THREADED - #include "../source/spawn.h" -#else - #include "../source/nonos.h" -#endif - - -/* - objInclusion.h and user.h must be included before all api header files - objInclusion.h must be the last arrangement just before including the API header files - since it based on the other configurations to decide which object should be included -*/ -#include "../source/objInclusion.h" -#include "trace.h" -#include "fs.h" -#include "socket.h" -#include "netapp.h" -#include "wlan.h" -#include "device.h" -#include "netcfg.h" -#include "wlan_rx_filters.h" - - - -/* Async functions description*/ - -/*! - \brief General async event for inspecting general events - - \param[out] pSlDeviceEvent pointer to SlDeviceEvent_t - - \par - Parameters: \n - <b>pSlDeviceEvent->Event = SL_DEVICE_FATAL_ERROR_EVENT </b> - - pSlDeviceEvent->EventData.deviceEvent fields: - - status: An error code indication from the device - - sender: The sender originator which is based on SlErrorSender_e enum - - \par Example: - \code - printf(General Event Handler - ID=%d Sender=%d\n\n", - pSlDeviceEvent->EventData.deviceEvent.status, // status of the general event - pSlDeviceEvent->EventData.deviceEvent.sender); // sender type - \endcode -*/ -#if (defined(sl_GeneralEvtHdlr)) -extern void sl_GeneralEvtHdlr(SlDeviceEvent_t *pSlDeviceEvent); -#endif - - -/*! - \brief WLAN Async event handler - - \param[out] pSlWlanEvent pointer to SlWlanEvent_t data - - \par - Parameters: - - - <b>pSlWlanEvent->Event = SL_WLAN_CONNECT_EVENT </b>, STA or P2P client connection indication event - - pSlWlanEvent->EventData.STAandP2PModeWlanConnected main fields: - - ssid_name - - ssid_len - - bssid - - go_peer_device_name - - go_peer_device_name_len - - - <b>pSlWlanEvent->Event = SL_WLAN_DISCONNECT_EVENT </b>, STA or P2P client disconnection event - - pSlWlanEvent->EventData.STAandP2PModeDisconnected main fields: - - ssid_name - - ssid_len - - reason_code - - - <b>pSlWlanEvent->Event = SL_WLAN_STA_CONNECTED_EVENT </b>, AP/P2P(Go) connected STA/P2P(Client) - - pSlWlanEvent->EventData.APModeStaConnected fields: - - go_peer_device_name - - mac - - go_peer_device_name_len - - wps_dev_password_id - - own_ssid: relevant for event sta-connected only - - own_ssid_len: relevant for event sta-connected only - - - <b>pSlWlanEvent->Event = SL_WLAN_STA_DISCONNECTED_EVENT </b>, AP/P2P(Go) disconnected STA/P2P(Client) - - pSlWlanEvent->EventData.APModestaDisconnected fields: - - go_peer_device_name - - mac - - go_peer_device_name_len - - wps_dev_password_id - - own_ssid: relevant for event sta-connected only - - own_ssid_len: relevant for event sta-connected only - - - <b>pSlWlanEvent->Event = SL_WLAN_SMART_CONFIG_COMPLETE_EVENT </b> - - pSlWlanEvent->EventData.smartConfigStartResponse fields: - - status - - ssid_len - - ssid - - private_token_len - - private_token - - - <b>pSlWlanEvent->Event = SL_WLAN_SMART_CONFIG_STOP_EVENT </b> - - pSlWlanEvent->EventData.smartConfigStopResponse fields: - - status - - - <b>pSlWlanEvent->Event = SL_WLAN_P2P_DEV_FOUND_EVENT </b> - - pSlWlanEvent->EventData.P2PModeDevFound fields: - - go_peer_device_name - - mac - - go_peer_device_name_len - - wps_dev_password_id - - own_ssid: relevant for event sta-connected only - - own_ssid_len: relevant for event sta-connected only - - - <b>pSlWlanEvent->Event = SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT </b> - - pSlWlanEvent->EventData.P2PModeNegReqReceived fields - - go_peer_device_name - - mac - - go_peer_device_name_len - - wps_dev_password_id - - own_ssid: relevant for event sta-connected only - - - <b>pSlWlanEvent->Event = SL_WLAN_CONNECTION_FAILED_EVENT </b>, P2P only - - pSlWlanEvent->EventData.P2PModewlanConnectionFailure fields: - - status -*/ -#if (defined(sl_WlanEvtHdlr)) -extern void sl_WlanEvtHdlr(SlWlanEvent_t *pSlWlanEvent); -#endif - - -/*! - \brief NETAPP Async event handler - - \param[out] pSlNetApp pointer to SlNetAppEvent_t data - - \par - Parameters: - - <b>pSlWlanEvent->Event = SL_NETAPP_IPV4_IPACQUIRED_EVENT</b>, IPV4 acquired event - - pSlWlanEvent->EventData.ipAcquiredV4 fields: - - ip - - gateway - - dns - - - <b>pSlWlanEvent->Event = SL_NETAPP_IP_LEASED_EVENT</b>, AP or P2P go dhcp lease event - - pSlWlanEvent->EventData.ipLeased fields: - - ip_address - - lease_time - - mac - - - <b>pSlWlanEvent->Event = SL_NETAPP_IP_RELEASED_EVENT</b>, AP or P2P go dhcp ip release event - - pSlWlanEvent->EventData.ipReleased fields - - ip_address - - mac - - reason - -*/ -#if (defined(sl_NetAppEvtHdlr)) -extern void sl_NetAppEvtHdlr(SlNetAppEvent_t *pSlNetApp); -#endif - -/*! - \brief Socket Async event handler - - \param[out] pSlSockEvent pointer to SlSockEvent_t data - - \par - Parameters:\n - - <b>pSlSockEvent->Event = SL_SOCKET_TX_FAILED_EVENT</b> - - pSlSockEvent->EventData fields: - - sd - - status - - <b>pSlSockEvent->Event = SL_SOCKET_ASYNC_EVENT</b> - - pSlSockEvent->EventData fields: - - sd - - type: SSL_ACCEPT or RX_FRAGMENTATION_TOO_BIG or OTHER_SIDE_CLOSE_SSL_DATA_NOT_ENCRYPTED - - val - -*/ -#if (defined(sl_SockEvtHdlr)) -extern void sl_SockEvtHdlr(SlSockEvent_t *pSlSockEvent); -#endif - -/*! - \brief HTTP server async event - - \param[out] pSlHttpServerEvent pointer to SlHttpServerEvent_t - \param[in] pSlHttpServerResponse pointer to SlHttpServerResponse_t - - \par - Parameters: \n - - - <b>pSlHttpServerEvent->Event = SL_NETAPP_HTTPGETTOKENVALUE_EVENT</b> - - pSlHttpServerEvent->EventData fields: - - httpTokenName - - data - - len - - pSlHttpServerResponse->ResponseData fields: - - data - - len - - - <b>pSlHttpServerEvent->Event = SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT</b> - - pSlHttpServerEvent->EventData.httpPostData fields: - - action - - token_name - - token_value - - pSlHttpServerResponse->ResponseData fields: - - data - - len - -*/ -#if (defined(sl_HttpServerCallback)) -extern void sl_HttpServerCallback(SlHttpServerEvent_t *pSlHttpServerEvent, SlHttpServerResponse_t *pSlHttpServerResponse); -#endif -/*! - - Close the Doxygen group. - @} - - */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __SIMPLELINK_H__ */ - diff --git a/cc3200/simplelink/include/socket.h b/cc3200/simplelink/include/socket.h deleted file mode 100644 index 9293be4d4..000000000 --- a/cc3200/simplelink/include/socket.h +++ /dev/null @@ -1,1498 +0,0 @@ -/* - * socket.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - -#ifndef __SL_SOCKET_H__ -#define __SL_SOCKET_H__ - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ -#include "simplelink.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -/*! - - \addtogroup socket - @{ - -*/ - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - -#define SL_FD_SETSIZE SL_MAX_SOCKETS /* Number of sockets to select on - same is max sockets! */ -#define BSD_SOCKET_ID_MASK (0x0F) /* Index using the LBS 4 bits for socket id 0-7 */ -/* Define some BSD protocol constants. */ -#define SL_SOCK_STREAM (1) /* TCP Socket */ -#define SL_SOCK_DGRAM (2) /* UDP Socket */ -#define SL_SOCK_RAW (3) /* Raw socket */ -#define SL_IPPROTO_TCP (6) /* TCP Raw Socket */ -#define SL_IPPROTO_UDP (17) /* UDP Raw Socket */ -#define SL_IPPROTO_RAW (255) /* Raw Socket */ -#define SL_SEC_SOCKET (100) /* Secured Socket Layer (SSL,TLS) */ - -/* Address families. */ -#define SL_AF_INET (2) /* IPv4 socket (UDP, TCP, etc) */ -#define SL_AF_INET6 (3) /* IPv6 socket (UDP, TCP, etc) */ -#define SL_AF_INET6_EUI_48 (9) -#define SL_AF_RF (6) /* data include RF parameter, All layer by user (Wifi could be disconnected) */ -#define SL_AF_PACKET (17) -/* Protocol families, same as address families. */ -#define SL_PF_INET AF_INET -#define SL_PF_INET6 AF_INET6 -#define SL_INADDR_ANY (0) /* bind any address */ - -/* error codes */ -#define SL_SOC_ERROR (-1) /* Failure. */ -#define SL_SOC_OK ( 0) /* Success. */ -#define SL_INEXE (-8) /* socket command in execution */ -#define SL_EBADF (-9) /* Bad file number */ -#define SL_ENSOCK (-10) /* The system limit on the total number of open socket, has been reached */ -#define SL_EAGAIN (-11) /* Try again */ -#define SL_EWOULDBLOCK SL_EAGAIN -#define SL_ENOMEM (-12) /* Out of memory */ -#define SL_EACCES (-13) /* Permission denied */ -#define SL_EFAULT (-14) /* Bad address */ -#define SL_ECLOSE (-15) /* close socket operation failed to transmit all queued packets */ -#define SL_EALREADY_ENABLED (-21) /* Transceiver - Transceiver already ON. there could be only one */ -#define SL_EINVAL (-22) /* Invalid argument */ -#define SL_EAUTO_CONNECT_OR_CONNECTING (-69) /* Transceiver - During connection, connected or auto mode started */ -#define SL_CONNECTION_PENDING (-72) /* Transceiver - Device is connected, disconnect first to open transceiver */ -#define SL_EUNSUPPORTED_ROLE (-86) /* Transceiver - Trying to start when WLAN role is AP or P2P GO */ -#define SL_EDESTADDRREQ (-89) /* Destination address required */ -#define SL_EPROTOTYPE (-91) /* Protocol wrong type for socket */ -#define SL_ENOPROTOOPT (-92) /* Protocol not available */ -#define SL_EPROTONOSUPPORT (-93) /* Protocol not supported */ -#define SL_ESOCKTNOSUPPORT (-94) /* Socket type not supported */ -#define SL_EOPNOTSUPP (-95) /* Operation not supported on transport endpoint */ -#define SL_EAFNOSUPPORT (-97) /* Address family not supported by protocol */ -#define SL_EADDRINUSE (-98) /* Address already in use */ -#define SL_EADDRNOTAVAIL (-99) /* Cannot assign requested address */ -#define SL_ENETUNREACH (-101) /* Network is unreachable */ -#define SL_ENOBUFS (-105) /* No buffer space available */ -#define SL_EOBUFF SL_ENOBUFS -#define SL_EISCONN (-106) /* Transport endpoint is already connected */ -#define SL_ENOTCONN (-107) /* Transport endpoint is not connected */ -#define SL_ETIMEDOUT (-110) /* Connection timed out */ -#define SL_ECONNREFUSED (-111) /* Connection refused */ -#define SL_EALREADY (-114) /* Non blocking connect in progress, try again */ - -#define SL_ESEC_RSA_WRONG_TYPE_E (-130) /* RSA wrong block type for RSA function */ -#define SL_ESEC_RSA_BUFFER_E (-131) /* RSA buffer error, output too small or */ -#define SL_ESEC_BUFFER_E (-132) /* output buffer too small or input too large */ -#define SL_ESEC_ALGO_ID_E (-133) /* setting algo id error */ -#define SL_ESEC_PUBLIC_KEY_E (-134) /* setting public key error */ -#define SL_ESEC_DATE_E (-135) /* setting date validity error */ -#define SL_ESEC_SUBJECT_E (-136) /* setting subject name error */ -#define SL_ESEC_ISSUER_E (-137) /* setting issuer name error */ -#define SL_ESEC_CA_TRUE_E (-138) /* setting CA basic constraint true error */ -#define SL_ESEC_EXTENSIONS_E (-139) /* setting extensions error */ -#define SL_ESEC_ASN_PARSE_E (-140) /* ASN parsing error, invalid input */ -#define SL_ESEC_ASN_VERSION_E (-141) /* ASN version error, invalid number */ -#define SL_ESEC_ASN_GETINT_E (-142) /* ASN get big _i16 error, invalid data */ -#define SL_ESEC_ASN_RSA_KEY_E (-143) /* ASN key init error, invalid input */ -#define SL_ESEC_ASN_OBJECT_ID_E (-144) /* ASN object id error, invalid id */ -#define SL_ESEC_ASN_TAG_NULL_E (-145) /* ASN tag error, not null */ -#define SL_ESEC_ASN_EXPECT_0_E (-146) /* ASN expect error, not zero */ -#define SL_ESEC_ASN_BITSTR_E (-147) /* ASN bit string error, wrong id */ -#define SL_ESEC_ASN_UNKNOWN_OID_E (-148) /* ASN oid error, unknown sum id */ -#define SL_ESEC_ASN_DATE_SZ_E (-149) /* ASN date error, bad size */ -#define SL_ESEC_ASN_BEFORE_DATE_E (-150) /* ASN date error, current date before */ -#define SL_ESEC_ASN_AFTER_DATE_E (-151) /* ASN date error, current date after */ -#define SL_ESEC_ASN_SIG_OID_E (-152) /* ASN signature error, mismatched oid */ -#define SL_ESEC_ASN_TIME_E (-153) /* ASN time error, unknown time type */ -#define SL_ESEC_ASN_INPUT_E (-154) /* ASN input error, not enough data */ -#define SL_ESEC_ASN_SIG_CONFIRM_E (-155) /* ASN sig error, confirm failure */ -#define SL_ESEC_ASN_SIG_HASH_E (-156) /* ASN sig error, unsupported hash type */ -#define SL_ESEC_ASN_SIG_KEY_E (-157) /* ASN sig error, unsupported key type */ -#define SL_ESEC_ASN_DH_KEY_E (-158) /* ASN key init error, invalid input */ -#define SL_ESEC_ASN_NTRU_KEY_E (-159) /* ASN ntru key decode error, invalid input */ -#define SL_ESEC_ECC_BAD_ARG_E (-170) /* ECC input argument of wrong type */ -#define SL_ESEC_ASN_ECC_KEY_E (-171) /* ASN ECC bad input */ -#define SL_ESEC_ECC_CURVE_OID_E (-172) /* Unsupported ECC OID curve type */ -#define SL_ESEC_BAD_FUNC_ARG (-173) /* Bad function argument provided */ -#define SL_ESEC_NOT_COMPILED_IN (-174) /* Feature not compiled in */ -#define SL_ESEC_UNICODE_SIZE_E (-175) /* Unicode password too big */ -#define SL_ESEC_NO_PASSWORD (-176) /* no password provided by user */ -#define SL_ESEC_ALT_NAME_E (-177) /* alt name size problem, too big */ -#define SL_ESEC_AES_GCM_AUTH_E (-180) /* AES-GCM Authentication check failure */ -#define SL_ESEC_AES_CCM_AUTH_E (-181) /* AES-CCM Authentication check failure */ -/* ssl tls security start with -300 offset */ -#define SL_ESEC_CLOSE_NOTIFY (-300) /* ssl/tls alerts */ -#define SL_ESEC_UNEXPECTED_MESSAGE (-310) /* ssl/tls alerts */ -#define SL_ESEC_BAD_RECORD_MAC (-320) /* ssl/tls alerts */ -#define SL_ESEC_DECRYPTION_FAILED (-321) /* ssl/tls alerts */ -#define SL_ESEC_RECORD_OVERFLOW (-322) /* ssl/tls alerts */ -#define SL_ESEC_DECOMPRESSION_FAILURE (-330) /* ssl/tls alerts */ -#define SL_ESEC_HANDSHAKE_FAILURE (-340) /* ssl/tls alerts */ -#define SL_ESEC_NO_CERTIFICATE (-341) /* ssl/tls alerts */ -#define SL_ESEC_BAD_CERTIFICATE (-342) /* ssl/tls alerts */ -#define SL_ESEC_UNSUPPORTED_CERTIFICATE (-343) /* ssl/tls alerts */ -#define SL_ESEC_CERTIFICATE_REVOKED (-344) /* ssl/tls alerts */ -#define SL_ESEC_CERTIFICATE_EXPIRED (-345) /* ssl/tls alerts */ -#define SL_ESEC_CERTIFICATE_UNKNOWN (-346) /* ssl/tls alerts */ -#define SL_ESEC_ILLEGAL_PARAMETER (-347) /* ssl/tls alerts */ -#define SL_ESEC_UNKNOWN_CA (-348) /* ssl/tls alerts */ -#define SL_ESEC_ACCESS_DENIED (-349) /* ssl/tls alerts */ -#define SL_ESEC_DECODE_ERROR (-350) /* ssl/tls alerts */ -#define SL_ESEC_DECRYPT_ERROR (-351) /* ssl/tls alerts */ -#define SL_ESEC_EXPORT_RESTRICTION (-360) /* ssl/tls alerts */ -#define SL_ESEC_PROTOCOL_VERSION (-370) /* ssl/tls alerts */ -#define SL_ESEC_INSUFFICIENT_SECURITY (-371) /* ssl/tls alerts */ -#define SL_ESEC_INTERNAL_ERROR (-380) /* ssl/tls alerts */ -#define SL_ESEC_USER_CANCELLED (-390) /* ssl/tls alerts */ -#define SL_ESEC_NO_RENEGOTIATION (-400) /* ssl/tls alerts */ -#define SL_ESEC_UNSUPPORTED_EXTENSION (-410) /* ssl/tls alerts */ -#define SL_ESEC_CERTIFICATE_UNOBTAINABLE (-411) /* ssl/tls alerts */ -#define SL_ESEC_UNRECOGNIZED_NAME (-412) /* ssl/tls alerts */ -#define SL_ESEC_BAD_CERTIFICATE_STATUS_RESPONSE (-413) /* ssl/tls alerts */ -#define SL_ESEC_BAD_CERTIFICATE_HASH_VALUE (-414) /* ssl/tls alerts */ -/* propierty secure */ -#define SL_ESECGENERAL (-450) /* error secure level general error */ -#define SL_ESECDECRYPT (-451) /* error secure level, decrypt recv packet fail */ -#define SL_ESECCLOSED (-452) /* secure layrer is closed by other size , tcp is still connected */ -#define SL_ESECSNOVERIFY (-453) /* Connected without server verification */ -#define SL_ESECNOCAFILE (-454) /* error secure level CA file not found*/ -#define SL_ESECMEMORY (-455) /* error secure level No memory space available */ -#define SL_ESECBADCAFILE (-456) /* error secure level bad CA file */ -#define SL_ESECBADCERTFILE (-457) /* error secure level bad Certificate file */ -#define SL_ESECBADPRIVATEFILE (-458) /* error secure level bad private file */ -#define SL_ESECBADDHFILE (-459) /* error secure level bad DH file */ -#define SL_ESECT00MANYSSLOPENED (-460) /* MAX SSL Sockets are opened */ -#define SL_ESECDATEERROR (-461) /* connected with certificate date verification error */ -#define SL_ESECHANDSHAKETIMEDOUT (-462) /* connection timed out due to handshake time */ - -/* end error codes */ - -/* Max payload size by protocol */ -#define SL_SOCKET_PAYLOAD_TYPE_MASK (0xF0) /*4 bits type, 4 bits sockets id */ -#define SL_SOCKET_PAYLOAD_TYPE_UDP_IPV4 (0x00) /* 1472 bytes */ -#define SL_SOCKET_PAYLOAD_TYPE_TCP_IPV4 (0x10) /* 1460 bytes */ -#define SL_SOCKET_PAYLOAD_TYPE_UDP_IPV6 (0x20) /* 1452 bytes */ -#define SL_SOCKET_PAYLOAD_TYPE_TCP_IPV6 (0x30) /* 1440 bytes */ -#define SL_SOCKET_PAYLOAD_TYPE_UDP_IPV4_SECURE (0x40) /* */ -#define SL_SOCKET_PAYLOAD_TYPE_TCP_IPV4_SECURE (0x50) /* */ -#define SL_SOCKET_PAYLOAD_TYPE_UDP_IPV6_SECURE (0x60) /* */ -#define SL_SOCKET_PAYLOAD_TYPE_TCP_IPV6_SECURE (0x70) /* */ -#define SL_SOCKET_PAYLOAD_TYPE_RAW_TRANCEIVER (0x80) /* 1536 bytes */ -#define SL_SOCKET_PAYLOAD_TYPE_RAW_PACKET (0x90) /* 1536 bytes */ -#define SL_SOCKET_PAYLOAD_TYPE_RAW_IP4 (0xa0) -#define SL_SOCKET_PAYLOAD_TYPE_RAW_IP6 (SL_SOCKET_PAYLOAD_TYPE_RAW_IP4 ) - - - -#define SL_SOL_SOCKET (1) /* Define the socket option category. */ -#define SL_IPPROTO_IP (2) /* Define the IP option category. */ -#define SL_SOL_PHY_OPT (3) /* Define the PHY option category. */ - -#define SL_SO_RCVBUF (8) /* Setting TCP receive buffer size */ -#define SL_SO_KEEPALIVE (9) /* Connections are kept alive with periodic messages */ -#define SL_SO_RCVTIMEO (20) /* Enable receive timeout */ -#define SL_SO_NONBLOCKING (24) /* Enable . disable nonblocking mode */ -#define SL_SO_SECMETHOD (25) /* security metohd */ -#define SL_SO_SECURE_MASK (26) /* security mask */ -#define SL_SO_SECURE_FILES (27) /* security files */ -#define SL_SO_CHANGE_CHANNEL (28) /* This option is available only when transceiver started */ -#define SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME (30) /* This option used to configue secure file */ -#define SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME (31) /* This option used to configue secure file */ -#define SL_SO_SECURE_FILES_CA_FILE_NAME (32) /* This option used to configue secure file */ -#define SL_SO_SECURE_FILES_DH_KEY_FILE_NAME (33) /* This option used to configue secure file */ - -#define SL_IP_MULTICAST_IF (60) /* Specify outgoing multicast interface */ -#define SL_IP_MULTICAST_TTL (61) /* Specify the TTL value to use for outgoing multicast packet. */ -#define SL_IP_ADD_MEMBERSHIP (65) /* Join IPv4 multicast membership */ -#define SL_IP_DROP_MEMBERSHIP (66) /* Leave IPv4 multicast membership */ -#define SL_IP_HDRINCL (67) /* Raw socket IPv4 header included. */ -#define SL_IP_RAW_RX_NO_HEADER (68) /* Proprietary socket option that does not includeIPv4/IPv6 header (and extension headers) on received raw sockets*/ -#define SL_IP_RAW_IPV6_HDRINCL (69) /* Transmitted buffer over IPv6 socket contains IPv6 header. */ - -#define SL_SO_PHY_RATE (100) /* WLAN Transmit rate */ -#define SL_SO_PHY_TX_POWER (101) /* TX Power level */ -#define SL_SO_PHY_NUM_FRAMES_TO_TX (102) /* Number of frames to transmit */ -#define SL_SO_PHY_PREAMBLE (103) /* Preamble for transmission */ - -#define SL_SO_SEC_METHOD_SSLV3 (0) /* security metohd SSL v3*/ -#define SL_SO_SEC_METHOD_TLSV1 (1) /* security metohd TLS v1*/ -#define SL_SO_SEC_METHOD_TLSV1_1 (2) /* security metohd TLS v1_1*/ -#define SL_SO_SEC_METHOD_TLSV1_2 (3) /* security metohd TLS v1_2*/ -#define SL_SO_SEC_METHOD_SSLv3_TLSV1_2 (4) /* use highest possible version from SSLv3 - TLS 1.2*/ -#define SL_SO_SEC_METHOD_DLSV1 (5) /* security metohd DTL v1 */ - -#define SL_SEC_MASK_SSL_RSA_WITH_RC4_128_SHA (1 << 0) -#define SL_SEC_MASK_SSL_RSA_WITH_RC4_128_MD5 (1 << 1) -#define SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA (1 << 2) -#define SL_SEC_MASK_TLS_DHE_RSA_WITH_AES_256_CBC_SHA (1 << 3) -#define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (1 << 4) -#define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_RC4_128_SHA (1 << 5) -#define SL_SEC_MASK_SECURE_DEFAULT ((SEC_MASK_TLS_ECDHE_RSA_WITH_RC4_128_SHA << 1) - 1) - -#define SL_MSG_DONTWAIT (0x00000008) /* Nonblocking IO */ - -/* AP DHCP Server - IP Release reason code */ -#define SL_IP_LEASE_PEER_RELEASE (0) -#define SL_IP_LEASE_PEER_DECLINE (1) -#define SL_IP_LEASE_EXPIRED (2) - -/* possible types when receiving SL_SOCKET_ASYNC_EVENT*/ -#define SSL_ACCEPT (1) /* accept failed due to ssl issue ( tcp pass) */ -#define RX_FRAGMENTATION_TOO_BIG (2) /* connection less mode, rx packet fragmentation > 16K, packet is being released */ -#define OTHER_SIDE_CLOSE_SSL_DATA_NOT_ENCRYPTED (3) /* remote side down from secure to unsecure */ - - - -#ifdef SL_INC_STD_BSD_API_NAMING - -#define FD_SETSIZE SL_FD_SETSIZE - -#define SOCK_STREAM SL_SOCK_STREAM -#define SOCK_DGRAM SL_SOCK_DGRAM -#define SOCK_RAW SL_SOCK_RAW -#define IPPROTO_TCP SL_IPPROTO_TCP -#define IPPROTO_UDP SL_IPPROTO_UDP -#define IPPROTO_RAW SL_IPPROTO_RAW - -#define AF_INET SL_AF_INET -#define AF_INET6 SL_AF_INET6 -#define AF_INET6_EUI_48 SL_AF_INET6_EUI_48 -#define AF_RF SL_AF_RF -#define AF_PACKET SL_AF_PACKET - -#define PF_INET SL_PF_INET -#define PF_INET6 SL_PF_INET6 - -#define INADDR_ANY SL_INADDR_ANY -#define ERROR SL_SOC_ERROR -#define INEXE SL_INEXE -#define EBADF SL_EBADF -#define ENSOCK SL_ENSOCK -#define EAGAIN SL_EAGAIN -#define EWOULDBLOCK SL_EWOULDBLOCK -#define ENOMEM SL_ENOMEM -#define EACCES SL_EACCES -#define EFAULT SL_EFAULT -#define EINVAL SL_EINVAL -#define EDESTADDRREQ SL_EDESTADDRREQ -#define EPROTOTYPE SL_EPROTOTYPE -#define ENOPROTOOPT SL_ENOPROTOOPT -#define EPROTONOSUPPORT SL_EPROTONOSUPPORT -#define ESOCKTNOSUPPORT SL_ESOCKTNOSUPPORT -#define EOPNOTSUPP SL_EOPNOTSUPP -#define EAFNOSUPPORT SL_EAFNOSUPPORT -#define EADDRINUSE SL_EADDRINUSE -#define EADDRNOTAVAIL SL_EADDRNOTAVAIL -#define ENETUNREACH SL_ENETUNREACH -#define ENOBUFS SL_ENOBUFS -#define EOBUFF SL_EOBUFF -#define EISCONN SL_EISCONN -#define ENOTCONN SL_ENOTCONN -#define ETIMEDOUT SL_ETIMEDOUT -#define ECONNREFUSED SL_ECONNREFUSED - -#define SOL_SOCKET SL_SOL_SOCKET -#define IPPROTO_IP SL_IPPROTO_IP -#define SO_KEEPALIVE SL_SO_KEEPALIVE - -#define SO_RCVTIMEO SL_SO_RCVTIMEO -#define SO_NONBLOCKING SL_SO_NONBLOCKING - -#define IP_MULTICAST_IF SL_IP_MULTICAST_IF -#define IP_MULTICAST_TTL SL_IP_MULTICAST_TTL -#define IP_ADD_MEMBERSHIP SL_IP_ADD_MEMBERSHIP -#define IP_DROP_MEMBERSHIP SL_IP_DROP_MEMBERSHIP - -#define socklen_t SlSocklen_t -#define timeval SlTimeval_t -#define sockaddr SlSockAddr_t -#define in6_addr SlIn6Addr_t -#define sockaddr_in6 SlSockAddrIn6_t -#define in_addr SlInAddr_t -#define sockaddr_in SlSockAddrIn_t - -#define MSG_DONTWAIT SL_MSG_DONTWAIT - -#define FD_SET SL_FD_SET -#define FD_CLR SL_FD_CLR -#define FD_ISSET SL_FD_ISSET -#define FD_ZERO SL_FD_ZERO -#define fd_set SlFdSet_t - -#define socket sl_Socket -#define close sl_Close -#define accept sl_Accept -#define bind sl_Bind -#define listen sl_Listen -#define connect sl_Connect -#define select sl_Select -#define setsockopt sl_SetSockOpt -#define getsockopt sl_GetSockOpt -#define recv sl_Recv -#define recvfrom sl_RecvFrom -#define write sl_Write -#define send sl_Send -#define sendto sl_SendTo -#define gethostbyname sl_NetAppDnsGetHostByName -#define htonl sl_Htonl -#define ntohl sl_Ntohl -#define htons sl_Htons -#define ntohs sl_Ntohs -#endif - -/*****************************************************************************/ -/* Structure/Enum declarations */ -/*****************************************************************************/ - -/* Internet address */ -typedef struct SlInAddr_t -{ -#ifndef s_addr - _u32 s_addr; /* Internet address 32 bits */ -#else - union S_un { - struct { _u8 s_b1,s_b2,s_b3,s_b4; } S_un_b; - struct { _u8 s_w1,s_w2; } S_un_w; - _u32 S_addr; - } S_un; -#endif -}SlInAddr_t; - - -/* sockopt */ -typedef struct -{ - _u32 KeepaliveEnabled; /* 0 = disabled;1 = enabled; default = 1*/ -}SlSockKeepalive_t; - -typedef struct -{ - _u32 ReuseaddrEnabled; /* 0 = disabled; 1 = enabled; default = 1*/ -}SlSockReuseaddr_t; - -typedef struct -{ - _u32 Winsize; /* receive window size for tcp sockets */ -}SlSockWinsize_t; - -typedef struct -{ - _u32 NonblockingEnabled;/* 0 = disabled;1 = enabled;default = 1*/ -}SlSockNonblocking_t; - -typedef struct -{ - _u8 sd; - _u8 type; - _u16 val; -} SlSocketAsyncEvent_t; - -typedef struct -{ - _i16 status; - _u16 sd; - SlSocketAsyncEvent_t socketAsyncEvent; -} SlSockEventData_t; - - -typedef struct -{ - _u32 Event; - SlSockEventData_t EventData; -} SlSockEvent_t; - - -typedef struct -{ - _u32 secureMask; -} SlSockSecureMask; - -typedef struct -{ - _u8 secureMethod; -} SlSockSecureMethod; - -typedef enum -{ - SL_BSD_SECURED_PRIVATE_KEY_IDX = 0, - SL_BSD_SECURED_CERTIFICATE_IDX, - SL_BSD_SECURED_CA_IDX, - SL_BSD_SECURED_DH_IDX -}slBsd_secureSocketFilesIndex_e; - -typedef struct -{ - SlInAddr_t imr_multiaddr; /* The IPv4 multicast address to join */ - SlInAddr_t imr_interface; /* The interface to use for this group */ -} SlSockIpMreq; - - -/* sockopt */ -typedef _u32 SlTime_t; -typedef _u32 SlSuseconds_t; - -typedef struct SlTimeval_t -{ - SlTime_t tv_sec; /* Seconds */ - SlSuseconds_t tv_usec; /* Microseconds */ -}SlTimeval_t; - -typedef _u16 SlSocklen_t; - -/* IpV4 socket address */ -typedef struct SlSockAddr_t -{ - _u16 sa_family; /* Address family (e.g. , AF_INET) */ - _u8 sa_data[14]; /* Protocol- specific address information*/ -}SlSockAddr_t; - - -/* IpV6 or Ipv6 EUI64 */ -typedef struct SlIn6Addr_t -{ - union - { - _u8 _S6_u8[16]; - _u32 _S6_u32[4]; - } _S6_un; -}SlIn6Addr_t; - -typedef struct SlSockAddrIn6_t -{ - _u16 sin6_family; /* AF_INET6 || AF_INET6_EUI_48*/ - _u16 sin6_port; /* Transport layer port. */ - _u32 sin6_flowinfo; /* IPv6 flow information. */ - SlIn6Addr_t sin6_addr; /* IPv6 address. */ - _u32 sin6_scope_id; /* set of interfaces for a scope. */ -}SlSockAddrIn6_t; - -/* Socket address, Internet style. */ - -typedef struct SlSockAddrIn_t -{ - _u16 sin_family; /* Internet Protocol (AF_INET). */ - _u16 sin_port; /* Address port (16 bits). */ - SlInAddr_t sin_addr; /* Internet address (32 bits). */ - _i8 sin_zero[8]; /* Not used. */ -}SlSockAddrIn_t; - -typedef struct -{ - _u32 ip; - _u32 gateway; - _u32 dns; -}SlIpV4AcquiredAsync_t; - -typedef struct -{ - _u32 type; - _u32 ip[4]; - _u32 gateway[4]; - _u32 dns[4]; -}SlIpV6AcquiredAsync_t; - -typedef struct -{ - _u32 ip_address; - _u32 lease_time; - _u8 mac[6]; - _u16 padding; -}SlIpLeasedAsync_t; - -typedef struct -{ - _u32 ip_address; - _u8 mac[6]; - _u16 reason; -}SlIpReleasedAsync_t; - - -typedef union -{ - SlIpV4AcquiredAsync_t ipAcquiredV4; /*SL_NETAPP_IPV4_IPACQUIRED_EVENT*/ - SlIpV6AcquiredAsync_t ipAcquiredV6; /*SL_NETAPP_IPV6_IPACQUIRED_EVENT*/ - _u32 sd; /*SL_SOCKET_TX_FAILED_EVENT*/ - SlIpLeasedAsync_t ipLeased; /* SL_NETAPP_IP_LEASED_EVENT */ - SlIpReleasedAsync_t ipReleased; /* SL_NETAPP_IP_RELEASED_EVENT */ -} SlNetAppEventData_u; - -typedef struct -{ - _u32 Event; - SlNetAppEventData_u EventData; -}SlNetAppEvent_t; - - -typedef struct sock_secureFiles -{ - _u8 secureFiles[4]; -}SlSockSecureFiles_t; - - -typedef struct SlFdSet_t /* The select socket array manager */ -{ - _u32 fd_array[(SL_FD_SETSIZE + 31)/32]; /* Bit map of SOCKET Descriptors */ -} SlFdSet_t; - -typedef struct -{ - _u8 rate; /* Recevied Rate */ - _u8 channel; /* The received channel*/ - _i8 rssi; /* The computed RSSI value in db of current frame */ - _u8 padding; /* pad to align to 32 bits */ - _u32 timestamp; /* Timestamp in microseconds, */ -}SlTransceiverRxOverHead_t; - - - -/*****************************************************************************/ -/* Function prototypes */ -/*****************************************************************************/ - -/*! - - \brief create an endpoint for communication - - The socket function creates a new socket of a certain socket type, identified - by an integer number, and allocates system resources to it. - This function is called by the application layer to obtain a socket handle. - - \param[in] domain specifies the protocol family of the created socket. - For example: - AF_INET for network protocol IPv4 - AF_RF for starting transceiver mode. Notes: - - sending and receiving any packet overriding 802.11 header - - for optimized power consumption the socket will be started in TX - only mode until receive command is activated - AF_INET6 for IPv6 - - - \param[in] type specifies the communication semantic, one of: - SOCK_STREAM (reliable stream-oriented service or Stream Sockets) - SOCK_DGRAM (datagram service or Datagram Sockets) - SOCK_RAW (raw protocols atop the network layer) - when used with AF_RF: - SOCK_DGRAM - L2 socket - SOCK_RAW - L1 socket - bypass WLAN CCA (Clear Channel Assessment) - - \param[in] protocol specifies a particular transport to be used with - the socket. - The most common are IPPROTO_TCP, IPPROTO_SCTP, IPPROTO_UDP, - IPPROTO_DCCP. - The value 0 may be used to select a default - protocol from the selected domain and type - - - \return On success, socket handle that is used for consequent socket operations. - A successful return code should be a positive number (int16) - On error, a negative (int16) value will be returned specifying the error code. - SL_EAFNOSUPPORT - illegal domain parameter - SL_EPROTOTYPE - illegal type parameter - SL_EACCES - permission denied - SL_ENSOCK - exceeded maximal number of socket - SL_ENOMEM - memory allocation error - SL_EINVAL - error in socket configuration - SL_EPROTONOSUPPORT - illegal protocol parameter - SL_EOPNOTSUPP - illegal combination of protocol and type parameters - - - \sa sl_Close - \note belongs to \ref basic_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Socket) -_i16 sl_Socket(_i16 Domain, _i16 Type, _i16 Protocol); -#endif - -/*! - \brief gracefully close socket - - This function causes the system to release resources allocated to a socket. \n - In case of TCP, the connection is terminated. - - \param[in] sd socket handle (received in sl_Socket) - - \return On success, zero is returned. - On error, a negative number is returned. - - \sa sl_Socket - \note belongs to \ref ext_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Close) -_i16 sl_Close(_i16 sd); -#endif - -/*! - \brief Accept a connection on a socket - - This function is used with connection-based socket types (SOCK_STREAM). - It extracts the first connection request on the queue of pending - connections, creates a new connected socket, and returns a new file - descriptor referring to that socket. - The newly created socket is not in the listening state. The - original socket sd is unaffected by this call. - The argument sd is a socket that has been created with - sl_Socket(), bound to a local address with sl_Bind(), and is - listening for connections after a sl_Listen(). The argument \b - \e addr is a pointer to a sockaddr structure. This structure - is filled in with the address of the peer socket, as known to - the communications layer. The exact format of the address - returned addr is determined by the socket's address family. - The \b \e addrlen argument is a value-result argument: it - should initially contain the size of the structure pointed to - by addr, on return it will contain the actual length (in - bytes) of the address returned. - - \param[in] sd socket descriptor (handle) - \param[out] addr the argument addr is a pointer - to a sockaddr structure. This - structure is filled in with the - address of the peer socket, as - known to the communications - layer. The exact format of the - address returned addr is - determined by the socket's - address\n - sockaddr:\n - code for the - address format. On this version - only AF_INET is supported.\n - - socket address, the length - depends on the code format - \param[out] addrlen the addrlen argument is a value-result - argument: it should initially contain the - size of the structure pointed to by addr - - \return On success, a socket handle. - On a non-blocking accept a possible negative value is SL_EAGAIN. - On failure, negative value. - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - - \sa sl_Socket sl_Bind sl_Listen - \note belongs to \ref server_side - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Accept) -_i16 sl_Accept(_i16 sd, SlSockAddr_t *addr, SlSocklen_t *addrlen); -#endif - -/*! - \brief assign a name to a socket - - This function gives the socket the local address addr. - addr is addrlen bytes long. Traditionally, this is called - When a socket is created with socket, it exists in a name - space (address family) but has no name assigned. - It is necessary to assign a local address before a SOCK_STREAM - socket may receive connections. - - \param[in] sd socket descriptor (handle) - \param[in] addr specifies the destination - addrs\n sockaddr:\n - code for - the address format. On this - version only AF_INET is - supported.\n - socket address, - the length depends on the code - format - \param[in] addrlen contains the size of the structure pointed to by addr - - \return On success, zero is returned. On error, a negative error code is returned. - - \sa sl_Socket sl_Accept sl_Listen - \note belongs to \ref basic_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Bind) -_i16 sl_Bind(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen); -#endif - -/*! - \brief listen for connections on a socket - - The willingness to accept incoming connections and a queue - limit for incoming connections are specified with listen(), - and then the connections are accepted with accept. - The listen() call applies only to sockets of type SOCK_STREAM - The backlog parameter defines the maximum length the queue of - pending connections may grow to. - - \param[in] sd socket descriptor (handle) - \param[in] backlog specifies the listen queue depth. - - - \return On success, zero is returned. On error, a negative error code is returned. - - \sa sl_Socket sl_Accept sl_Bind - \note belongs to \ref server_side - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Listen) -_i16 sl_Listen(_i16 sd, _i16 backlog); -#endif - -/*! - \brief Initiate a connection on a socket - - Function connects the socket referred to by the socket - descriptor sd, to the address specified by addr. The addrlen - argument specifies the size of addr. The format of the - address in addr is determined by the address space of the - socket. If it is of type SOCK_DGRAM, this call specifies the - peer with which the socket is to be associated; this address - is that to which datagrams are to be sent, and the only - address from which datagrams are to be received. If the - socket is of type SOCK_STREAM, this call attempts to make a - connection to another socket. The other socket is specified - by address, which is an address in the communications space - of the socket. - - - \param[in] sd socket descriptor (handle) - \param[in] addr specifies the destination addr\n - sockaddr:\n - code for the - address format. On this version - only AF_INET is supported.\n - - socket address, the length - depends on the code format - - \param[in] addrlen contains the size of the structure pointed - to by addr - - \return On success, a socket handle. - On a non-blocking connect a possible negative value is SL_EALREADY. - On failure, negative value. - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - - \sa sl_Socket - \note belongs to \ref client_side - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Connect) -_i16 sl_Connect(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen); -#endif - -/*! - \brief Monitor socket activity - - Select allow a program to monitor multiple file descriptors, - waiting until one or more of the file descriptors become - "ready" for some class of I/O operation - - - \param[in] nfds the highest-numbered file descriptor in any of the - three sets, plus 1. - \param[out] readsds socket descriptors list for read monitoring and accept monitoring - \param[out] writesds socket descriptors list for connect monitoring only, write monitoring is not supported - \param[out] exceptsds socket descriptors list for exception monitoring, not supported. - \param[in] timeout is an upper bound on the amount of time elapsed - before select() returns. Null or above 0xffff seconds means - infinity timeout. The minimum timeout is 10 milliseconds, - less than 10 milliseconds will be set automatically to 10 milliseconds. - Max microseconds supported is 0xfffc00. - - \return On success, select() returns the number of - file descriptors contained in the three returned - descriptor sets (that is, the total number of bits that - are set in readfds, writefds, exceptfds) which may be - zero if the timeout expires before anything interesting - happens. On error, a negative value is returned. - readsds - return the sockets on which Read request will - return without delay with valid data. - writesds - return the sockets on which Write request - will return without delay. - exceptsds - return the sockets closed recently. - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - - \sa sl_Socket - \note If the timeout value set to less than 5ms it will automatically set - to 5ms to prevent overload of the system - belongs to \ref basic_api - - Only one sl_Select can be handled at a time. - Calling this API while the same command is called from another thread, may result - in one of the two scenarios: - 1. The command will wait (internal) until the previous command finish, and then be executed. - 2. There are not enough resources and SL_POOL_IS_EMPTY error will return. - In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try - again later to issue the command. - - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Select) -_i16 sl_Select(_i16 nfds, SlFdSet_t *readsds, SlFdSet_t *writesds, SlFdSet_t *exceptsds, struct SlTimeval_t *timeout); - - -/*! - \brief Select's SlFdSet_t SET function - - Sets current socket descriptor on SlFdSet_t container -*/ -void SL_FD_SET(_i16 fd, SlFdSet_t *fdset); - -/*! - \brief Select's SlFdSet_t CLR function - - Clears current socket descriptor on SlFdSet_t container -*/ -void SL_FD_CLR(_i16 fd, SlFdSet_t *fdset); - - -/*! - \brief Select's SlFdSet_t ISSET function - - Checks if current socket descriptor is set (TRUE/FALSE) - - \return Returns TRUE if set, FALSE if unset - -*/ -_i16 SL_FD_ISSET(_i16 fd, SlFdSet_t *fdset); - -/*! - \brief Select's SlFdSet_t ZERO function - - Clears all socket descriptors from SlFdSet_t -*/ -void SL_FD_ZERO(SlFdSet_t *fdset); - - - -#endif - -/*! - \brief set socket options - - This function manipulate the options associated with a socket. - Options may exist at multiple protocol levels; they are always - present at the uppermost socket level. - - When manipulating socket options the level at which the option resides - and the name of the option must be specified. To manipulate options at - the socket level, level is specified as SOL_SOCKET. To manipulate - options at any other level the protocol number of the appropriate proto- - col controlling the option is supplied. For example, to indicate that an - option is to be interpreted by the TCP protocol, level should be set to - the protocol number of TCP; - - The parameters optval and optlen are used to access optval - - ues for setsockopt(). For getsockopt() they identify a - buffer in which the value for the requested option(s) are to - be returned. For getsockopt(), optlen is a value-result - parameter, initially containing the size of the buffer - pointed to by option_value, and modified on return to - indicate the actual size of the value returned. If no option - value is to be supplied or returned, option_value may be - NULL. - - \param[in] sd socket handle - \param[in] level defines the protocol level for this option - - <b>SL_SOL_SOCKET</b> Socket level configurations (L4, transport layer) - - <b>SL_IPPROTO_IP</b> IP level configurations (L3, network layer) - - <b>SL_SOL_PHY_OPT</b> Link level configurations (L2, link layer) - \param[in] optname defines the option name to interrogate - - <b>SL_SOL_SOCKET</b> - - <b>SL_SO_KEEPALIVE</b> \n - Enable/Disable periodic keep alive. - Keeps TCP connections active by enabling the periodic transmission of messages \n - Timeout is 5 minutes.\n - Default: Enabled \n - This options takes SlSockKeepalive_t struct as parameter - - <b>SL_SO_RCVTIMEO</b> \n - Sets the timeout value that specifies the maximum amount of time an input function waits until it completes. \n - Default: No timeout \n - This options takes SlTimeval_t struct as parameter - - <b>SL_SO_RCVBUF</b> \n - Sets tcp max recv window size. \n - This options takes SlSockWinsize_t struct as parameter - - <b>SL_SO_NONBLOCKING</b> \n - Sets socket to non-blocking operation Impacts: connect, accept, send, sendto, recv and recvfrom. \n - Default: Blocking. - This options takes SlSockNonblocking_t struct as parameter - - <b>SL_SO_SECMETHOD</b> \n - Sets method to tcp secured socket (SL_SEC_SOCKET) \n - Default: SL_SO_SEC_METHOD_SSLv3_TLSV1_2 \n - This options takes SlSockSecureMethod struct as parameter - - <b>SL_SO_SEC_MASK</b> \n - Sets specific cipher to tcp secured socket (SL_SEC_SOCKET) \n - Default: "Best" cipher suitable to method \n - This options takes SlSockSecureMask struct as parameter - - <b>SL_SO_SECURE_FILES_CA_FILE_NAME</b> \n - Map secured socket to CA file by name \n - This options takes <b>_u8</b> buffer as parameter - - <b>SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME</b> \n - Map secured socket to private key by name \n - This options takes <b>_u8</b> buffer as parameter - - <b>SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME</b> \n - Map secured socket to certificate file by name \n - This options takes <b>_u8</b> buffer as parameter - - <b>SL_SO_SECURE_FILES_DH_KEY_FILE_NAME</b> \n - Map secured socket to Diffie Hellman file by name \n - This options takes <b>_u8</b> buffer as parameter - - <b>SL_SO_CHANGE_CHANNEL</b> \n - Sets channel in transceiver mode. - This options takes <b>_u32</b> as channel number parameter - - <b>SL_IPPROTO_IP</b> - - <b>SL_IP_MULTICAST_TTL</b> \n - Set the time-to-live value of outgoing multicast packets for this socket. \n - This options takes <b>_u8</b> as parameter - - <b>SL_IP_ADD_MEMBERSHIP</b> \n - UDP socket, Join a multicast group. \n - This options takes SlSockIpMreq struct as parameter - - <b>SL_IP_DROP_MEMBERSHIP</b> \n - UDP socket, Leave a multicast group \n - This options takes SlSockIpMreq struct as parameter - - <b>SL_IP_RAW_RX_NO_HEADER</b> \n - Raw socket remove IP header from received data. \n - Default: data includes ip header \n - This options takes <b>_u32</b> as parameter - - <b>SL_IP_HDRINCL</b> \n - RAW socket only, the IPv4 layer generates an IP header when sending a packet unless \n - the IP_HDRINCL socket option is enabled on the socket. \n - When it is enabled, the packet must contain an IP header. \n - Default: disabled, IPv4 header generated by Network Stack \n - This options takes <b>_u32</b> as parameter - - <b>SL_IP_RAW_IPV6_HDRINCL</b> (inactive) \n - RAW socket only, the IPv6 layer generates an IP header when sending a packet unless \n - the IP_HDRINCL socket option is enabled on the socket. When it is enabled, the packet must contain an IP header \n - Default: disabled, IPv4 header generated by Network Stack \n - This options takes <b>_u32</b> as parameter - - <b>SL_SOL_PHY_OPT</b> - - <b>SL_SO_PHY_RATE</b> \n - RAW socket, set WLAN PHY transmit rate \n - The values are based on RateIndex_e \n - This options takes <b>_u32</b> as parameter - - <b>SL_SO_PHY_TX_POWER</b> \n - RAW socket, set WLAN PHY TX power \n - Valid rage is 1-15 \n - This options takes <b>_u32</b> as parameter - - <b>SL_SO_PHY_NUM_FRAMES_TO_TX</b> \n - RAW socket, set number of frames to transmit in transceiver mode. - Default: 1 packet - This options takes <b>_u32</b> as parameter - - <b>SL_SO_PHY_PREAMBLE</b> \n - RAW socket, set WLAN PHY preamble for Long/Short\n - This options takes <b>_u32</b> as parameter - - \param[in] optval specifies a value for the option - \param[in] optlen specifies the length of the - option value - - \return On success, zero is returned. - On error, a negative value is returned. - \sa sl_getsockopt - \note belongs to \ref basic_api - \warning - \par Examples: - \par - <b> SL_SO_KEEPALIVE: </b>(disable Keepalive) - \code - SlSockKeepalive_t enableOption; - enableOption.KeepaliveEnabled = 0; - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_KEEPALIVE, (_u8 *)&enableOption,sizeof(enableOption)); - \endcode - \par - <b> SL_SO_RCVTIMEO: </b> - \code - struct SlTimeval_t timeVal; - timeVal.tv_sec = 1; // Seconds - timeVal.tv_usec = 0; // Microseconds. 10000 microseconds resolution - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_RCVTIMEO, (_u8 *)&timeVal, sizeof(timeVal)); // Enable receive timeout - \endcode - \par - <b> SL_SO_RCVBUF: </b> - \code - SlSockWinsize_t size; - size.Winsize = 3000; // bytes - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_RCVBUF, (_u8 *)&size, sizeof(size)); - \endcode - \par - <b> SL_SO_NONBLOCKING: </b> - \code - SlSockNonblocking_t enableOption; - enableOption.NonblockingEnabled = 1; - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_NONBLOCKING, (_u8 *)&enableOption,sizeof(enableOption)); // Enable/disable nonblocking mode - \endcode - \par - <b> SL_SO_SECMETHOD:</b> - \code - SlSockSecureMethod method; - method.secureMethod = SL_SO_SEC_METHOD_SSLV3; // security method we want to use - SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, SL_SEC_SOCKET); - sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_SECMETHOD, (_u8 *)&method, sizeof(method)); - \endcode - \par - <b> SL_SO_SECURE_MASK:</b> - \code - SlSockSecureMask cipher; - cipher.secureMask = SL_SEC_MASK_SSL_RSA_WITH_RC4_128_SHA; // cipher type - SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, SL_SEC_SOCKET); - sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_SEC_MASK,(_u8 *)&cipher, sizeof(cipher)); - \endcode - \par - <b> SL_SO_SECURE_FILES_CA_FILE_NAME:</b> - \code - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_CA_FILE_NAME,"exuifaxCaCert.der",strlen("exuifaxCaCert.der")); - \endcode - - \par - <b> SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME:</b> - \code - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME,"myPrivateKey.der",strlen("myPrivateKey.der")); - \endcode - - \par - <b> SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME:</b> - \code - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME,"myCertificate.der",strlen("myCertificate.der")); - \endcode - - \par - <b> SL_SO_SECURE_FILES_DH_KEY_FILE_NAME:</b> - \code - sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_SECURE_FILES_DH_KEY_FILE_NAME,"myDHinServerMode.der",strlen("myDHinServerMode.der")); - \endcode - - \par - <b> SL_IP_MULTICAST_TTL:</b> - \code - _u8 ttl = 20; - sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_MULTICAST_TTL, &ttl, sizeof(ttl)); - \endcode - - \par - <b> SL_IP_ADD_MEMBERSHIP:</b> - \code - SlSockIpMreq mreq; - sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)); - \endcode - - \par - <b> SL_IP_DROP_MEMBERSHIP:</b> - \code - SlSockIpMreq mreq; - sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq)); - \endcode - - \par - <b> SL_SO_CHANGE_CHANNEL:</b> - \code - _u32 newChannel = 6; // range is 1-13 - sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_CHANGE_CHANNEL, &newChannel, sizeof(newChannel)); - \endcode - - \par - <b> SL_IP_RAW_RX_NO_HEADER:</b> - \code - _u32 header = 1; // remove ip header - sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_RAW_RX_NO_HEADER, &header, sizeof(header)); - \endcode - - \par - <b> SL_IP_HDRINCL:</b> - \code - _u32 header = 1; - sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_HDRINCL, &header, sizeof(header)); - \endcode - \par - <b> SL_IP_RAW_IPV6_HDRINCL:</b> - \code - _u32 header = 1; - sl_SetSockOpt(SockID, SL_IPPROTO_IP, SL_IP_RAW_IPV6_HDRINCL, &header, sizeof(header)); - \endcode - - \par - <b> SL_SO_PHY_RATE:</b> - \code - _u32 rate = 6; // see wlan.h RateIndex_e for values - sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_RATE, &rate, sizeof(rate)); - \endcode - - \par - <b> SL_SO_PHY_TX_POWER:</b> - \code - _u32 txpower = 1; // valid range is 1-15 - sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_TX_POWER, &txpower, sizeof(txpower)); - \endcode - - \par - <b> SL_SO_PHY_NUM_FRAMES_TO_TX:</b> - \code - _u32 numframes = 1; - sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_NUM_FRAMES_TO_TX, &numframes, sizeof(numframes)); - \endcode - - \par - <b> SL_SO_PHY_PREAMBLE:</b> - \code - _u32 preamble = 1; - sl_SetSockOpt(SockID, SL_SOL_PHY_OPT, SL_SO_PHY_PREAMBLE, &preamble, sizeof(preamble)); - \endcode - -*/ -#if _SL_INCLUDE_FUNC(sl_SetSockOpt) -_i16 sl_SetSockOpt(_i16 sd, _i16 level, _i16 optname, const void *optval, SlSocklen_t optlen); -#endif - -/*! - \brief Get socket options - - This function manipulate the options associated with a socket. - Options may exist at multiple protocol levels; they are always - present at the uppermost socket level. - - When manipulating socket options the level at which the option resides - and the name of the option must be specified. To manipulate options at - the socket level, level is specified as SOL_SOCKET. To manipulate - options at any other level the protocol number of the appropriate proto- - col controlling the option is supplied. For example, to indicate that an - option is to be interpreted by the TCP protocol, level should be set to - the protocol number of TCP; - - The parameters optval and optlen are used to access optval - - ues for setsockopt(). For getsockopt() they identify a - buffer in which the value for the requested option(s) are to - be returned. For getsockopt(), optlen is a value-result - parameter, initially containing the size of the buffer - pointed to by option_value, and modified on return to - indicate the actual size of the value returned. If no option - value is to be supplied or returned, option_value may be - NULL. - - - \param[in] sd socket handle - \param[in] level defines the protocol level for this option - \param[in] optname defines the option name to interrogate - \param[out] optval specifies a value for the option - \param[out] optlen specifies the length of the - option value - - \return On success, zero is returned. - On error, a negative value is returned. - \sa sl_SetSockOpt - \note See sl_SetSockOpt - belongs to \ref ext_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_GetSockOpt) -_i16 sl_GetSockOpt(_i16 sd, _i16 level, _i16 optname, void *optval, SlSocklen_t *optlen); -#endif - -/*! - \brief read data from TCP socket - - function receives a message from a connection-mode socket - - \param[in] sd socket handle - \param[out] buf Points to the buffer where the - message should be stored. - \param[in] Len Specifies the length in bytes of - the buffer pointed to by the buffer argument. - Range: 1-16000 bytes - \param[in] flags Specifies the type of message - reception. On this version, this parameter is not - supported. - - \return return the number of bytes received, - or a negative value if an error occurred. - using a non-blocking recv a possible negative value is SL_EAGAIN. - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - - \sa sl_RecvFrom - \note belongs to \ref recv_api - \warning - \par Examples: - \code An example of receiving data using TCP socket: - - SlSockAddrIn_t Addr; - SlSockAddrIn_t LocalAddr; - _i16 AddrSize = sizeof(SlSockAddrIn_t); - _i16 SockID, newSockID; - _i16 Status; - _i8 Buf[RECV_BUF_LEN]; - - LocalAddr.sin_family = SL_AF_INET; - LocalAddr.sin_port = sl_Htons(5001); - LocalAddr.sin_addr.s_addr = 0; - - Addr.sin_family = SL_AF_INET; - Addr.sin_port = sl_Htons(5001); - Addr.sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(10,1,1,200)); - - SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0); - Status = sl_Bind(SockID, (SlSockAddr_t *)&LocalAddr, AddrSize); - Status = sl_Listen(SockID, 0); - newSockID = sl_Accept(SockID, (SlSockAddr_t*)&Addr, (SlSocklen_t*) &AddrSize); - Status = sl_Recv(newSockID, Buf, 1460, 0); - \endcode - \code Example code for Rx transceiver mode using a raw socket - _i8 buffer[1536]; - _i16 sd; - _u16 size; - SlTransceiverRxOverHead_t *transHeader; - sd = sl_Socket(SL_AF_RF,SL_SOCK_RAW,11); // channel 11 - while(1) - { - size = sl_Recv(sd,buffer,1536,0); - transHeader = (SlTransceiverRxOverHead_t *)buffer; - printf("RSSI is %d frame type is 0x%x size %d\n",transHeader->rssi,buffer[sizeof(SlTransceiverRxOverHead_t)],size); - } - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_Recv) -_i16 sl_Recv(_i16 sd, void *buf, _i16 Len, _i16 flags); -#endif - -/*! - \brief read data from socket - - function receives a message from a connection-mode or - connectionless-mode socket - - \param[in] sd socket handle - \param[out] buf Points to the buffer where the message should be stored. - \param[in] Len Specifies the length in bytes of the buffer pointed to by the buffer argument. - Range: 1-16000 bytes - \param[in] flags Specifies the type of message - reception. On this version, this parameter is not - supported. - \param[in] from pointer to an address structure - indicating the source - address.\n sockaddr:\n - code - for the address format. On this - version only AF_INET is - supported.\n - socket address, - the length depends on the code - format - \param[in] fromlen source address structure - size. This parameter MUST be set to the size of the structure pointed to by addr. - - - \return return the number of bytes received, - or a negative value if an error occurred. - using a non-blocking recv a possible negative value is SL_EAGAIN. - SL_RET_CODE_INVALID_INPUT (-2) will be returned if fromlen has incorrect length. - SL_POOL_IS_EMPTY may be return in case there are no resources in the system - In this case try again later or increase MAX_CONCURRENT_ACTIONS - - \sa sl_Recv - \note belongs to \ref recv_api - \warning - \par Example: - \code An example of receiving data: - - SlSockAddrIn_t Addr; - SlSockAddrIn_t LocalAddr; - _i16 AddrSize = sizeof(SlSockAddrIn_t); - _i16 SockID; - _i16 Status; - _i8 Buf[RECV_BUF_LEN]; - - LocalAddr.sin_family = SL_AF_INET; - LocalAddr.sin_port = sl_Htons(5001); - LocalAddr.sin_addr.s_addr = 0; - - SockID = sl_Socket(SL_AF_INET,SL_SOCK_DGRAM, 0); - Status = sl_Bind(SockID, (SlSockAddr_t *)&LocalAddr, AddrSize); - Status = sl_RecvFrom(SockID, Buf, 1472, 0, (SlSockAddr_t *)&Addr, (SlSocklen_t*)&AddrSize); - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_RecvFrom) -_i16 sl_RecvFrom(_i16 sd, void *buf, _i16 Len, _i16 flags, SlSockAddr_t *from, SlSocklen_t *fromlen); -#endif - -/*! - \brief write data to TCP socket - - This function is used to transmit a message to another socket. - Returns immediately after sending data to device. - In case of TCP failure an async event SL_SOCKET_TX_FAILED_EVENT is going to - be received. - In case of a RAW socket (transceiver mode), extra 4 bytes should be reserved at the end of the - frame data buffer for WLAN FCS - - \param[in] sd socket handle - \param[in] buf Points to a buffer containing - the message to be sent - \param[in] Len message size in bytes. Range: 1-1460 bytes - \param[in] flags Specifies the type of message - transmission. On this version, this parameter is not - supported for TCP. - For transceiver mode, the SL_RAW_RF_TX_PARAMS macro can be used to determine - transmission parameters (channel,rate,tx_power,preamble) - - - \return Return the number of bytes transmitted, - or -1 if an error occurred - - \sa sl_SendTo - \note belongs to \ref send_api - \warning - \par Example: - \code An example of sending data: - - SlSockAddrIn_t Addr; - _i16 AddrSize = sizeof(SlSockAddrIn_t); - _i16 SockID; - _i16 Status; - _i8 Buf[SEND_BUF_LEN]; - - Addr.sin_family = SL_AF_INET; - Addr.sin_port = sl_Htons(5001); - Addr.sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(10,1,1,200)); - - SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0); - Status = sl_Connect(SockID, (SlSockAddr_t *)&Addr, AddrSize); - Status = sl_Send(SockID, Buf, 1460, 0 ); - - \endcode - */ -#if _SL_INCLUDE_FUNC(sl_Send ) -_i16 sl_Send(_i16 sd, const void *buf, _i16 Len, _i16 flags); -#endif - -/*! - \brief write data to socket - - This function is used to transmit a message to another socket - (connection less socket SOCK_DGRAM, SOCK_RAW). - Returns immediately after sending data to device. - In case of transmission failure an async event SL_SOCKET_TX_FAILED_EVENT is going to - be received. - - \param[in] sd socket handle - \param[in] buf Points to a buffer containing - the message to be sent - \param[in] Len message size in bytes. Range: 1-1460 bytes - \param[in] flags Specifies the type of message - transmission. On this version, this parameter is not - supported - \param[in] to pointer to an address structure - indicating the destination - address.\n sockaddr:\n - code - for the address format. On this - version only AF_INET is - supported.\n - socket address, - the length depends on the code - format - \param[in] tolen destination address structure size - - \return Return the number of transmitted bytes, - or -1 if an error occurred - - \sa sl_Send - \note belongs to \ref send_api - \warning - \par Example: - \code An example of sending data: - - SlSockAddrIn_t Addr; - _i16 AddrSize = sizeof(SlSockAddrIn_t); - _i16 SockID; - _i16 Status; - _i8 Buf[SEND_BUF_LEN]; - - Addr.sin_family = SL_AF_INET; - Addr.sin_port = sl_Htons(5001); - Addr.sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(10,1,1,200)); - - SockID = sl_Socket(SL_AF_INET,SL_SOCK_DGRAM, 0); - Status = sl_SendTo(SockID, Buf, 1472, 0, (SlSockAddr_t *)&Addr, AddrSize); - - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_SendTo) -_i16 sl_SendTo(_i16 sd, const void *buf, _i16 Len, _i16 flags, const SlSockAddr_t *to, SlSocklen_t tolen); -#endif - -/*! - \brief Reorder the bytes of a 32-bit unsigned value - - This function is used to Reorder the bytes of a 32-bit unsigned value from processor order to network order. - - \param[in] var variable to reorder - - \return Return the reorder variable, - - \sa sl_SendTo sl_Bind sl_Connect sl_RecvFrom sl_Accept - \note belongs to \ref send_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Htonl ) -_u32 sl_Htonl( _u32 val ); - -#define sl_Ntohl sl_Htonl /* Reorder the bytes of a 16-bit unsigned value from network order to processor orde. */ -#endif - -/*! - \brief Reorder the bytes of a 16-bit unsigned value - - This function is used to Reorder the bytes of a 16-bit unsigned value from processor order to network order. - - \param[in] var variable to reorder - - \return Return the reorder variable, - - \sa sl_SendTo sl_Bind sl_Connect sl_RecvFrom sl_Accept - \note belongs to \ref send_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_Htons ) -_u16 sl_Htons( _u16 val ); - -#define sl_Ntohs sl_Htons /* Reorder the bytes of a 16-bit unsigned value from network order to processor orde. */ -#endif - -/*! - - Close the Doxygen group. - @} - - */ - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __SOCKET_H__ */ - - diff --git a/cc3200/simplelink/include/trace.h b/cc3200/simplelink/include/trace.h deleted file mode 100644 index 9e5ac519c..000000000 --- a/cc3200/simplelink/include/trace.h +++ /dev/null @@ -1,202 +0,0 @@ -/* - * trace.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - - - -#include "simplelink.h" -#include "debug.h" - -#ifndef __SIMPLELINK_TRACE_H__ -#define __SIMPLELINK_TRACE_H__ - - -#ifdef __cplusplus -extern "C" { -#endif - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - -#define SL_SYNC_SCAN_THRESHOLD (( _u32 )2000) - -#define _SL_ASSERT(expr) { ASSERT(expr); } -#define _SL_ERROR(expr, error) { if(!(expr)){return (error); } } - -#define SL_HANDLING_ASSERT 2 -#define SL_HANDLING_ERROR 1 -#define SL_HANDLING_NONE 0 - -#if defined(DEBUG) && !defined(BOOTLOADER) -#define SL_SELF_COND_HANDLING SL_HANDLING_ASSERT -#define SL_PROTOCOL_HANDLING SL_HANDLING_ASSERT -#define SL_DRV_RET_CODE_HANDLING SL_HANDLING_ASSERT -#define SL_NWP_IF_HANDLING SL_HANDLING_ASSERT -#define SL_OSI_RET_OK_HANDLING SL_HANDLING_ASSERT -#define SL_MALLOC_OK_HANDLING SL_HANDLING_ASSERT -#define SL_USER_ARGS_HANDLING SL_HANDLING_ASSERT -#else -#define SL_SELF_COND_HANDLING SL_HANDLING_NONE -#define SL_PROTOCOL_HANDLING SL_HANDLING_NONE -#define SL_DRV_RET_CODE_HANDLING SL_HANDLING_NONE -#define SL_NWP_IF_HANDLING SL_HANDLING_NONE -#define SL_OSI_RET_OK_HANDLING SL_HANDLING_NONE -#define SL_MALLOC_OK_HANDLING SL_HANDLING_NONE -#define SL_USER_ARGS_HANDLING SL_HANDLING_NONE -#endif - -#if (SL_DRV_RET_CODE_HANDLING == SL_HANDLING_ASSERT) -#define VERIFY_RET_OK(Func) {_SlReturnVal_t _RetVal = (Func); _SL_ASSERT((_SlReturnVal_t)SL_OS_RET_CODE_OK == _RetVal)} -#elif (SL_DRV_RET_CODE_HANDLING == SL_HANDLING_ERROR) -#define VERIFY_RET_OK(Func) {_SlReturnVal_t _RetVal = (Func); if (SL_OS_RET_CODE_OK != _RetVal) return _RetVal;} -#else -#define VERIFY_RET_OK(Func) (Func); -#endif - -#if (SL_PROTOCOL_HANDLING == SL_HANDLING_ASSERT) -#define VERIFY_PROTOCOL(expr) _SL_ASSERT(expr) -#elif (SL_PROTOCOL_HANDLING == SL_HANDLING_ERROR) -#define VERIFY_PROTOCOL(expr) _SL_ERROR(expr, SL_RET_CODE_PROTOCOL_ERROR) -#else -#define VERIFY_PROTOCOL(expr) -#endif - -#if (defined(PROTECT_SOCKET_ASYNC_RESP) && (SL_SELF_COND_HANDLING == SL_HANDLING_ASSERT)) -#define VERIFY_SOCKET_CB(expr) _SL_ASSERT(expr) -#elif (defined(PROTECT_SOCKET_ASYNC_RESP) && (SL_SELF_COND_HANDLING == SL_HANDLING_ERROR)) -#define VERIFY_SOCKET_CB(expr) _SL_ERROR(expr, SL_RET_CODE_SELF_ERROR) -#else -#define VERIFY_SOCKET_CB(expr) -#endif - -#if (SL_NWP_IF_HANDLING == SL_HANDLING_ASSERT) -#define NWP_IF_WRITE_CHECK(fd,pBuff,len) { _i16 RetSize, ExpSize = (len); RetSize = sl_IfWrite((fd),(pBuff),ExpSize); _SL_ASSERT(ExpSize == RetSize)} -#define NWP_IF_READ_CHECK(fd,pBuff,len) { _i16 RetSize, ExpSize = (len); RetSize = sl_IfRead((fd),(pBuff),ExpSize); _SL_ASSERT(ExpSize == RetSize)} -#elif (SL_NWP_IF_HANDLING == SL_HANDLING_ERROR) -#define NWP_IF_WRITE_CHECK(fd,pBuff,len) { _SL_ERROR((len == sl_IfWrite((fd),(pBuff),(len))), SL_RET_CODE_NWP_IF_ERROR);} -#define NWP_IF_READ_CHECK(fd,pBuff,len) { _SL_ERROR((len == sl_IfRead((fd),(pBuff),(len))), SL_RET_CODE_NWP_IF_ERROR);} -#else -#define NWP_IF_WRITE_CHECK(fd,pBuff,len) { sl_IfWrite((fd),(pBuff),(len));} -#define NWP_IF_READ_CHECK(fd,pBuff,len) { sl_IfRead((fd),(pBuff),(len));} -#endif - -#if (SL_OSI_RET_OK_HANDLING == SL_HANDLING_ASSERT) -#define OSI_RET_OK_CHECK(Func) {_SlReturnVal_t _RetVal = (Func); _SL_ASSERT((_SlReturnVal_t)SL_OS_RET_CODE_OK == _RetVal)} -#elif (SL_OSI_RET_OK_HANDLING == SL_HANDLING_ERROR) -#define OSI_RET_OK_CHECK(Func) {_SlReturnVal_t _RetVal = (Func); if (SL_OS_RET_CODE_OK != _RetVal) return _RetVal;} -#else -#define OSI_RET_OK_CHECK(Func) (Func); -#endif - -#if (SL_MALLOC_OK_HANDLING == SL_HANDLING_ASSERT) -#define MALLOC_OK_CHECK(Ptr) _SL_ASSERT(NULL != Ptr) -#elif (SL_MALLOC_OK_HANDLING == SL_HANDLING_ERROR) -#define MALLOC_OK_CHECK(Ptr) _SL_ERROR((NULL != Ptr), SL_RET_CODE_MALLOC_ERROR) -#else -#define MALLOC_OK_CHECK(Ptr) -#endif - -#ifdef SL_INC_ARG_CHECK - -#if (SL_USER_ARGS_HANDLING == SL_HANDLING_ASSERT) -#define ARG_CHECK_PTR(Ptr) _SL_ASSERT(NULL != Ptr) -#elif (SL_USER_ARGS_HANDLING == SL_HANDLING_ERROR) -#define ARG_CHECK_PTR(Ptr) _SL_ERROR((NULL != Ptr), SL_RET_CODE_INVALID_INPUT) -#else -#define ARG_CHECK_PTR(Ptr) -#endif - -#else -#define ARG_CHECK_PTR(Ptr) -#endif - -#if defined(DEBUG) && !defined(BOOTLOADER) -#include "std.h" -#define SL_DBG_TRACE_ENABLE -#endif -#ifdef SL_DBG_TRACE_ENABLE -#define SL_TRACE0(level,msg_id,str) -#define SL_TRACE1(level,msg_id,str,p1) -#define SL_TRACE2(level,msg_id,str,p1,p2) -#define SL_TRACE3(level,msg_id,str,p1,p2,p3) -#define SL_TRACE4(level,msg_id,str,p1,p2,p3,p4) -#define SL_ERROR_TRACE(msg_id,str) printf(str) -#define SL_ERROR_TRACE1(msg_id,str,p1) printf(str,(p1)) -#define SL_ERROR_TRACE2(msg_id,str,p1,p2) printf(str,(p1),(p2)) -#define SL_ERROR_TRACE3(msg_id,str,p1,p2,p3) printf(str,(p1),(p2),(p3)) -#define SL_ERROR_TRACE4(msg_id,str,p1,p2,p3,p4) printf(str,(p1),(p2),(p3),(p4)) -#define SL_TRACE_FLUSH() -#else -#define SL_TRACE0(level,msg_id,str) -#define SL_TRACE1(level,msg_id,str,p1) -#define SL_TRACE2(level,msg_id,str,p1,p2) -#define SL_TRACE3(level,msg_id,str,p1,p2,p3) -#define SL_TRACE4(level,msg_id,str,p1,p2,p3,p4) -#define SL_ERROR_TRACE(msg_id,str) -#define SL_ERROR_TRACE1(msg_id,str,p1) -#define SL_ERROR_TRACE2(msg_id,str,p1,p2) -#define SL_ERROR_TRACE3(msg_id,str,p1,p2,p3) -#define SL_ERROR_TRACE4(msg_id,str,p1,p2,p3,p4) -#define SL_TRACE_FLUSH() -#endif - -/* #define SL_DBG_CNT_ENABLE */ -#ifdef SL_DBG_CNT_ENABLE -#define _SL_DBG_CNT_INC(Cnt) g_DbgCnt. ## Cnt++ -#define _SL_DBG_SYNC_LOG(index,value) {if(index < SL_DBG_SYNC_LOG_SIZE){*(_u32 *)&g_DbgCnt.SyncLog[index] = *(_u32 *)(value);}} - -#else -#define _SL_DBG_CNT_INC(Cnt) -#define _SL_DBG_SYNC_LOG(index,value) -#endif - -#define SL_DBG_LEVEL_1 1 -#define SL_DBG_LEVEL_2 2 -#define SL_DBG_LEVEL_3 4 -#define SL_DBG_LEVEL_MASK (SL_DBG_LEVEL_2|SL_DBG_LEVEL_3) - -#define SL_INCLUDE_DBG_FUNC(Name) ((Name ## _DBG_LEVEL) & SL_DBG_LEVEL_MASK) - -#define _SlDrvPrintStat_DBG_LEVEL SL_DBG_LEVEL_3 -#define _SlDrvOtherFunc_DBG_LEVEL SL_DBG_LEVEL_1 - -#ifdef __cplusplus -} -#endif - - -#endif /*__SIMPLELINK_TRACE_H__*/ - diff --git a/cc3200/simplelink/include/wlan.h b/cc3200/simplelink/include/wlan.h deleted file mode 100644 index a0c73d192..000000000 --- a/cc3200/simplelink/include/wlan.h +++ /dev/null @@ -1,1320 +0,0 @@ -/* - * wlan.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - -#ifndef __WLAN_H__ -#define __WLAN_H__ - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ -#include "simplelink.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - -/*! - - \addtogroup wlan - @{ - -*/ - -#define SL_BSSID_LENGTH (6) -#define MAXIMAL_SSID_LENGTH (32) - -#define NUM_OF_RATE_INDEXES (20) -#define SIZE_OF_RSSI_HISTOGRAM (6) - -/* WLAN Disconnect Reason Codes */ -#define SL_DISCONNECT_RESERVED_0 (0) -#define SL_DISCONNECT_UNSPECIFIED_REASON (1) -#define SL_PREVIOUS_AUTHENTICATION_NO_LONGER_VALID (2) -#define SL_DEAUTHENTICATED_BECAUSE_SENDING_STATION_IS_LEAVING (3) -#define SL_DISASSOCIATED_DUE_TO_INACTIVITY (4) -#define SL_DISASSOCIATED_BECAUSE_AP_IS_UNABLE_TO_HANDLE_ALL_CURRENTLY_ASSOCIATED_STATIONS (5) -#define SL_CLASS_2_FRAME_RECEIVED_FROM_NONAUTHENTICATED_STATION (6) -#define SL_CLASS_3_FRAME_RECEIVED_FROM_NONASSOCIATED_STATION (7) -#define SL_DISASSOCIATED_BECAUSE_SENDING_STATION_IS_LEAVING_BSS (8) -#define SL_STATION_REQUESTING_ASSOCIATION_IS_NOT_AUTHENTICATED_WITH_RESPONDING_STATION (9) -#define SL_DISASSOCIATED_BECAUSE_THE_INFORMATION_IN_THE_POWER_CAPABILITY_ELEMENT_IS_UNACCEPTABLE (10) -#define SL_DISASSOCIATED_BECAUSE_THE_INFORMATION_IN_THE_SUPPORTED_CHANNELS_ELEMENT_IS_UNACCEPTABLE (11) -#define SL_DISCONNECT_RESERVED_1 (12) -#define SL_INVALID_INFORMATION_ELEMENT (13) -#define SL_MESSAGE_INTEGRITY_CODE_MIC_FAILURE (14) -#define SL_FOUR_WAY_HANDSHAKE_TIMEOUT (15) -#define SL_GROUP_KEY_HANDSHAKE_TIMEOUT (16) -#define SL_RE_ASSOCIATION_REQUEST_PROBE_RESPONSE_BEACON_FRAME (17) -#define SL_INVALID_GROUP_CIPHER (18) -#define SL_INVALID_PAIRWISE_CIPHER (19) -#define SL_INVALID_AKMP (20) -#define SL_UNSUPPORTED_RSN_INFORMATION_ELEMENT_VERSION (21) -#define SL_INVALID_RSN_INFORMATION_ELEMENT_CAPABILITIES (22) -#define SL_IEEE_802_1X_AUTHENTICATION_FAILED (23) -#define SL_CIPHER_SUITE_REJECTED_BECAUSE_OF_THE_SECURITY_POLICY (24) -#define SL_DISCONNECT_RESERVED_2 (25) -#define SL_DISCONNECT_RESERVED_3 (26) -#define SL_DISCONNECT_RESERVED_4 (27) -#define SL_DISCONNECT_RESERVED_5 (28) -#define SL_DISCONNECT_RESERVED_6 (29) -#define SL_DISCONNECT_RESERVED_7 (30) -#define SL_DISCONNECT_RESERVED_8 (31) -#define SL_DISASSOCIATED_FOR_UNSPECIFIED_QOS_RELATED_REASON (32) -#define SL_DISASSOCIATED_BECAUSE_QAP_LACKS_SUFFICIENT_BANDWIDTH_FOR_THIS_QSTA (33) -#define SL_DISASSOCIATED_BECAUSE_EXCESSIVE_NUMBER_OF_FRAMES_NEED_TO_BE_ACKNOWLEDGED (34) -#define SL_DISASSOCIATED_BECAUSE_QSTA_IS_TRANSMITTING_OUTSIDE_THE_LIMITS_OF_ITS_TXOPS (35) -#define SL_REQUESTED_FROM_PEER_QSTA_AS_THE_QSTA_IS_LEAVING_THE_QBSS (36) -#define SL_REQUESTED_FROM_PEER_QSTA_AS_IT_DOES_NO_WANT_TO_USE_THE_MECHANISM (37) -#define SL_REQUESTED_FROM_PEER_QSTA_AS_THE_QSTA_RECEIVED_FRAMES_SETUP_IS_REQUIRED (38) -#define SL_REQUESTED_FROM_PEER_QSTA_DUE_TO_TIMEOUT (39) -#define SL_PEER_QSTA_DOES_NOT_SUPPORT_THE_REQUESTED_CIPHER_SUITE (40) -#define SL_CISCO_DEFINED (98) -#define SL_CISCO_DEFINED_1 (99) -#define SL_ROAMING_TRIGGER_NONE (100) -#define SL_ROAMING_TRIGGER_LOW_QUALITY_FOR_BG_SCAN (101) -#define SL_ROAMING_TRIGGER_HIGH_QUALITY_FOR_BG_SCAN (102) -#define SL_ROAMING_TRIGGER_NORMAL_QUALITY_FOR_BG_SCAN (103) -#define SL_ROAMING_TRIGGER_LOW_TX_RATE (104) -#define SL_ROAMING_TRIGGER_LOW_SNR (105) -#define SL_ROAMING_TRIGGER_LOW_QUALITY (106) -#define SL_ROAMING_TRIGGER_TSPEC_REJECTED (107) -#define SL_ROAMING_TRIGGER_MAX_TX_RETRIES (108) -#define SL_ROAMING_TRIGGER_BSS_LOSS (109) -#define SL_ROAMING_TRIGGER_BSS_LOSS_DUE_TO_MAX_TX_RETRY (110) -#define SL_ROAMING_TRIGGER_SWITCH_CHANNEL (111) -#define SL_ROAMING_TRIGGER_AP_DISCONNECT (112) -#define SL_ROAMING_TRIGGER_SECURITY_ATTACK (113) -#define SL_ROAMING_TRIGGER_MAX (114) -#define SL_USER_INITIATED_DISCONNECTION (200) - -/* Wlan error codes */ -#define SL_ERROR_KEY_ERROR (-3) -#define SL_ERROR_INVALID_ROLE (-71) -#define SL_ERROR_INVALID_SECURITY_TYPE (-84) -#define SL_ERROR_PASSPHRASE_TOO_LONG (-85) -#define SL_ERROR_WPS_NO_PIN_OR_WRONG_PIN_LEN (-87) -#define SL_ERROR_EAP_WRONG_METHOD (-88) -#define SL_ERROR_PASSWORD_ERROR (-89) -#define SL_ERROR_EAP_ANONYMOUS_LEN_ERROR (-90) -#define SL_ERROR_SSID_LEN_ERROR (-91) -#define SL_ERROR_USER_ID_LEN_ERROR (-92) -#define SL_ERROR_ILLEGAL_WEP_KEY_INDEX (-95) -#define SL_ERROR_INVALID_DWELL_TIME_VALUES (-96) -#define SL_ERROR_INVALID_POLICY_TYPE (-97) -#define SL_ERROR_PM_POLICY_INVALID_OPTION (-98) -#define SL_ERROR_PM_POLICY_INVALID_PARAMS (-99) -#define SL_ERROR_WIFI_ALREADY_DISCONNECTED (-129) -#define SL_ERROR_WIFI_NOT_CONNECTED (-59) - - - -#define SL_SEC_TYPE_OPEN (0) -#define SL_SEC_TYPE_WEP (1) -#define SL_SEC_TYPE_WPA (2) /* deprecated */ -#define SL_SEC_TYPE_WPA_WPA2 (2) -#define SL_SEC_TYPE_WPS_PBC (3) -#define SL_SEC_TYPE_WPS_PIN (4) -#define SL_SEC_TYPE_WPA_ENT (5) -#define SL_SEC_TYPE_P2P_PBC (6) -#define SL_SEC_TYPE_P2P_PIN_KEYPAD (7) -#define SL_SEC_TYPE_P2P_PIN_DISPLAY (8) -#define SL_SEC_TYPE_P2P_PIN_AUTO (9) /* NOT Supported yet */ - - - -#define SL_SCAN_SEC_TYPE_OPEN (0) -#define SL_SCAN_SEC_TYPE_WEP (1) -#define SL_SCAN_SEC_TYPE_WPA (2) -#define SL_SCAN_SEC_TYPE_WPA2 (3) - - - -#define TLS (0x1) -#define MSCHAP (0x0) -#define PSK (0x2) -#define TTLS (0x10) -#define PEAP0 (0x20) -#define PEAP1 (0x40) -#define FAST (0x80) - -#define FAST_AUTH_PROVISIONING (0x02) -#define FAST_UNAUTH_PROVISIONING (0x01) -#define FAST_NO_PROVISIONING (0x00) - -#define EAPMETHOD_PHASE2_SHIFT (8) -#define EAPMETHOD_PAIRWISE_CIPHER_SHIFT (19) -#define EAPMETHOD_GROUP_CIPHER_SHIFT (27) - -#define WPA_CIPHER_CCMP (0x1) -#define WPA_CIPHER_TKIP (0x2) -#define CC31XX_DEFAULT_CIPHER (WPA_CIPHER_CCMP | WPA_CIPHER_TKIP) - -#define EAPMETHOD(phase1,phase2,pairwise_cipher,group_cipher) \ -((phase1) | \ - ((phase2) << EAPMETHOD_PHASE2_SHIFT ) |\ - ((_u32)(pairwise_cipher) << EAPMETHOD_PAIRWISE_CIPHER_SHIFT ) |\ - ((_u32)(group_cipher) << EAPMETHOD_GROUP_CIPHER_SHIFT )) - -/* phase1 phase2 pairwise_cipher group_cipher */ -#define SL_ENT_EAP_METHOD_TLS EAPMETHOD(TLS , 0 , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_TTLS_TLS EAPMETHOD(TTLS , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_TTLS_MSCHAPv2 EAPMETHOD(TTLS , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_TTLS_PSK EAPMETHOD(TTLS , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_PEAP0_TLS EAPMETHOD(PEAP0 , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_PEAP0_MSCHAPv2 EAPMETHOD(PEAP0 , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_PEAP0_PSK EAPMETHOD(PEAP0 , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_PEAP1_TLS EAPMETHOD(PEAP1 , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_PEAP1_MSCHAPv2 EAPMETHOD(PEAP1 , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_PEAP1_PSK EAPMETHOD(PEAP1 , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_FAST_AUTH_PROVISIONING EAPMETHOD(FAST , FAST_AUTH_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_FAST_UNAUTH_PROVISIONING EAPMETHOD(FAST , FAST_UNAUTH_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) -#define SL_ENT_EAP_METHOD_FAST_NO_PROVISIONING EAPMETHOD(FAST , FAST_NO_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER) - -#define SL_LONG_PREAMBLE (0) -#define SL_SHORT_PREAMBLE (1) - -#define SL_RAW_RF_TX_PARAMS_CHANNEL_SHIFT (0) -#define SL_RAW_RF_TX_PARAMS_RATE_SHIFT (6) -#define SL_RAW_RF_TX_PARAMS_POWER_SHIFT (11) -#define SL_RAW_RF_TX_PARAMS_PREAMBLE_SHIFT (15) - -#define SL_RAW_RF_TX_PARAMS(chan,rate,power,preamble) \ - ((chan << SL_RAW_RF_TX_PARAMS_CHANNEL_SHIFT) | \ - (rate << SL_RAW_RF_TX_PARAMS_RATE_SHIFT) | \ - (power << SL_RAW_RF_TX_PARAMS_POWER_SHIFT) | \ - (preamble << SL_RAW_RF_TX_PARAMS_PREAMBLE_SHIFT)) - - -/* wlan config application IDs */ -#define SL_WLAN_CFG_AP_ID (0) -#define SL_WLAN_CFG_GENERAL_PARAM_ID (1) -#define SL_WLAN_CFG_P2P_PARAM_ID (2) - -/* wlan AP Config set/get options */ -#define WLAN_AP_OPT_SSID (0) -#define WLAN_AP_OPT_CHANNEL (3) -#define WLAN_AP_OPT_HIDDEN_SSID (4) -#define WLAN_AP_OPT_SECURITY_TYPE (6) -#define WLAN_AP_OPT_PASSWORD (7) -#define WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE (9) -#define WLAN_GENERAL_PARAM_OPT_STA_TX_POWER (10) -#define WLAN_GENERAL_PARAM_OPT_AP_TX_POWER (11) - -#define WLAN_P2P_OPT_DEV_NAME (12) -#define WLAN_P2P_OPT_DEV_TYPE (13) -#define WLAN_P2P_OPT_CHANNEL_N_REGS (14) -#define WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT (16) -#define WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS (18) /* change the scan channels and RSSI threshold using this configuration option */ - -/* SmartConfig CIPHER options */ -#define SMART_CONFIG_CIPHER_SFLASH (0) /* password is not delivered by the application. The Simple Manager should */ - /* check if the keys are stored in the Flash. */ -#define SMART_CONFIG_CIPHER_AES (1) /* AES (other types are not supported) */ -#define SMART_CONFIG_CIPHER_NONE (0xFF) /* do not check in the flash */ - - -#define SL_POLICY_CONNECTION (0x10) -#define SL_POLICY_SCAN (0x20) -#define SL_POLICY_PM (0x30) -#define SL_POLICY_P2P (0x40) - -#define VAL_2_MASK(position,value) ((1 & (value))<<(position)) -#define MASK_2_VAL(position,mask) (((1 << position) & (mask)) >> (position)) - -#define SL_CONNECTION_POLICY(Auto,Fast,Open,anyP2P,autoSmartConfig) (VAL_2_MASK(0,Auto) | VAL_2_MASK(1,Fast) | VAL_2_MASK(2,Open) | VAL_2_MASK(3,anyP2P) | VAL_2_MASK(4,autoSmartConfig)) -#define SL_SCAN_POLICY_EN(policy) (MASK_2_VAL(0,policy)) -#define SL_SCAN_POLICY(Enable) (VAL_2_MASK(0,Enable)) - - -#define SL_NORMAL_POLICY (0) -#define SL_LOW_LATENCY_POLICY (1) -#define SL_LOW_POWER_POLICY (2) -#define SL_ALWAYS_ON_POLICY (3) -#define SL_LONG_SLEEP_INTERVAL_POLICY (4) - -#define SL_P2P_ROLE_NEGOTIATE (3) -#define SL_P2P_ROLE_GROUP_OWNER (15) -#define SL_P2P_ROLE_CLIENT (0) - -#define SL_P2P_NEG_INITIATOR_ACTIVE (0) -#define SL_P2P_NEG_INITIATOR_PASSIVE (1) -#define SL_P2P_NEG_INITIATOR_RAND_BACKOFF (2) - -#define POLICY_VAL_2_OPTIONS(position,mask,policy) ((mask & policy) << position ) - -#define SL_P2P_POLICY(p2pNegType,p2pNegInitiator) (POLICY_VAL_2_OPTIONS(0,0xF,(p2pNegType > SL_P2P_ROLE_GROUP_OWNER ? SL_P2P_ROLE_GROUP_OWNER : p2pNegType)) | \ - POLICY_VAL_2_OPTIONS(4,0x1,(p2pNegType > SL_P2P_ROLE_GROUP_OWNER ? 1:0)) | \ - POLICY_VAL_2_OPTIONS(5,0x3, p2pNegInitiator)) - - -/* Info elements */ - -#define INFO_ELEMENT_DEFAULT_ID (0) /* 221 will be used */ - -/* info element size is up to 252 bytes (+ 3 bytes of OUI). */ -#define INFO_ELEMENT_MAX_SIZE (252) - -/* For AP - the total length of all info elements is 300 bytes (for example - 4 info elements of 75 bytes each) */ -#define INFO_ELEMENT_MAX_TOTAL_LENGTH_AP (300) -/* For P2P - the total length of all info elements is 150 bytes (for example - 4 info elements of 40 bytes each) */ -#define INFO_ELEMENT_MAX_TOTAL_LENGTH_P2P_GO (160) - -#define INFO_ELEMENT_AP_ROLE (0) -#define INFO_ELEMENT_P2P_GO_ROLE (1) - -/* we support up to 4 info elements per Role. */ -#define MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED (4) - -#define INFO_ELEMENT_DEFAULT_OUI_0 (0x08) -#define INFO_ELEMENT_DEFAULT_OUI_1 (0x00) -#define INFO_ELEMENT_DEFAULT_OUI_2 (0x28) - -#define INFO_ELEMENT_DEFAULT_OUI (0x000000) /* 08, 00, 28 will be used */ - -/*****************************************************************************/ -/* Structure/Enum declarations */ -/*****************************************************************************/ - -typedef enum -{ - RATE_1M = 1, - RATE_2M = 2, - RATE_5_5M = 3, - RATE_11M = 4, - RATE_6M = 6, - RATE_9M = 7, - RATE_12M = 8, - RATE_18M = 9, - RATE_24M = 10, - RATE_36M = 11, - RATE_48M = 12, - RATE_54M = 13, - RATE_MCS_0 = 14, - RATE_MCS_1 = 15, - RATE_MCS_2 = 16, - RATE_MCS_3 = 17, - RATE_MCS_4 = 18, - RATE_MCS_5 = 19, - RATE_MCS_6 = 20, - RATE_MCS_7 = 21, - MAX_NUM_RATES = 0xFF -}SlRateIndex_e; - -typedef enum { - DEV_PW_DEFAULT=0, - DEV_PW_PIN_KEYPAD=1, - DEV_PW_PUSH_BUTTON=4, - DEV_PW_PIN_DISPLAY=5 -} sl_p2p_dev_password_method; - - -typedef struct -{ - _u32 status; - _u32 ssid_len; - _u8 ssid[32]; - _u32 private_token_len; - _u8 private_token[32]; -}slSmartConfigStartAsyncResponse_t; - -typedef struct -{ - _u16 status; - _u16 padding; -}slSmartConfigStopAsyncResponse_t; - -typedef struct -{ - _u16 status; - _u16 padding; -}slWlanConnFailureAsyncResponse_t; - -typedef struct -{ - _u8 connection_type;/* 0-STA,3-P2P_CL */ - _u8 ssid_len; - _u8 ssid_name[32]; - _u8 go_peer_device_name_len; - _u8 go_peer_device_name[32]; - _u8 bssid[6]; - _u8 reason_code; - _u8 padding[2]; -} slWlanConnectAsyncResponse_t; - -typedef struct -{ - _u8 go_peer_device_name[32]; - _u8 mac[6]; - _u8 go_peer_device_name_len; - _u8 wps_dev_password_id; - _u8 own_ssid[32];/* relevant for event sta-connected only */ - _u8 own_ssid_len;/* relevant for event sta-connected only */ - _u8 padding[3]; -}slPeerInfoAsyncResponse_t; - - -typedef union -{ - slSmartConfigStartAsyncResponse_t smartConfigStartResponse; /*SL_WLAN_SMART_CONFIG_COMPLETE_EVENT*/ - slSmartConfigStopAsyncResponse_t smartConfigStopResponse; /*SL_WLAN_SMART_CONFIG_STOP_EVENT */ - slPeerInfoAsyncResponse_t APModeStaConnected; /* SL_WLAN_STA_CONNECTED_EVENT - relevant only in AP mode - holds information regarding a new STA connection */ - slPeerInfoAsyncResponse_t APModestaDisconnected; /* SL_WLAN_STA_DISCONNECTED_EVENT - relevant only in AP mode - holds information regarding a STA disconnection */ - slWlanConnectAsyncResponse_t STAandP2PModeWlanConnected; /* SL_WLAN_CONNECT_EVENT - relevant only in STA and P2P mode - holds information regarding a new connection */ - slWlanConnectAsyncResponse_t STAandP2PModeDisconnected; /* SL_WLAN_DISCONNECT_EVENT - relevant only in STA and P2P mode - holds information regarding a disconnection */ - slPeerInfoAsyncResponse_t P2PModeDevFound; /* SL_WLAN_P2P_DEV_FOUND_EVENT - relevant only in P2P mode */ - slPeerInfoAsyncResponse_t P2PModeNegReqReceived; /* SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT - relevant only in P2P mode */ - slWlanConnFailureAsyncResponse_t P2PModewlanConnectionFailure; /* SL_WLAN_CONNECTION_FAILED_EVENT - relevant only in P2P mode */ - -} SlWlanEventData_u; - -typedef struct -{ - _u32 Event; - SlWlanEventData_u EventData; -} SlWlanEvent_t; - - -typedef struct -{ - _u32 ReceivedValidPacketsNumber; /* sum of the packets that been received OK (include filtered) */ - _u32 ReceivedFcsErrorPacketsNumber; /* sum of the packets that been dropped due to FCS error */ - _u32 ReceivedPlcpErrorPacketsNumber; /* sum of the packets that been dropped due to PLCP error */ - _i16 AvarageDataCtrlRssi; /* average RSSI for all valid data packets received */ - _i16 AvarageMgMntRssi; /* average RSSI for all valid management packets received */ - _u16 RateHistogram[NUM_OF_RATE_INDEXES]; /* rate histogram for all valid packets received */ - _u16 RssiHistogram[SIZE_OF_RSSI_HISTOGRAM]; /* RSSI histogram from -40 until -87 (all below and above\n RSSI will appear in the first and last cells */ - _u32 StartTimeStamp; /* the time stamp started collecting the statistics in uSec */ - _u32 GetTimeStamp; /* the time stamp called the get statistics command */ -}SlGetRxStatResponse_t; - - -typedef struct -{ - _u8 ssid[MAXIMAL_SSID_LENGTH]; - _u8 ssid_len; - _u8 sec_type; - _u8 bssid[SL_BSSID_LENGTH]; - _i8 rssi; - _i8 reserved[3]; -}Sl_WlanNetworkEntry_t; - - -typedef struct -{ - _u8 Type; - _i8* Key; - _u8 KeyLen; -}SlSecParams_t; - -typedef struct -{ - _i8* User; - _u8 UserLen; - _i8* AnonUser; - _u8 AnonUserLen; - _u8 CertIndex; /* not supported */ - _u32 EapMethod; -}SlSecParamsExt_t; - -typedef struct -{ - _i8 User[32]; - _u8 UserLen; - _i8 AnonUser[32]; - _u8 AnonUserLen; - _u8 CertIndex; //not supported - _u32 EapMethod; -}SlGetSecParamsExt_t; - -typedef enum -{ - ROLE_STA = 0, - ROLE_AP = 2, - ROLE_P2P = 3, - ROLE_STA_ERR = -1, /* Failure to load MAC/PHY in STA role */ - ROLE_AP_ERR = -ROLE_AP, /* Failure to load MAC/PHY in AP role */ - ROLE_P2P_ERR = -ROLE_P2P /* Failure to load MAC/PHY in P2P role */ -}SlWlanMode_t; - -typedef struct -{ - _u32 G_Channels_mask; - _i32 rssiThershold; -}slWlanScanParamCommand_t; - - -typedef struct -{ - _u8 id; - _u8 oui[3]; - _u16 length; - _u8 data[252]; -} sl_protocol_InfoElement_t; - -typedef struct -{ - _u8 index; /* 0 - MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED */ - _u8 role; /* bit0: AP = 0, GO = 1 */ - sl_protocol_InfoElement_t ie; -} sl_protocol_WlanSetInfoElement_t; - - -/*****************************************************************************/ -/* Function prototypes */ -/*****************************************************************************/ - - -/*! - \brief Connect to wlan network as a station - - \param[in] sec_type security types options: \n - - SL_SEC_TYPE_OPEN - - SL_SEC_TYPE_WEP - - SL_SEC_TYPE_WPA_WPA2 - - SL_SEC_TYPE_WPA_ENT - - SL_SEC_TYPE_WPS_PBC - - SL_SEC_TYPE_WPS_PIN - - \param[in] pName up to 32 bytes in case of STA the name is the SSID of the Access Point - \param[in] NameLen name length - \param[in] pMacAddr 6 bytes for MAC address - \param[in] pSecParams Security parameters (use NULL key for SL_SEC_TYPE_OPEN) - \param[in] pSecExtParams Enterprise parameters (set NULL in case Enterprise parameters is not in use) - - \return On success, zero is returned. On error, negative is returned - In case error number (-71) is returned, it indicates a connection was activated while the device it running in AP role - - \sa sl_WlanDisconnect - \note belongs to \ref ext_api - \warning In this version only single enterprise mode could be used - SL_SEC_TYPE_WPA is a deprecated definition, the new definition is SL_SEC_TYPE_WPA_WPA2 -*/ -#if _SL_INCLUDE_FUNC(sl_WlanConnect) -_i16 sl_WlanConnect(_i8* pName, _i16 NameLen, _u8 *pMacAddr, SlSecParams_t* pSecParams , SlSecParamsExt_t* pSecExtParams); -#endif - -/*! - \brief wlan disconnect - - Disconnect connection - - \return 0 disconnected done, other already disconnected - - \sa sl_WlanConnect - \note belongs to \ref ext_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_WlanDisconnect) -_i16 sl_WlanDisconnect(void); -#endif - -/*! - \brief add profile - - When auto start is enabled, the device connects to a - station from the profiles table. Up to 7 profiles are - supported. If several profiles configured the device chose - the highest priority profile, within each priority group, - device will chose profile based on security policy, signal - strength, etc parameters. - - - \param[in] pName up to 32 bytes in case of STA the name is the - SSID of the Access Point - in case of P2P the name is the remote device name - \param[in] NameLen name length - \param[in] pMacAddr 6 bytes for MAC address - \param[in] pSecParams Security parameters - security type - (SL_SEC_TYPE_OPEN,SL_SEC_TYPE_WEP,SL_SEC_TYPE_WPA_WPA2, - SL_SEC_TYPE_P2P_PBC,SL_SEC_TYPE_P2P_PIN_KEYPAD,SL_SEC_TYPE_P2P_PIN_DISPLAY, SL_SEC_TYPE_WPA_ENT), key, and key length - in case of p2p security type pin the key refers to pin code - \param[in] pSecExtParams Enterprise parameters - identity, identity length, - Anonymous, Anonymous length, CertIndex (not supported, - certificates need to be placed in a specific file ID), - EapMethod.Use NULL in case Enterprise parameters is not in use - - \param[in] Priority profile priority. Lowest priority: 0 - \param[in] Options Not supported - - \return On success, profile stored index is returned. On error, negative value is returned - - \sa sl_WlanProfileGet , sl_WlanProfileDel - \note belongs to \ref ext_api - \warning Only one Enterprise profile is supported. - Please Note that in case of adding an existing profile (compared by pName,pMACAddr and security type) - the old profile will be deleted and the same index will be returned. - SL_SEC_TYPE_WPA is a deprecated definition, the new definition is SL_SEC_TYPE_WPA_WPA2 - -*/ -#if _SL_INCLUDE_FUNC(sl_WlanProfileAdd) -_i16 sl_WlanProfileAdd(_i8* pName, _i16 NameLen, _u8 *pMacAddr, SlSecParams_t* pSecParams , SlSecParamsExt_t* pSecExtParams, _u32 Priority, _u32 Options); -#endif - -/*! - \brief get profile - - read profile from the device - - \param[in] Index profile stored index, if index does not exists - error is return - \param[out] pName up to 32 bytes, in case of sta mode the name of the Access Point - in case of p2p mode the name of the Remote Device - \param[out] pNameLen name length - \param[out] pMacAddr 6 bytes for MAC address - \param[out] pSecParams security parameters - security type - (LAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or - WLAN_SEC_WPA2, WLAN_SEC_P2P_PBC, WLAN_SEC_P2P_PIN_KEYPAD or WLAN_SEC_P2P_DISPLAY), key and key length are not - in case of p2p security type pin the key refers to pin code - return due to security reasons. - \param[out] pSecExtParams enterprise parameters - identity, identity - length, Anonymous, Anonymous length - CertIndex (not supported), EapMethod. - \param[out] Priority profile priority - - \return On success, Profile security type is returned (0 or positive number). On error, -1 is - returned - - \sa sl_WlanProfileAdd , sl_WlanProfileDel - \note belongs to \ref ext_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_WlanProfileGet) -_i16 sl_WlanProfileGet(_i16 Index,_i8* pName, _i16 *pNameLen, _u8 *pMacAddr, SlSecParams_t* pSecParams, SlGetSecParamsExt_t* pSecExtParams, _u32 *pPriority); -#endif - -/*! - \brief Delete WLAN profile - - Delete WLAN profile - - \param[in] index number of profile to delete.Possible values are 0 to 6. - Index value 255 will delete all saved profiles - - \return On success, zero is returned. On error, -1 is - returned - - \sa sl_WlanProfileAdd , sl_WlanProfileGet - \note belongs to \ref ext_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_WlanProfileDel) -_i16 sl_WlanProfileDel(_i16 Index); -#endif - -/*! - \brief Set policy values - - \param[in] Type Type of policy to be modified. The Options are:\n - - SL_POLICY_CONNECTION - - SL_POLICY_SCAN - - SL_POLICY_PM - - SL_POLICY_P2P - \param[in] Policy The option value which depends on action type - \param[in] pVal An optional value pointer - \param[in] ValLen An optional value length, in bytes - \return On success, zero is returned. On error, -1 is - returned - \sa sl_WlanPolicyGet - \note belongs to \ref ext_api - \warning - \par - SL_POLICY_CONNECTION type defines three options available to connect the CC31xx device to the AP: \n - - - If Auto Connect is set, the CC31xx device tries to automatically reconnect to one of its stored profiles, each time the connection fails or the device is rebooted.\n - To set this option, use: \n - <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(1,0,0,0,0),NULL,0) </b> - - If Fast Connect is set, the CC31xx device tries to establish a fast connection to AP. \n - To set this option, use: \n - <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,1,0,0,0),NULL,0) </b> - - (relevant for P2P mode only) - If Any P2P is set, CC31xx/CC32xx device tries to automatically connect to the first P2P device available, \n - supporting push button only. To set this option, use: \n - <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,0,0,1,0),NULL,0) </b> - - For auto smart config upon restart (any command from Host will end this state) use: \n - <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,0,0,0,1),NULL,0) </b> \n - The options above could be combined to a single action, if more than one action is required. \n - \par - SL_POLICY_SCAN defines system scan time interval in case there is no connection. Default interval is 10 minutes. \n - After settings scan interval, an immediate scan is activated. The next scan will be based on the interval settings. \n - - For example, setting scan interval to 1 minute interval use: \n - _u32 intervalInSeconds = 60; \n - #define SL_SCAN_ENABLE 1 \n<b> - sl_WlanPolicySet(SL_POLICY_SCAN,SL_SCAN_ENABLE, (_u8 *)&intervalInSeconds,sizeof(intervalInSeconds)); </b>\n - - - For example, disable scan: \n - #define SL_SCAN_DISABLE 0 \n<b> - sl_WlanPolicySet(SL_POLICY_SCAN,SL_SCAN_DISABLE,0,0); </b>\n - \par - SL_POLICY_PM defines a power management policy for Station mode only: - - For setting normal power management (default) policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_NORMAL_POLICY, NULL,0) </b> - - For setting low latency power management policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_LOW_LATENCY_POLICY, NULL,0) </b> - - For setting low power management policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_LOW_POWER_POLICY, NULL,0) </b> - - For setting always on power management policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_ALWAYS_ON_POLICY, NULL,0) </b> - - For setting Long Sleep Interval policy use: \n - _u16 PolicyBuff[4] = {0,0,800,0}; // PolicyBuff[2] is max sleep time in mSec \n<b> - sl_WlanPolicySet(SL_POLICY_PM , SL_LONG_SLEEP_INTERVAL_POLICY, (_u8*)PolicyBuff,sizeof(PolicyBuff)); </b>\n - - SL_POLICY_P2P defines p2p negotiation policy parameters for P2P role: - - To set intent negotiation value, set on of the following: - SL_P2P_ROLE_NEGOTIATE - intent 3 - SL_P2P_ROLE_GROUP_OWNER - intent 15 - SL_P2P_ROLE_CLIENT - intent 0 - - To set negotiation initiator value (initiator policy of first negotiation action frame), set on of the following: - SL_P2P_NEG_INITIATOR_ACTIVE - SL_P2P_NEG_INITIATOR_PASSIVE - SL_P2P_NEG_INITIATOR_RAND_BACKOFF - For example: \n - <b>sl_WlanPolicySet(SL_POLICY_P2P, SL_P2P_POLICY(SL_P2P_ROLE_NEGOTIATE,SL_P2P_NEG_INITIATOR_RAND_BACKOFF),NULL,0) </b> - -*/ -#if _SL_INCLUDE_FUNC(sl_WlanPolicySet) -_i16 sl_WlanPolicySet(_u8 Type , const _u8 Policy, _u8 *pVal,_u8 ValLen); -#endif -/*! - \brief get policy values - - \param[in] Type SL_POLICY_CONNECTION, SL_POLICY_SCAN, SL_POLICY_PM,SL_POLICY_P2P \n - - \param[in] Policy argument may be set to any value \n - - \param[out] The returned values, depends on each policy type, will be stored in the allocated buffer pointed by pVal - with a maximum buffer length set by the calling function and pointed to by argument *pValLen - - \return On success, zero is returned. On error, -1 is returned - - \sa sl_WlanPolicySet - - \note belongs to \ref ext_api - - \warning The value pointed by the argument *pValLen should be set to a value different from 0 and - greater than the buffer length returned from the SL device. Otherwise, an error will be returned. - -*/ -#if _SL_INCLUDE_FUNC(sl_WlanPolicyGet) -_i16 sl_WlanPolicyGet(_u8 Type , _u8 Policy,_u8 *pVal,_u8 *pValLen); -#endif -/*! - \brief Gets the WLAN scan operation results - - Gets scan results , gets entry from scan result table - - \param[in] Index - Starting index identifier (range 0-19) for getting scan results - \param[in] Count - How many entries to fetch. Max is (20-"Index"). - \param[out] pEntries - pointer to an allocated Sl_WlanNetworkEntry_t. - the number of array items should match "Count" - sec_type: SL_SCAN_SEC_TYPE_OPEN, SL_SCAN_SEC_TYPE_WEP, SL_SCAN_SEC_TYPE_WPA or SL_SCAN_SEC_TYPE_WPA2 - - - \return Number of valid networks list items - - \sa - \note belongs to \ref ext_api - \warning This command do not initiate any active scanning action - \par Example: - \code An example of fetching max 10 results: - - Sl_WlanNetworkEntry_t netEntries[10]; - _i16 resultsCount = sl_WlanGetNetworkList(0,10,&netEntries[0]); - for(i=0; i< resultsCount; i++) - { - printf("%s\n",netEntries[i].ssid); - } - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_WlanGetNetworkList) -_i16 sl_WlanGetNetworkList(_u8 Index, _u8 Count, Sl_WlanNetworkEntry_t *pEntries); -#endif - -/*! - \brief Start collecting wlan RX statistics, for unlimited time. - - \return On success, zero is returned. On error, -1 is returned - - \sa sl_WlanRxStatStop sl_WlanRxStatGet - \note belongs to \ref ext_api - \warning This API is deprecated and should be removed for next release - \par Example: - \code Getting wlan RX statistics: - - void RxStatCollectTwice() - { - SlGetRxStatResponse_t rxStat; - _i16 rawSocket; - _i8 DataFrame[200]; - struct SlTimeval_t timeval; - timeval.tv_sec = 0; // Seconds - timeval.tv_usec = 20000; // Microseconds. 10000 microseconds resolution - - sl_WlanRxStatStart(); // set statistics mode - - rawSocket = sl_Socket(SL_AF_RF, SL_SOCK_RAW, eChannel); - // set timeout - in case we have no activity for the specified channel - sl_SetSockOpt(rawSocket,SL_SOL_SOCKET,SL_SO_RCVTIMEO, &timeval, sizeof(timeval)); // Enable receive timeout - status = sl_Recv(rawSocket, DataFrame, sizeof(DataFrame), 0); - - Sleep(1000); // sleep for 1 sec - sl_WlanRxStatGet(&rxStat,0); // statistics has been cleared upon read - Sleep(1000); // sleep for 1 sec - sl_WlanRxStatGet(&rxStat,0); - - } - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_WlanRxStatStart) -_i16 sl_WlanRxStatStart(void); -#endif - - -/*! - \brief Stop collecting wlan RX statistic, (if previous called sl_WlanRxStatStart) - - \return On success, zero is returned. On error, -1 is returned - - \sa sl_WlanRxStatStart sl_WlanRxStatGet - \note belongs to \ref ext_api - \warning This API is deprecated and should be removed for next release -*/ -#if _SL_INCLUDE_FUNC(sl_WlanRxStatStop) -_i16 sl_WlanRxStatStop(void); -#endif - - -/*! - \brief Get wlan RX statistics. upon calling this command, the statistics counters will be cleared. - - \param[in] Flags should be 0 ( not applicable right now, will be added the future ) - \param[in] pRxStat a pointer to SlGetRxStatResponse_t filled with Rx statistics results - \return On success, zero is returned. On error, -1 is returned - - \sa sl_WlanRxStatStart sl_WlanRxStatStop - \note belongs to \ref ext_api - \warning -*/ -#if _SL_INCLUDE_FUNC(sl_WlanRxStatGet) -_i16 sl_WlanRxStatGet(SlGetRxStatResponse_t *pRxStat,_u32 Flags); -#endif - - -/*! - \brief Stop Smart Config procedure. Once Smart Config will be stopped, - Asynchronous event will be received - SL_OPCODE_WLAN_SMART_CONFIG_STOP_ASYNC_RESPONSE. - - \param[in] none - \param[out] none - - \return 0 - if Stop Smart Config is about to be executed without errors. - - \sa sl_WlanSmartConfigStart - \note belongs to \ref ext_api - \warning This API is deprecated and should be removed for next release - -*/ -#if _SL_INCLUDE_FUNC(sl_WlanSmartConfigStop) -_i16 sl_WlanSmartConfigStop(void); -#endif - -/*! - \brief Start Smart Config procedure - \par - The target of the procedure is to let the \n - device to gain the network parameters: SSID and Password (if network is secured) \n - and to connect to it once located in the network range. \n - An external application should be used on a device connected to any mobile network. \n - The external application will transmit over the air the network parameters in secured manner.\n - The Password may be decrypted using a Key. \n - The decryption method may be decided in the command or embedded in the Flash. \n - The procedure can be activated for 1-3 group ID in the range of BIT_0 - BIT_15 where the default group ID id 0 (BIT_0) \n - Once Smart Config has ended successfully, Asynchronous event will be received - \n - SL_OPCODE_WLAN_SMART_CONFIG_START_ASYNC_RESPONSE. \n - The Event will hold the SSID and an extra field that might have been delivered as well (i.e. - device name) - - \param[in] groupIdBitmask - each bit represent a group ID that should be searched. - The Default group ID id BIT_0. 2 more group can be searched - in addition. The range is BIT_0 - BIT_15. - \param[in] chiper - 0: check in flash, 1 - AES, 0xFF - do not check in flash - \param[in] publicKeyLen - public key len (used for the default group ID - BIT_0) - \param[in] group1KeyLen - group ID1 length - \param[in] group2KeyLen - group ID2 length - \param[in] publicKey - public key (used for the default group ID - BIT_0) - \param[in] group1Key - group ID1 key - \param[in] group2Key - group ID2 key - - \param[out] none - - \return 0 - if Smart Config started successfully. - - \sa sl_WlanSmartConfigStop - \note belongs to \ref ext_api - \warning - \par - \code An example of starting smart Config on group ID's 0 + 1 + 2 - - sl_WlanSmartConfigStart(7, //group ID's (BIT_0 | BIT_1 | BIT_2) - 1, //decrypt key by AES method - 16, //decryption key length for group ID0 - 16, //decryption key length for group ID1 - 16, //decryption key length for group ID2 - "Key0Key0Key0Key0", //decryption key for group ID0 - "Key1Key1Key1Key1", //decryption key for group ID1 - "Key2Key2Key2Key2" //decryption key for group ID2 - ); - \endcode -*/ -#if _SL_INCLUDE_FUNC(sl_WlanSmartConfigStart) -_i16 sl_WlanSmartConfigStart(const _u32 groupIdBitmask, - const _u8 cipher, - const _u8 publicKeyLen, - const _u8 group1KeyLen, - const _u8 group2KeyLen, - const _u8* publicKey, - const _u8* group1Key, - const _u8* group2Key); -#endif - - -/*! - \brief Wlan set mode - - Setting WLAN mode - - \param[in] mode - WLAN mode to start the CC31xx device. Possible options are: - - ROLE_STA - for WLAN station mode - - ROLE_AP - for WLAN AP mode - - ROLE_P2P -for WLAN P2P mode - \return 0 - if mode was set correctly - \sa sl_Start sl_Stop - \note belongs to \ref ext_api - \warning After setting the mode the system must be restarted for activating the new mode - \par Example: - \code - //Switch from any role to STA: - sl_WlanSetMode(ROLE_STA); - sl_Stop(0); - sl_Start(NULL,NULL,NULL); - \endcode - -*/ -#if _SL_INCLUDE_FUNC(sl_WlanSetMode) -_i16 sl_WlanSetMode(const _u8 mode); -#endif - - -/*! - \brief Internal function for setting WLAN configurations - - \return On success, zero is returned. On error one of the following error codes returned: - - CONF_ERROR (-1) - - CONF_NVMEM_ACCESS_FAILED (-2) - - CONF_OLD_FILE_VERSION (-3) - - CONF_ERROR_NO_SUCH_COUNTRY_CODE (-4) - - - \param[in] ConfigId - configuration id - - <b>SL_WLAN_CFG_AP_ID</b> - - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b> - - <b>SL_WLAN_CFG_P2P_PARAM_ID</b> - - \param[in] ConfigOpt - configurations option - - <b>SL_WLAN_CFG_AP_ID</b> - - <b>WLAN_AP_OPT_SSID</b> \n - Set SSID for AP mode. \n - This options takes <b>_u8</b> buffer as parameter - - <b>WLAN_AP_OPT_CHANNEL</b> \n - Set channel for AP mode. \n - The channel is dependant on the country code which is set. i.e. for "US" the channel should be in the range of [1-11] \n - This option takes <b>_u8</b> as a parameter - - <b>WLAN_AP_OPT_HIDDEN_SSID</b> \n - Set Hidden SSID Mode for AP mode.Hidden options: \n - 0: disabled \n - 1: Send empty (length=0) SSID in beacon and ignore probe request for broadcast SSID \n - 2: Clear SSID (ASCII 0), but keep the original length (this may be required with some \n - clients that do not support empty SSID) and ignore probe requests for broadcast SSID \n - This option takes <b>_u8</b> as a parameter - - <b>WLAN_AP_OPT_SECURITY_TYPE</b> \n - Set Security type for AP mode. Security options are: - - Open security: SL_SEC_TYPE_OPEN - - WEP security: SL_SEC_TYPE_WEP - - WPA security: SL_SEC_TYPE_WPA_WPA2 \n - This option takes <b>_u8</b> pointer as a parameter - - <b>WLAN_AP_OPT_PASSWORD</b> \n - Set Password for for AP mode (for WEP or for WPA): \n - Password - for WPA: 8 - 63 characters \n - for WEP: 5 / 13 characters (ascii) \n - This options takes <b>_u8</b> buffer as parameter - - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b> - - <b>WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE</b> \n - Set Country Code for AP mode \n - This options takes <b>_u8</b> 2 bytes buffer as parameter - - <b>WLAN_GENERAL_PARAM_OPT_STA_TX_POWER</b> \n - Set STA mode Tx power level \n - Number between 0-15, as dB offset from max power (0 will set MAX power) \n - This options takes <b>_u8</b> as parameter - - <b>WLAN_GENERAL_PARAM_OPT_AP_TX_POWER</b> - Set AP mode Tx power level \n - Number between 0-15, as dB offset from max power (0 will set MAX power) \n - This options takes <b>_u8</b> as parameter - - <b>WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT</b> - Set Info Element for AP mode. \n - The Application can set up to MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED info elements per Role (AP / P2P GO). \n - To delete an info element use the relevant index and length = 0. \n - The Application can set up to MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED to the same role. \n - However, for AP - no more than INFO_ELEMENT_MAX_TOTAL_LENGTH_AP bytes can be stored for all info elements. \n - For P2P GO - no more than INFO_ELEMENT_MAX_TOTAL_LENGTH_P2P_GO bytes can be stored for all info elements. \n - This option takes sl_protocol_WlanSetInfoElement_t as parameter - - <b>SL_WLAN_CFG_P2P_PARAM_ID</b> - - <b>WLAN_P2P_OPT_DEV_TYPE</b> \n - Set P2P Device type.Maximum length of 17 characters. Device type is published under P2P I.E, \n - allows to make devices easier to recognize. \n - In case no device type is set, the default type is "1-0050F204-1" \n - This options takes <b>_u8</b> buffer as parameter - - <b>WLAN_P2P_OPT_CHANNEL_N_REGS</b> \n - Set P2P Channels. \n - listen channel (either 1/6/11 for 2.4GHz) \n - listen regulatory class (81 for 2.4GHz) \n - oper channel (either 1/6/11 for 2.4GHz) \n - oper regulatory class (81 for 2.4GHz) \n - listen channel and regulatory class will determine the device listen channel during p2p find listen phase \n - oper channel and regulatory class will determine the operating channel preferred by this device (in case it is group owner this will be the operating channel) \n - channels should be one of the social channels (1/6/11). In case no listen/oper channel selected, a random 1/6/11 will be selected. - This option takes pointer to <b>_u8[4]</b> as parameter - - \param[in] ConfigLen - configurations len - - \param[in] pValues - configurations values - - \sa - \note - \warning - \par Examples: - \par - <b> WLAN_AP_OPT_SSID: </b> - \code - _u8 str[33]; - memset(str, 0, 33); - memcpy(str, ssid, len); // ssid string of 32 characters - sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_SSID, strlen(ssid), str); - \endcode - \par - <b> WLAN_AP_OPT_CHANNEL: </b> - \code - _u8 val = channel; - sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_CHANNEL, 1, (_u8 *)&val); - \endcode - \par - <b> WLAN_AP_OPT_HIDDEN_SSID: </b> - \code - _u8 val = hidden; - sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_HIDDEN_SSID, 1, (_u8 *)&val); - \endcode - \par - <b> WLAN_AP_OPT_SECURITY_TYPE: </b> - \code - _u8 val = SL_SEC_TYPE_WPA_WPA2; - sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_SECURITY_TYPE, 1, (_u8 *)&val); - \endcode - \par - <b> WLAN_AP_OPT_PASSWORD: </b> - \code - _u8 str[65]; - _u16 len = strlen(password); - memset(str, 0, 65); - memcpy(str, password, len); - sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_PASSWORD, len, (_u8 *)str); - \endcode - \par - <b> WLAN_GENERAL_PARAM_OPT_STA_TX_POWER: </b> - \code - _u8 stapower=(_u8)power; - sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_STA_TX_POWER,1,(_u8 *)&stapower); - \endcode - \par - <b> WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE: </b> - \code - _u8* str = (_u8 *) country; // string of 2 characters. i.e. - "US" - sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE, 2, str); - \endcode - \par - <b> WLAN_GENERAL_PARAM_OPT_AP_TX_POWER: </b> - \code - _u8 appower=(_u8)power; - sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_AP_TX_POWER,1,(_u8 *)&appower); - \endcode - \par - <b> WLAN_P2P_OPT_DEV_TYPE: </b> - \code - _u8 str[17]; - _u16 len = strlen(device_type); - memset(str, 0, 17); - memcpy(str, device_type, len); - sl_WlanSet(SL_WLAN_CFG_P2P_PARAM_ID, WLAN_P2P_OPT_DEV_TYPE, len, str); - \endcode - \par - <b> WLAN_P2P_OPT_CHANNEL_N_REGS: </b> - \code - _u8 str[4]; - str[0] = (_u8)11; // listen channel - str[1] = (_u8)81; // listen regulatory class - str[2] = (_u8)6; // oper channel - str[3] = (_u8)81; // oper regulatory class - sl_WlanSet(SL_WLAN_CFG_P2P_PARAM_ID, WLAN_P2P_OPT_CHANNEL_N_REGS, 4, str); - \endcode - \par - <b> WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT: </b> - \code - sl_protocol_WlanSetInfoElement_t infoele; - infoele.index = Index; // Index of the info element. range: 0 - MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED - infoele.role = Role; // INFO_ELEMENT_AP_ROLE (0) or INFO_ELEMENT_P2P_GO_ROLE (1) - infoele.ie.id = Id; // Info element ID. if INFO_ELEMENT_DEFAULT_ID (0) is set, ID will be set to 221. - // Organization unique ID. If all 3 bytes are zero - it will be replaced with 08,00,28. - infoele.ie.oui[0] = Oui0; // Organization unique ID first Byte - infoele.ie.oui[1] = Oui1; // Organization unique ID second Byte - infoele.ie.oui[2] = Oui2; // Organization unique ID third Byte - infoele.ie.length = Len; // Length of the info element. must be smaller than 253 bytes - memset(infoele.ie.data, 0, INFO_ELEMENT_MAX_SIZE); - if ( Len <= INFO_ELEMENT_MAX_SIZE ) - { - memcpy(infoele.ie.data, IE, Len); // Info element. length of the info element is [0-252] - sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT,sizeof(sl_protocol_WlanSetInfoElement_t),(_u8* ) &infoele); - } - sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT,sizeof(sl_protocol_WlanSetInfoElement_t),(_u8* ) &infoele); - \endcode - -*/ -#if _SL_INCLUDE_FUNC(sl_WlanSet) -_i16 sl_WlanSet(_u16 ConfigId ,_u16 ConfigOpt,_u16 ConfigLen, _u8 *pValues); -#endif - -/*! - \brief Internal function for getting WLAN configurations - - \return On success, zero is returned. On error, -1 is - returned - - \param[in] ConfigId - configuration id - - <b>SL_WLAN_CFG_AP_ID</b> - - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b> - - <b>SL_WLAN_CFG_P2P_PARAM_ID</b> - - \param[out] pConfigOpt - get configurations option - - <b>SL_WLAN_CFG_AP_ID</b> - - <b>WLAN_AP_OPT_SSID</b> \n - Get SSID for AP mode. \n - Get up to 32 characters of SSID \n - This options takes <b>_u8</b> as parameter - - <b>WLAN_AP_OPT_CHANNEL</b> \n - Get channel for AP mode. \n - This option takes <b>_u8</b> as a parameter - - <b>WLAN_AP_OPT_HIDDEN_SSID</b> \n - Get Hidden SSID Mode for AP mode.Hidden options: \n - 0: disabled \n - 1: Send empty (length=0) SSID in beacon and ignore probe request for broadcast SSID \n - 2: Clear SSID (ASCII 0), but keep the original length (this may be required with some \n - clients that do not support empty SSID) and ignore probe requests for broadcast SSID \n - This option takes <b>_u8</b> as a parameter - - <b>WLAN_AP_OPT_SECURITY_TYPE</b> \n - Get Security type for AP mode. Security options are: - - Open security: SL_SEC_TYPE_OPEN - - WEP security: SL_SEC_TYPE_WEP - - WPA security: SL_SEC_TYPE_WPA_WPA2 \n - This option takes <b>_u8</b> as a parameter - - <b>WLAN_AP_OPT_PASSWORD</b> \n - Get Password for for AP mode (for WEP or for WPA): \n - Returns password - string, fills up to 64 characters. \n - This options takes <b>_u8</b> buffer as parameter - - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b> - - <b> WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS </b> \n - Get scan parameters. - This option uses slWlanScanParamCommand_t as parameter - - <b>WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE</b> \n - Get Country Code for AP mode \n - This options takes <b>_u8</b> buffer as parameter - - <b>WLAN_GENERAL_PARAM_OPT_STA_TX_POWER</b> \n - Get STA mode Tx power level \n - Number between 0-15, as dB offset from max power (0 indicates MAX power) \n - This options takes <b>_u8</b> as parameter - - <b>WLAN_GENERAL_PARAM_OPT_AP_TX_POWER</b> - Get AP mode Tx power level \n - Number between 0-15, as dB offset from max power (0 indicates MAX power) \n - This options takes <b>_u8</b> as parameter - - <b>SL_WLAN_CFG_P2P_PARAM_ID</b> - - <b>WLAN_P2P_OPT_CHANNEL_N_REGS</b> \n - Get P2P Channels. \n - listen channel (either 1/6/11 for 2.4GHz) \n - listen regulatory class (81 for 2.4GHz) \n - oper channel (either 1/6/11 for 2.4GHz) \n - oper regulatory class (81 for 2.4GHz) \n - listen channel and regulatory class will determine the device listen channel during p2p find listen phase \n - oper channel and regulatory class will determine the operating channel preferred by this device (in case it is group owner this will be the operating channel) \n - channels should be one of the social channels (1/6/11). In case no listen/oper channel selected, a random 1/6/11 will be selected. \n - This option takes pointer to <b>_u8[4]</b> as parameter - - \param[out] pConfigLen - The length of the allocated memory as input, when the - function complete, the value of this parameter would be - the len that actually read from the device. - If the device return length that is longer from the input - value, the function will cut the end of the returned structure - and will return SL_ESMALLBUF. - - - \param[out] pValues - get configurations values - - \sa sl_WlanSet - - \note - - \warning - - \par Examples: - \par - <b> WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS: </b> - \code - slWlanScanParamCommand_t ScanParamConfig; - _u16 Option = WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS; - _u16 OptionLen = sizeof(slWlanScanParamCommand_t); - sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID ,&Option,&OptionLen,(_u8 *)&ScanParamConfig); - \endcode - \par - <b> WLAN_GENERAL_PARAM_OPT_AP_TX_POWER: </b> - \code - _i16 TXPower = 0; - _u16 Option = WLAN_GENERAL_PARAM_OPT_AP_TX_POWER; - _u16 OptionLen = sizeof(_i16); - sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID ,&Option,&OptionLen,(_u8 *)&TXPower); - \endcode - \par - <b> WLAN_GENERAL_PARAM_OPT_STA_TX_POWER: </b> - \code - _i16 TXPower = 0; - _u16 Option = WLAN_GENERAL_PARAM_OPT_STA_TX_POWER; - _u16 OptionLen = sizeof(_i16); - - sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID ,&Option,&OptionLen,(_u8 *)&TXPower); - \endcode - \par - <b> WLAN_P2P_OPT_DEV_TYPE: </b> - \code - _i8 device_type[18]; - _u16 len = 18; - _u16 config_opt = WLAN_P2P_OPT_DEV_TYPE; - sl_WlanGet(SL_WLAN_CFG_P2P_PARAM_ID, &config_opt , &len, (_u8* )device_type); - \endcode - \par - <b> WLAN_AP_OPT_SSID: </b> - \code - _i8 ssid[32]; - _u16 len = 32; - _u16 config_opt = WLAN_AP_OPT_SSID; - sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt , &len, (_u8* )ssid); - \endcode - \par - <b> WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE: </b> - \code - _i8 country[3]; - _u16 len = 3; - _u16 config_opt = WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE; - sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID, &config_opt, &len, (_u8* )country); - \endcode - \par - <b> WLAN_AP_OPT_CHANNEL: </b> - \code - _i8 channel; - _u16 len = 1; - _u16 config_opt = WLAN_AP_OPT_CHANNEL; - sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )&channel); - \endcode - \par - <b> WLAN_AP_OPT_HIDDEN_SSID: </b> - \code - _u8 hidden; - _u16 len = 1; - _u16 config_opt = WLAN_AP_OPT_HIDDEN_SSID; - sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )&hidden); - \endcode - \par - <b> WLAN_AP_OPT_SECURITY_TYPE: </b> - \code - _u8 sec_type; - _u16 len = 1; - _u16 config_opt = WLAN_AP_OPT_SECURITY_TYPE; - sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )&sec_type); - \endcode - \par - <b> WLAN_AP_OPT_PASSWORD: </b> - \code - _u8 password[64]; - _u16 len = 64; - memset(password,0,64); - _u16 config_opt = WLAN_AP_OPT_PASSWORD; - sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )password); - - \endcode - \par - <b> WLAN_P2P_OPT_CHANNEL_N_REGS: </b> - \code - _u16 listen_channel,listen_reg,oper_channel,oper_reg; - _u16 len = 4; - _u16 config_opt = WLAN_P2P_OPT_CHANNEL_N_REGS; - _u8 channel_n_regs[4]; - sl_WlanGet(SL_WLAN_CFG_P2P_PARAM_ID, &config_opt, &len, (_u8* )channel_n_regs); - listen_channel = channel_n_regs[0]; - listen_reg = channel_n_regs[1]; - oper_channel = channel_n_regs[2]; - oper_reg = channel_n_regs[3]; - \endcode -*/ - -#if _SL_INCLUDE_FUNC(sl_WlanGet) -_i16 sl_WlanGet(_u16 ConfigId, _u16 *pConfigOpt,_u16 *pConfigLen, _u8 *pValues); -#endif -/*! - - Close the Doxygen group. - @} - - */ - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __WLAN_H__ */ - diff --git a/cc3200/simplelink/include/wlan_rx_filters.h b/cc3200/simplelink/include/wlan_rx_filters.h deleted file mode 100644 index df48ff560..000000000 --- a/cc3200/simplelink/include/wlan_rx_filters.h +++ /dev/null @@ -1,930 +0,0 @@ -/* - * wlan_rx_filters.h - CC31xx/CC32xx Host Driver Implementation - * - * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - * -*/ - -#ifndef RX_FILTERS_PREPROCESSOR_CLI_IF_H_ -#define RX_FILTERS_PREPROCESSOR_CLI_IF_H_ - - -/*****************************************************************************/ -/* Include files */ -/*****************************************************************************/ -#include "simplelink.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/*****************************************************************************/ -/* Macro declarations */ -/*****************************************************************************/ - -/*! - * \def SL_RX_FILTER_MAX_FILTERS - * The Max number of filters for 64 filters - */ -#define SL_RX_FILTER_MAX_FILTERS 64 - -/*! - * \def SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS - * The Max number of software filters - */ -#define SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS (32) -/*! - * \def SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - * - */ -#define SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS (2) -/*! - * \def SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS - * - */ -#define SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS (2) -/*! - * \def SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS - * - */ -#define SL_RX_FILTER_NUM_OF_COMBINATION_TYPE_ARGS (2) -/*! - * \def SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH - * - */ -#define SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH (32) - - -/* List of possible error numbers */ -#define RXFL_OK (0) /* O.K */ -#define RXFL_OUTPUT_OR_INPUT_BUFFER_LENGTH_TOO_SMALL (76) /* ! The output buffer length is smaller than required for that operation */ -#define RXFL_DEPENDENT_FILTER_SOFTWARE_FILTER_NOT_FIT (75) /* Node filter can't be child of software filter and vice_versa */ -#define RXFL_DEPENDENCY_IS_NOT_PERSISTENT (74) /* Dependency filter is not persistent */ -#define RXFL_SYSTEM_STATE_NOT_SUPPORTED_FOR_THIS_FILTER (72) /* System state is not supported */ -#define RXFL_TRIGGER_USE_REG5_TO_REG8 (71) /* Only counters 5 - 8 are allowed, for Tigger */ -#define RXFL_TRIGGER_USE_REG1_TO_REG4 (70) /* Only counters 1 - 4 are allowed, for trigger */ -#define RXFL_ACTION_USE_REG5_TO_REG8 (69) /* Only counters 5 - 8 are allowed, for action */ -#define RXFL_ACTION_USE_REG1_TO_REG4 (68) /* Only counters 1 - 4 are allowed, for action */ -#define RXFL_FIELD_SUPPORT_ONLY_EQUAL_AND_NOTEQUAL (67) /* Rule compare function Id is out of range */ -#define RXFL_WRONG_MULTICAST_BROADCAST_ADDRESS (66) /* The address should be of type mutlicast or broadcast */ -#define RXFL_THE_FILTER_IS_NOT_OF_HEADER_TYPE (65) /* The filter should be of header type */ -#define RXFL_WRONG_COMPARE_FUNC_FOR_BROADCAST_ADDRESS (64) /* The compare funcion is not suitable for broadcast address */ -#define RXFL_WRONG_MULTICAST_ADDRESS (63) /* The address should be of muticast type */ -#define RXFL_DEPENDENT_FILTER_IS_NOT_PERSISTENT (62) /* The dependency filter is not persistent */ -#define RXFL_DEPENDENT_FILTER_IS_NOT_ENABLED (61) /* The dependency filter is not enabled */ -#define RXFL_FILTER_HAS_CHILDS (60) /* The filter has childs and can't be removed */ -#define RXFL_CHILD_IS_ENABLED (59) /* Can't disable filter while the child is enabled */ -#define RXFL_DEPENDENCY_IS_DISABLED (58) /* Can't enable filetr in case its depndency filter is disabled */ -#define RXFL_NUMBER_OF_CONNECTION_POINTS_EXCEEDED (52) /* Number of connection points exceeded */ -#define RXFL_DEPENDENT_FILTER_DEPENDENCY_ACTION_IS_DROP (51) /* The dependent filter has Drop action, thus the filter can't be created */ -#define RXFL_FILTER_DO_NOT_EXISTS (50) /* The filter doesn't exists */ -#define RXFL_DEPEDENCY_NOT_ON_THE_SAME_LAYER (49) /* The filter and its dependency must be on the same layer */ -#define RXFL_NUMBER_OF_ARGS_EXCEEDED (48) /* Number of arguments excceded */ -#define RXFL_ACTION_NO_REG_NUMBER (47) /* Action require counter number */ -#define RXFL_DEPENDENT_FILTER_LAYER_DO_NOT_FIT (46) /* the filter and its dependency should be from the same layer */ -#define RXFL_DEPENDENT_FILTER_SYSTEM_STATE_DO_NOT_FIT (45) /* The filter and its dependency system state don't fit */ -#define RXFL_DEPENDENT_FILTER_DO_NOT_EXIST_2 (44) /* The parent filter don't exist */ -#define RXFL_DEPENDENT_FILTER_DO_NOT_EXIST_1 (43) /* The parent filter is null */ -#define RXFL_RULE_HEADER_ACTION_TYPE_NOT_SUPPORTED (42) /* The action type is not supported */ -#define RXFL_RULE_HEADER_TRIGGER_COMPARE_FUNC_OUT_OF_RANGE (41) /* The Trigger comparision function is out of range */ -#define RXFL_RULE_HEADER_TRIGGER_OUT_OF_RANGE (40) /* The Trigger is out of range */ -#define RXFL_RULE_HEADER_COMPARE_FUNC_OUT_OF_RANGE (39) /* The rule compare function is out of range */ -#define RXFL_FRAME_TYPE_NOT_SUPPORTED (38) /* ASCII frame type string is illegal */ -#define RXFL_RULE_FIELD_ID_NOT_SUPPORTED (37) /* Rule field ID is out of range */ -#define RXFL_RULE_HEADER_FIELD_ID_ASCII_NOT_SUPPORTED (36) /* This ASCII field ID is not supported */ -#define RXFL_RULE_HEADER_NOT_SUPPORTED (35) /* The header rule is not supported on current release */ -#define RXFL_RULE_HEADER_OUT_OF_RANGE (34) /* The header rule is out of range */ -#define RXFL_RULE_HEADER_COMBINATION_OPERATOR_OUT_OF_RANGE (33) /* Combination function Id is out of ramge */ -#define RXFL_RULE_HEADER_FIELD_ID_OUT_OF_RANGE (32) /* rule field Id is out of range */ -#define RXFL_UPDATE_NOT_SUPPORTED (31) /* Update not supported */ -#define RXFL_NO_FILTERS_ARE_DEFINED (24) /* No filters are defined in the system */ -#define RXFL_NUMBER_OF_FILTER_EXCEEDED (23) /* Number of max filters excceded */ - - -/******************************************************************************/ -/* Type declarations */ -/******************************************************************************/ - -/*! - - - * \typedef SlrxFilterID_t - * Unique filter ID which is allocated by the system , negative number means error - */ -typedef _i8 SlrxFilterID_t; - - -/*! - * \typedef SlrxFilterCompareMask_t - * The mask is used for the rule comparison function - */ -typedef _u8 SlrxFilterCompareMask_t; - -/*! - * \typedef SlrxFilterIdMask_t - * Representation of filters Id as a bit field - * The bit field is used to declare which filters are involved - * in operation. Number of filter can be up to 128 filters. i.e. 128 bits are needed. - * On the current release, up to 64 filters can be defined. - */ -typedef _u8 SlrxFilterIdMask_t[128/8]; - -/*! - * \typedef SlrxFilterPrePreparedFilters_t - * Describes the supported software filter sets, - */ -typedef _u8 SlrxFilterPrePreparedFilters_t; -#define SL_ARP_AUTO_REPLY_PRE_PREPARED_FILTERS (0) -#define SL_MULTICASTSIPV4_DROP_PREPREPARED_FILTERS (1) -#define SL_MULTICASTSIPV6_DROP_PREPREPARED_FILTERS (2) -#define SL_MULTICASTSWIFI_DROP_PREPREPARED_FILTERS (3) - - - -/*! - * \typedef SlrxFilterPrePreparedFiltersMask_t - * Describes the supported software filter sets, - * each bit represents different software filter set - * The filter sets are defined at SlrxFilterPrePreparedFilters_t - */ -typedef _u8 SlrxFilterPrePreparedFiltersMask_t[SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS/8]; - - -/*! \typedef SlrxFilterRegxPattern_t - * The struct contains the regular expression pattern which is used in case of payload rule. - * Not supported in the current release - */ -typedef struct SlrxFilterRegxPattern_t -{ - _u8 x[SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH]; -}SlrxFilterRegxPattern_t; - - -/*! \typedef SlrxFilterAsciiArg_t - * The buffer is used to provide container for ASCII argument, which may be used in case of HEADER rule. - * example for ASCII argument can be : IP = 256.0.67.1 - */ -typedef _u8 SlrxFilterAsciiArg_t; - - -/*! \typedef SlrxFilterBinaryArg_t - * The buffer provides container for binary argument, which may be used in case of HEADER rule - */ -typedef _u8 SlrxFilterBinaryArg_t ; - - -/*! \typedef SlrxFilterActionArg_t - * Provides container for the filter action argument. - * for example: in case action is to send automatic response , the argument is the template to be used for the automatic response. - * - * - */ -typedef _u8 SlrxFilterActionArg_t ; - - - -/*! \typedef SlrxFilterOffset_t - * The offset relative to the packet payload start location. - * Not supported on current release - */ -typedef _u32 SlrxFilterOffset_t; - - - -/*! \typedef SlrxFilterRuleType_t - * Enumerates the different filter types. - * On the current release only HEADER and COMBINATION are supported. - */ -typedef _u8 SlrxFilterRuleType_t; -/* possible values for SlrxFilterRuleType_t */ -#define HEADER (0) -#define COMBINATION (1) -#define EXACT_PATTERN (2) -#define LIKELIHOOD_PATTERN (3) -#define ALWAYS_TRUE (4) -#define NUM_OF_FILTER_TYPES (5) - - -/*! \typedef SlrxFilterFlags_t - * Bit field which sets the behaviour of the RX filter - * - */ - -#define RX_FILTER_BINARY (0x1) -#define RX_FILTER_PERSISTENT (0x8) -#define RX_FILTER_ENABLE (0x10) - -typedef union SlrxFilterFlags_t -{ - - /* struct - { */ - /*! - * The filter argument can be set as binary argument or ASCII arguments. - * When the bit is on the argument are binary. - */ - /* _u8 Binary: 1; */ - /*! - * - */ - /* _u8 AutoSort : 1; */ - /*! - * - */ - /* _u8 AutoFaultDetect : 1; */ - /*! - * When the bit is on it means the the node is enabled . - */ - /* _u8 Enabled : 1; */ - /* _u8 padding : 3; */ - /* - };*/ - - _u8 IntRepresentation; - -}SlrxFilterFlags_t; - -/*! \typedef SlrxFilterCompareFunction_t - * Used as comparison function for the header type arguments - * - */ -typedef _u8 SlrxFilterCompareFunction_t; -/* Possible values for SlrxFilterCompareFunction_t */ -#define COMPARE_FUNC_IN_BETWEEN (0) -#define COMPARE_FUNC_EQUAL (1) -#define COMPARE_FUNC_NOT_EQUAL_TO (2) -#define COMPARE_FUNC_NOT_IN_BETWEEN (3) -#define COMPARE_FUNC_NUM_OF_FILTER_COMPARE_FUNC (4) - -/*! \typedef SlrxFilterCompareFunction_t - * Used as comparison function for the header type arguments - * - */ -typedef _u8 SlrxTriggerCompareFunction_t; -/* Possible values for SlrxTriggerCompareFunction_t */ -#define TRIGGER_COMPARE_FUNC_EQUAL (0) -/* arg1 == protocolVal ,not supported in current release */ -#define TRIGGER_COMPARE_FUNC_NOT_EQUAL_TO (1) -/* arg1 == protocolVal */ -#define TRIGGER_COMPARE_FUNC_SMALLER_THAN (2) -/* arg1 == protocolVal */ -#define TRIGGER_COMPARE_FUNC_BIGGER_THAN (3) -/* definition */ -#define TRIGGER_COMPARE_FUNC_NUM_OF_FILTER_COMPARE_FUNC (4) - - -/*! \typedef SlrxFilterHdrField_t - * Provides list of possible header types which may be defined as part of the rule - * - */ -typedef _u8 SlrxFilterHdrField_t; -/* Possible values for SlrxFilterHdrField_t */ -#define NULL_FIELD_ID_TYPE (0) -/* 802.11 control\data\management */ -#define FRAME_TYPE_FIELD (1) -/* 802.11 beacon\probe\.. */ -#define FRAME_SUBTYPE_FIELD (2) - /* 802.11 bssid type */ -#define BSSID_FIELD (3) - /* */ -#define MAC_SRC_ADDRESS_FIELD (4) - /* */ -#define MAC_DST_ADDRESS_FIELD (5) -/* */ -#define FRAME_LENGTH_FIELD (6) -/* */ -#define PROTOCOL_TYPE_FIELD (7) - /* */ -#define IP_VERSION_FIELD (8) - /* TCP / UDP */ -#define IP_PROTOCOL_FIELD (9) - /* */ -#define IPV4_SRC_ADRRESS_FIELD (10) -/* */ -#define IPV4_DST_ADDRESS_FIELD (11) -/* */ -#define IPV6_SRC_ADRRESS_FIELD (12) -/* */ -#define IPV6_DST_ADDRESS_FIELD (13) - /* */ -#define SRC_PORT_FIELD (14) - /* */ -#define DST_PORT_FIELD (15) - /* Definition */ -#define NUM_OF_FIELD_NAME_FIELD (16) - -/*! \union SlrxFilterHeaderArg_t - * The structure holds the header ARGS which are used in case of HDR rule. - */ -/* -- 36 bytes */ -typedef union SlrxFilterHeaderArg_t -{ - /*----------------------------- Large size ---------------------------------*/ - /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - * example : IPV6 16 bytes, 39 characters - * ipv6 Ascii address: 2001:0db8:3c4d:0015:0000:0000:abcd:ef12 - */ - - SlrxFilterBinaryArg_t RxFilterDB16BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][16 ]; /* Binary Values for comparition */ - /*! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - * example : IPV6 16 bytes, 39 characters - * ipv6 Ascii address: 2001:0db8:3c4d:0015:0000:0000:abcd:ef12 - * Ascii format for ipV6 is not supported - */ - /*----------------------------- Medium size ---------------------------------*/ - /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - * MAC address: 6 bytes, 17 chars - */ - SlrxFilterBinaryArg_t RxFilterDB6BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][6]; /* Binary Values for comparition */ - /*! - * ! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - * IP address: 4 bytes, 15 chars - * 2 bytes are added for padding - */ - SlrxFilterAsciiArg_t RxFilterDB18BytesAsciiRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][18]; /* Ascii Values for comparison */ - /*----------------------------- Small size ---------------------------------*/ - /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - * IP address: 4 bytes, 15 chars - * Port: 2 bytes, chars: 5 chars - */ - SlrxFilterBinaryArg_t RxFilterDB4BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][4]; /* Binary Values for comparison */ - /*! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - * Port: 2 bytes, chars: 5 chars - */ - SlrxFilterAsciiArg_t RxFilterDB5BytesRuleAsciiArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][5]; /* Ascii Values for comparison */ - /*----------------------------- 1 byte size ---------------------------------*/ - /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS - */ - SlrxFilterBinaryArg_t RxFilterDB1BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][1]; /* Binary Values for comparison */ -}SlrxFilterHeaderArg_t; - - - -/*! \typedef SlrxFilterRuleHeaderArgsAndMask_t - * Structure which defines the Header Args and mask - */ -/* -- 52 bytes */ -typedef struct SlrxFilterRuleHeaderArgsAndMask_t -{ - /*! Argument for the comparison function */ - /* -- 36 byte */ - SlrxFilterHeaderArg_t RuleHeaderArgs; - - /*! the mask is used in order to enable partial comparison, - * Use the 0xFFFFFFFF in case you don't want to use mask - */ - /* -- 16 bytes */ - SlrxFilterCompareMask_t RuleHeaderArgsMask[16]; - -}SlrxFilterRuleHeaderArgsAndMask_t; - -/*! \typedef SlrxFilterHeaderType_t - * Structure which defines the Header rule - * The header rule defines compare function on the protocol header - * For example destMacAddre is between ( 12:6::78:77, 12:6::78:90 ) - * - */ -/* -- 56 byte */ -typedef struct SlrxFilterHeaderType_t -{ - /*! see :: SlrxFilterRuleHeaderArgsAndMask_t */ - /* -- 52 bytes */ - SlrxFilterRuleHeaderArgsAndMask_t RuleHeaderArgsAndMask; - - /*! Packet HDR field which will be compared to the argument */ - /* -- 1 byte */ - SlrxFilterHdrField_t RuleHeaderfield; - - /* -- 1 byte */ - /*! type of the comparison function - * see :: SlrxFilterCompareFunction_t - */ - SlrxFilterCompareFunction_t RuleCompareFunc; - - /*! padding */ - /* -- 2 bytes */ - _u8 RulePadding[2]; - -}SlrxFilterHeaderType_t; - -/*! \typedef SlrxFilterPayloadType_t - * Structure which defines payload rule. - * Not supported on current release. - */ -/* -- 40 byte */ -typedef struct SlrxFilterPayloadType_t -{ - /*! Not supported on current release */ - /* -- 32 byte */ - SlrxFilterRegxPattern_t RegxPattern; - /*! Not supported on current release */ - /* -- 4 byte */ - SlrxFilterOffset_t LowerOffset; - /*! Not supported on current release */ - /* -- 4 byte */ - SlrxFilterOffset_t UpperOffset; -}SlrxFilterPayloadType_t; - -/*! \typedef SlrxFilterCombinationTypeOperator_t - * Enumerate the optional operators for the combination type - * filterID1 is located in the first arg , filterId2 is the second arg,see ::SlrxFilterCombinationType_t.CombinationFilterId - */ -typedef _u8 SlrxFilterCombinationTypeOperator_t; -/* Possible values for SlrxFilterCombinationTypeOperator_t */ -/*! !filterID1 */ -#define COMBINED_FUNC_NOT (0) -/*! filterID1 && filterID2 */ -#define COMBINED_FUNC_AND (1) -/*! filterID1 && filterID2 */ -#define COMBINED_FUNC_OR (2) - -/*! \typedef SlrxFilterCombinationType_t - * Defines the structure which define the combination type filter - * The combined filter enable to make operation on one or two filter, - * for example !filterId1 or and(filterId2,filterId3). - * - */ -/* -- 4 byte */ -typedef struct SlrxFilterCombinationType_t -{ - /* ! combination operator */ - /* -- 1 byte */ - SlrxFilterCombinationTypeOperator_t CombinationTypeOperator; - /* ! filterID, may be one or two depends on the combination operator type */ - /* -- 2 byte */ - SlrxFilterID_t CombinationFilterId[SL_RX_FILTER_NUM_OF_COMBINATION_TYPE_ARGS]; - /* ! Padding */ - /* -- 1 byte */ - _u8 Padding; -}SlrxFilterCombinationType_t; - - -/*! \typedef SlrxFilterRule_t - * Rule structure composed of behavioral flags and the filter rule definitions - * - */ -/* -- 56 byte */ -typedef union SlrxFilterRule_t -{ - /* ! Header type rule , see explanation on the ::SlrxFilterHeaderType_t structure */ - /* -- 56 byte */ - SlrxFilterHeaderType_t HeaderType; - /* ! Payload rule, not supported in current release */ - /* -- 40 byte */ - SlrxFilterPayloadType_t PayLoadHeaderType; /* future for exact pattern or like hood pattern */ - /* ! Combined type rule , see explanation in ::SlrxFilterCombinationType_t structure */ - /* -- 4 byte */ - SlrxFilterCombinationType_t CombinationType; -}SlrxFilterRule_t; - -/*! \typedef SlrxFilterTriggerRoles_t - * Bit field which represents the roleId possible values - * In the current release only Station/AP roles are supported. - */ -#define RX_FILTER_ROLE_AP (1) -#define RX_FILTER_ROLE_STA (2) -#define RX_FILTER_ROLE_PROMISCUOUS (4) -#define RX_FILTER_ROLE_NULL (0) - -typedef union SlrxFilterTriggerRoles_t -{ -/* struct */ -/* { */ -/* _u8 RoleAP :1; */ -/* _u8 RoleStation :1; */ - /* The filter is activated only in Promiscuous mode */ -/* _u8 PromiscuousMode :1; */ -/* _u8 RoleReserved :5; */ -/* }; */ - /* ! Bit fiels of the Filter role */ - _u8 IntRepresentation; - -}SlrxFilterTriggerRoles_t; - -/*! \typedef SlrxFilterTriggerConnectionStates_t - * Bit field representing the possible values of the When section of the rule - * - */ -#define RX_FILTER_CONNECTION_STATE_STA_CONNECTED (1) -#define RX_FILTER_CONNECTION_STATE_STA_NOT_CONNECTED (2) -#define RX_FILTER_CONNECTION_STATE_STA_HAS_IP (4) -#define RX_FILTER_CONNECTION_STATE_STA_HAS_NO_IP (8) - -typedef union SlrxFilterTriggerConnectionStates_t -{ -/* struct */ -/* { */ -/* _u8 RoleStationWiFiConnected :1; */ -/* _u8 RoleStationWiFiDisconneted:1; */ -/* _u8 RoleStationWiFiHasIp:1; */ -/* _u8 RoleStationWiFiHasNoIp:1; */ -/* _u8 RoleStationWiFiSocketOpened:1; */ -/* _u8 RoleStationWiFiSocketclosed:1; */ -/* }; */ -/* */ - /* ! */ - _u8 IntRepresentation; - -}SlrxFilterTriggerConnectionStates_t; - -/*! \typedef SlrxFilterDBTriggerArg_t - * Provides container for entering the filter 'when' argument. - * The current release support 'When rules' which has no arguments. - * For example : - * When connect to specific AP -- the AP bssid is the argument. - * - */ -typedef _u32 SlrxFilterDBTriggerArg_t; - - - -/*! \typedef SlrxFilterCounterId_t - * the counter ID we have 4 counters - */ -typedef _u8 SlrxFilterCounterId_t; -/* Possible values for SlrxFilterCounterId_t */ -#define NO_TRIGGER (0) -#define RX_FILTER_COUNTER1 (1) -#define RX_FILTER_COUNTER2 (2) -#define RX_FILTER_COUNTER3 (3) -#define RX_FILTER_COUNTER4 (4) -#define RX_FILTER_COUNTER5 (5) -#define RX_FILTER_COUNTER6 (6) -#define RX_FILTER_COUNTER7 (7) -#define RX_FILTER_COUNTER8 (8) -#define MAX_RX_FILTER_COUNTER (9) - - - -/*! \typedef SlrxFilterActionArgs_t - * Possible value for filter action args - * - */ - -typedef _u8 SlrxFilterActionArgs_t; -/* Possible values for SlrxFilterActionArgs_t */ -#define ACTION_ARG_REG_1_4 (0) - /* ! Can be use as counter */ -#define ACTION_ARG_TEMPLATE (1) - /* ! Can be use as counter */ -#define ACTION_ARG_EVENT (2) - -/* ! GPIO number */ -#define ACTION_ARG_GPIO (4) -/*! - * \def SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS - * - */ -#define SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS (5) - - - - -/*! \typedef SlrxFilterTrigger_t - * The filter trigger, determine when the filter is triggered, - * The filter is triggered in the following condition :\n - * 1. The filter parent is triggered\n - * 2. The requested connection type exists, i.e. wlan_connect\n - * 3. The filter role is the same as the system role\n - * - */ -/* -- 12 byte */ -typedef struct SlrxFilterTrigger_t -{ - /*! The parent filter ID, this is the way to build filter tree. */ - /* NULL value means tree root. - */ - /* -- 1 byte */ - SlrxFilterID_t ParentFilterID; - /* ! See ::SlrxFilterCounterId_t explanation */ - /* -- 1 byte */ - SlrxFilterCounterId_t Trigger; - /* ! See :: SlrxFilterTriggerConnectionStates_t */ - /* -- 1 byte */ - SlrxFilterTriggerConnectionStates_t TriggerArgConnectionState; - /* ! See ::SlrxFilterTriggerRoles_t */ - /* -- 1 byte */ - SlrxFilterTriggerRoles_t TriggerArgRoleStatus; - /* ! The Trigger arguments are in the same order as the Trigger bit field order. */ - /* -- 4 byte */ - SlrxFilterDBTriggerArg_t TriggerArg; - /** The compare function which will be operate for each bit that is turned on in the ::SlrxFilterTrigger_t.Trigger field, - * for example , in case the second bit in the Trigger function is on the second function in the list will be executed. - * - */ - /* -- 1 byte */ - SlrxTriggerCompareFunction_t TriggerCompareFunction; - - /* ! padding */ - /* -- 3 byte */ - _u8 Padding[3]; -} SlrxFilterTrigger_t; - -/*! \typedef SlrxFilterActionType_t - * The actions are executed only if the filter is matched,\n - * In case of false match the packet is transfered to the HOST. \n - * The action is composed of bit field structure, - * up to 2 actions can be defined per filter. - * - */ -#define RX_FILTER_ACTION_NULL (0x0) -#define RX_FILTER_ACTION_DROP (0x1) -#define RX_FILTER_ACTION_GPIO (0x2) -#define RX_FILTER_ACTION_ON_REG_INCREASE (0x4) -#define RX_FILTER_ACTION_ON_REG_DECREASE (0x8) -#define RX_FILTER_ACTION_ON_REG_RESET (0x10) -#define RX_FILTER_ACTION_SEND_TEMPLATE (0x20) /* unsupported */ -#define RX_FILTER_ACTION_EVENT_TO_HOST (0x40) /* unsupported */ - -typedef union SlrxFilterActionType_t -{ -/* struct */ -/* { */ - /* ! No action to execute the packet is dropped,drop is always on leaf. */ - /* ! If not dropped ,The packet is passed to the next filter or in case it is the last filter to the host */ -/* _u8 ActionDrop : 1; */ - /* ! Not Supported in the current release */ -/* _u8 ActionGpio : 1; */ - /*! action can increase counter registers. - * 1 = Increase - * 2 = decrease - * 3 = reset - */ -/* _u8 ActionOnREGIncrease : 1; */ -/* _u8 ActionOnREGDecrease : 1; */ -/* _u8 ActionOnREGReset : 1; */ - - /* ! Not Supported in the current release */ -/* _u8 ActionSendTemplate : 1; */ - /* ! Not Supported in the current release */ -/* _u8 ActionEventToHost: 1; */ -/* _u8 padding: 1; */ -/* }; */ - - _u8 IntRepresentation; - -}SlrxFilterActionType_t; - -/*! \typedef SlrxFilterAction_t - * Several actions can be defined,\n - * The action is executed in case the filter rule is matched. - */ -/* -- 8 byte */ -typedef struct SlrxFilterAction_t -{ - /* -- 1 byte */ - /* ! Determine which actions are supported */ - SlrxFilterActionType_t ActionType; - /* ! Buffer for the action arguments */ - /** - * <b>location 0</b> - The counter to increase - * In case the action is of type "increase" the arg will contain the counter number, - * The counter number values are as in ::SlrxFilterCounterId_t.\n - * <b>location 1</b> - The template arg.\n - * <b>location 2</b> - The event arg.\n - * - */ - /* -- 5 byte */ - SlrxFilterActionArg_t ActionArg[SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS]; - - /* ! Padding */ - /* - 2 Bytes */ - _u8 Padding[2]; - -} SlrxFilterAction_t; - - -/*! \struct _WlanRxFilterOperationCommandBuff_t - * The structure is used for the interface HOST NWP.\n - * The supported operation : \n - * ::ENABLE_DISABLE_RX_FILTER,\n - * ::REMOVE_RX_FILTER,\n - * - */ -/* 20 bytes */ -typedef struct _WlanRxFilterOperationCommandBuff_t -{ - /* -- 16 bytes */ - SlrxFilterIdMask_t FilterIdMask; - /* 4 bytes */ - _u8 Padding[4]; -}_WlanRxFilterOperationCommandBuff_t; - - - -/* -- 56 bytes */ -typedef struct _WlanRxFilterUpdateArgsCommandBuff_t -{ - /* -- 1 bytes */ - _u8 FilterId; - - /* -- 1 bytes */ - /* ! the args representation */ - _u8 BinaryRepresentation; - - /* -- 52 byte */ - SlrxFilterRuleHeaderArgsAndMask_t FilterRuleHeaderArgsAndMask; - - /* -- 2 bytes */ - _u8 Padding[2]; -}_WlanRxFilterUpdateArgsCommandBuff_t; - - -/*! \typedef _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t - * The structure is used for the interface HOST NWP.\n - * - */ -/* -- 16 bytes */ -typedef struct _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t -{ - - /* ! the filter set bit map */ - /* -- 16 bytes */ - SlrxFilterIdMask_t FilterIdMask; - -}_WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t; - - -/*! \struct _WlanRxFilterPrePreparedFiltersCommandBuff_t - * The function enables to perform operations on pre-prepared filters - * - */ -typedef struct _WlanRxFilterPrePreparedFiltersCommandBuff_t -{ - /* ! the filter set bit map */ - /* -- 4 bytes */ - SlrxFilterPrePreparedFiltersMask_t FilterPrePreparedFiltersMask; - -}_WlanRxFilterPrePreparedFiltersCommandBuff_t; - - -/*! \typedef sl_protocol_WlanRxFilterPrePreparedFiltersCommandResponseBuff_t - * - */ -/*-- 4 bytes */ -typedef struct _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t -{ - /* -- 4 bytes */ - /* ! the filter set bit map */ - SlrxFilterPrePreparedFiltersMask_t FilterPrePreparedFiltersMask; - -}_WlanRxFilterPrePreparedFiltersCommandResponseBuff_t; - - - -typedef _u8 SLrxFilterOperation_t; -#define SL_ENABLE_DISABLE_RX_FILTER (0) -#define SL_REMOVE_RX_FILTER (1) -#define SL_STORE_RX_FILTERS (2) -#define SL_UPDATE_RX_FILTER_ARGS (3) -#define SL_FILTER_RETRIEVE_ENABLE_STATE (4) -#define SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE (5) -#define SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE (6) - - -/* Bit manipulation for 8 bit */ -#define ISBITSET8(x,i) ((x[i>>3] & (0x80>>(i&7)))!=0) /* < Is bit set, 8 bit unsigned numbers = x , location = i */ -#define SETBIT8(x,i) x[i>>3]|=(0x80>>(i&7)); /* < Set bit,8 bit unsigned numbers = x , location = i */ -#define CLEARBIT8(x,i) x[i>>3]&=(0x80>>(i&7))^0xFF; /* < Clear bit,8 bit unsigned numbers = x , location = i */ - - -/*********************************************************************************************/ -/* Function prototypes */ -/*********************************************************************************************/ - -/*! - - \addtogroup wlan - @{ - -*/ - - -/*! - \brief Adds new filter rule to the system - - \param[in] RuleType The rule type - \param[in] FilterFlags Flags which set the type of header rule Args and sets the persistent flag - \param[in] pRule Determine the filter rule logic - \param[in] pTrigger Determine when the rule is triggered also sets rule parent. - \param[in] pAction Sets the action to be executed in case the match functions pass - \param[out] pFilterId The filterId which was created - - \return On success, zero is returned. Otherwise error code is returned - */ -#if _SL_INCLUDE_FUNC(sl_WlanRxFilterAdd) -SlrxFilterID_t sl_WlanRxFilterAdd( SlrxFilterRuleType_t RuleType, - SlrxFilterFlags_t FilterFlags, - const SlrxFilterRule_t* const Rule, - const SlrxFilterTrigger_t* const Trigger, - const SlrxFilterAction_t* const Action, - SlrxFilterID_t* pFilterId); - -#endif - - - - - -/*! - \brief Sets parameters to Rx filters - - \param[in] RxFilterOperation - possible operations : - - SL_ENABLE_DISABLE_RX_FILTER - Enables\disables filter in a filter list - - SL_REMOVE_RX_FILTER - Removes filter from memory ( to remove from flash call SL_STORE_RX_FILTERS after this command) - - SL_STORE_RX_FILTERS - Save the filters for persistent - - SL_UPDATE_RX_FILTER_ARGS - Update the arguments of existing filter - - SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE - Change the default creation of the pre-prepared filters - - \param[in] pInputBuffer options: - The buffer input is _WlanRxFilterOperationCommandBuff_t: - - SL_ENABLE_DISABLE_RX_FILTER - - SL_REMOVE_RX_FILTER - - SL_STORE_RX_FILTERS - The buffer input is _WlanRxFilterUpdateArgsCommandBuff_t: - - SL_UPDATE_RX_FILTER_ARGS - The buffer input is _WlanRxFilterPrePreparedFiltersCommandBuff_t: - - SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE - - \param[in] InputbufferLength The length in byte of the input buffer - - \return On success, zero is returned. Otherwise error code is returned - */ - -#if _SL_INCLUDE_FUNC(sl_WlanRxFilterSet) -_i16 sl_WlanRxFilterSet( const SLrxFilterOperation_t RxFilterOperation, - const _u8* const pInputBuffer, - _u16 InputbufferLength); -#endif - -/*! - \brief Gets parameters of Rx filters - - \param[in] RxFilterOperation - possible operations : - - SL_FILTER_RETRIEVE_ENABLE_STATE - Retrieves the enable disable status - - SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE - Retrieves the pre-prepared filters creation status - - \param[in] pOutputBuffer - The buffer input is _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t: - - SL_FILTER_RETRIEVE_ENABLE_STATE - The buffer input is _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t: - - SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE - - \param[in] OutputbufferLength The length in byte of the output buffer - - \return On success, zero is returned. Otherwise error code is returned -*/ - -#if _SL_INCLUDE_FUNC(sl_WlanRxFilterGet) -_i16 sl_WlanRxFilterGet(const SLrxFilterOperation_t RxFilterOperation, - _u8* pOutputBuffer, - _u16 OutputbufferLength); -#endif - - -/*! - - Close the Doxygen group. - @} - - */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* RX_FILTERS_PREPROCESSOR_CLI_IF_H_ */ - - |
