Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: simplelink/cc3100.h
- Revision:
- 0:50cedd586816
- Child:
- 15:5433f9d94cd7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/simplelink/cc3100.h Wed Jun 24 09:54:16 2015 +0000
@@ -0,0 +1,832 @@
+/*
+ * 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 "mbed.h"
+#include "cc3100_simplelink.h"
+#include "cc3100_driver.h"
+#include "cc3100_wlan_rx_filters.h"
+
+#include "cc3100_spi.h"
+#include "cc3100_netcfg.h"
+
+namespace mbed_cc3100 {
+
+/*!
+
+ \addtogroup device
+ @{
+
+*/
+ const int16_t ROLE_UNKNOWN_ERR = -1;
+
+ const uint16_t MAX_BUFF_SIZE = 1460;
+ extern uint32_t g_PingPacketsRecv;
+ extern uint32_t g_GatewayIP;
+ extern uint32_t g_StationIP;
+ extern uint32_t g_DestinationIP;
+ extern uint32_t g_BytesReceived; // variable to store the file size
+ extern uint32_t g_Status;
+ extern uint8_t g_buff[MAX_BUFF_SIZE+1];
+ extern int32_t g_SockID;
+
+
+/* File on the serial flash */
+#define FILE_NAME "cc3000_module.pdf"
+#define HOST_NAME "www.ti.com"
+
+#define HTTP_FILE_NOT_FOUND "404 Not Found" /* HTTP file not found response */
+//#define HTTP_STATUS_OK "200 OK" /* HTTP status ok response */
+#define HTTP_CONTENT_LENGTH "Content-Length:" /* HTTP content length header */
+#define HTTP_TRANSFER_ENCODING "Transfer-Encoding:" /* HTTP transfer encoding header */
+#define HTTP_ENCODING_CHUNKED "chunked" /* HTTP transfer encoding header value */
+#define HTTP_CONNECTION "Connection:" /* HTTP Connection header */
+#define HTTP_CONNECTION_CLOSE "close" /* HTTP Connection header value */
+#define HTTP_END_OF_HEADER "\r\n\r\n" /* string marking the end of headers in response */
+
+/*****************************************************************************/
+/* Macro declarations */
+/*****************************************************************************/
+
+const uint16_t IP_LEASE_TIME = 3600;
+
+const uint16_t SIZE_45K = 46080; /* Serial flash file size 45 KB */
+const uint16_t READ_SIZE = 1450;
+const uint8_t SPACE = 32;
+
+const uint16_t PING_INTERVAL = 1000;
+const uint8_t PING_SIZE = 20;
+const uint16_t PING_TIMEOUT = 3000;
+const uint8_t PING_ATTEMPTS = 3;
+const uint8_t PING_PKT_SIZE = 20;
+
+const uint8_t SL_STOP_TIMEOUT = 0xFF;
+
+/* 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 */
+const int16_t 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 */
+const int16_t 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) */
+const int16_t SL_EZEROLEN = (-2002);
+
+/* User supplied invalid parameter */
+const int16_t SL_INVALPARAM = (-2003);
+
+/* Failed to open interface */
+const int16_t SL_BAD_INTERFACE = (-2004);
+
+/* End of SL internal Error codes */
+
+/*****************************************************************************/
+/* Errors returned from the general error async event */
+/*****************************************************************************/
+
+/* Use bit 32: Lower bits of status variable are used for NWP events
+ * 1 in a 'status_variable', the device has completed the ping operation
+ * 0 in a 'status_variable', the device has not completed the ping operation
+ */
+//const uint32_t STATUS_BIT_PING_DONE = 31;
+
+/* Status bits - These are used to set/reset the corresponding bits in a 'status_variable' */
+typedef enum {
+ STATUS_BIT_CONNECTION = 0, /* If this bit is:
+ * 1 in a 'status_variable', the device is connected to the AP
+ * 0 in a 'status_variable', the device is not connected to the AP
+ */
+
+ STATUS_BIT_STA_CONNECTED, /* If this bit is:
+ * 1 in a 'status_variable', client is connected to device
+ * 0 in a 'status_variable', client is not connected to device
+ */
+
+ STATUS_BIT_IP_ACQUIRED, /* If this bit is:
+ * 1 in a 'status_variable', the device has acquired an IP
+ * 0 in a 'status_variable', the device has not acquired an IP
+ */
+
+ STATUS_BIT_IP_LEASED, /* If this bit is:
+ * 1 in a 'status_variable', the device has leased an IP
+ * 0 in a 'status_variable', the device has not leased an IP
+ */
+
+ STATUS_BIT_CONNECTION_FAILED, /* If this bit is:
+ * 1 in a 'status_variable', failed to connect to device
+ * 0 in a 'status_variable'
+ */
+
+ STATUS_BIT_P2P_NEG_REQ_RECEIVED,/* If this bit is:
+ * 1 in a 'status_variable', connection requested by remote wifi-direct device
+ * 0 in a 'status_variable',
+ */
+ STATUS_BIT_SMARTCONFIG_DONE, /* If this bit is:
+ * 1 in a 'status_variable', smartconfig completed
+ * 0 in a 'status_variable', smartconfig event couldn't complete
+ */
+
+ STATUS_BIT_SMARTCONFIG_STOPPED, /* If this bit is:
+ * 1 in a 'status_variable', smartconfig process stopped
+ * 0 in a 'status_variable', smartconfig process running
+ */
+
+ STATUS_BIT_PING_DONE = 31
+ /* Use bit 32: Lower bits of status variable are used for NWP events
+ * 1 in a 'status_variable', the device has completed the ping operation
+ * 0 in a 'status_variable', the device has not completed the ping operation
+ */
+
+} e_StatusBits;
+
+/* Application specific status/error codes */
+typedef enum {
+ LAN_CONNECTION_FAILED = -0x7D0, /* Choosing this number to avoid overlap with host-driver's error codes */
+ CAMERA_CAPTURE_FAILED = -0x7D0,
+ INTERNET_CONNECTION_FAILED = LAN_CONNECTION_FAILED - 1,
+ DEVICE_NOT_IN_STATION_MODE = INTERNET_CONNECTION_FAILED - 1,
+ DEVICE_NOT_IN_AP_MODE = DEVICE_NOT_IN_STATION_MODE - 1,
+ DEVICE_NOT_IN_P2P_MODE = DEVICE_NOT_IN_STATION_MODE - 1,
+ HTTP_SEND_ERROR = DEVICE_NOT_IN_STATION_MODE - 1,
+ HTTP_RECV_ERROR = HTTP_SEND_ERROR - 1,
+ HTTP_INVALID_RESPONSE = HTTP_RECV_ERROR -1,
+ SNTP_SEND_ERROR = DEVICE_NOT_IN_STATION_MODE - 1,
+ SNTP_RECV_ERROR = SNTP_SEND_ERROR - 1,
+ SNTP_SERVER_RESPONSE_ERROR = SNTP_RECV_ERROR - 1,
+ INVALID_HEX_STRING = DEVICE_NOT_IN_STATION_MODE - 1,
+ TCP_RECV_ERROR = INVALID_HEX_STRING - 1,
+ TCP_SEND_ERROR = TCP_RECV_ERROR - 1,
+ FILE_NOT_FOUND_ERROR = TCP_SEND_ERROR - 1,
+ INVALID_SERVER_RESPONSE = FILE_NOT_FOUND_ERROR - 1,
+ FORMAT_NOT_SUPPORTED = INVALID_SERVER_RESPONSE - 1,
+ FILE_WRITE_ERROR = FORMAT_NOT_SUPPORTED - 1,
+ INVALID_FILE = FILE_WRITE_ERROR - 1,
+
+ STATUS_CODE_MAX = -0xBB8
+} e_AppStatusCodes;
+
+ /* 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 */
+const int8_t SL_ERROR_STATIC_ADDR_SUBNET_ERROR = (-60); /* network stack error*/
+const int8_t SL_ERROR_ILLEGAL_CHANNEL = (-61); /* supplicant error */
+const int8_t SL_ERROR_SUPPLICANT_ERROR = (-72); /* init error code */
+const int8_t SL_ERROR_HOSTAPD_INIT_FAIL = (-73); /* init error code */
+const int8_t SL_ERROR_HOSTAPD_INIT_IF_FAIL = (-74); /* init error code */
+const int8_t SL_ERROR_WLAN_DRV_INIT_FAIL = (-75); /* init error code */
+const int8_t SL_ERROR_WLAN_DRV_START_FAIL = (-76); /* wlan start error */
+const int8_t SL_ERROR_FS_FILE_TABLE_LOAD_FAILED = (-77); /* init file system failed */
+const int8_t SL_ERROR_PREFERRED_NETWORKS_FILE_LOAD_FAILED = (-78); /* init file system failed */
+const int8_t SL_ERROR_HOSTAPD_BSSID_VALIDATION_ERROR = (-79); /* Ap configurations BSSID error */
+const int8_t SL_ERROR_HOSTAPD_FAILED_TO_SETUP_INTERFACE = (-80); /* Ap configurations interface error */
+const int8_t SL_ERROR_MDNS_ENABLE_FAIL = (-81); /* mDNS enable failed */
+const int8_t SL_ERROR_HTTP_SERVER_ENABLE_FAILED = (-82); /* HTTP server enable failed */
+const int8_t SL_ERROR_DHCP_SERVER_ENABLE_FAILED = (-83); /* DHCP server enable failed */
+const int8_t SL_ERROR_PREFERRED_NETWORK_LIST_FULL = (-93); /* supplicant error */
+const int8_t SL_ERROR_PREFERRED_NETWORKS_FILE_WRITE_FAILED = (-94); /* supplicant error */
+const int8_t SL_ERROR_DHCP_CLIENT_RENEW_FAILED = (-100); /* DHCP client error */
+/* WLAN Connection management status */
+const int8_t SL_ERROR_CON_MGMT_STATUS_UNSPECIFIED = (-102);
+const int8_t SL_ERROR_CON_MGMT_STATUS_AUTH_REJECT = (-103);
+const int8_t SL_ERROR_CON_MGMT_STATUS_ASSOC_REJECT = (-104);
+const int8_t SL_ERROR_CON_MGMT_STATUS_SECURITY_FAILURE = (-105);
+const int8_t SL_ERROR_CON_MGMT_STATUS_AP_DEAUTHENTICATE = (-106);
+const int8_t SL_ERROR_CON_MGMT_STATUS_AP_DISASSOCIATE = (-107);
+const int8_t SL_ERROR_CON_MGMT_STATUS_ROAMING_TRIGGER = (-108);
+const int8_t SL_ERROR_CON_MGMT_STATUS_DISCONNECT_DURING_CONNECT = (-109);
+const int8_t SL_ERROR_CON_MGMT_STATUS_SG_RESELECT = (-110);
+const int8_t SL_ERROR_CON_MGMT_STATUS_ROC_FAILURE = (-111);
+const int8_t SL_ERROR_CON_MGMT_STATUS_MIC_FAILURE = (-112);
+/* end of WLAN connection management error statuses */
+const int8_t SL_ERROR_WAKELOCK_ERROR_PREFIX = (-115); /* Wake lock expired */
+const int8_t SL_ERROR_LENGTH_ERROR_PREFIX = (-116); /* Uart header length error */
+const int8_t SL_ERROR_MDNS_CREATE_FAIL = (-121); /* mDNS create failed */
+const int8_t SL_ERROR_GENERAL_ERROR = (-127);
+
+
+
+const int8_t SL_DEVICE_GENERAL_CONFIGURATION = (1);
+const int8_t SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME = (11);
+const int8_t SL_DEVICE_GENERAL_VERSION = (12);
+const int8_t 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.
+*/
+#if 1
+/* SL_EVENT_CLASS_WLAN connection user events */
+const int8_t SL_WLAN_CONNECT_EVENT = (1);
+const int8_t SL_WLAN_DISCONNECT_EVENT = (2);
+/* WLAN Smart Config user events */
+const int8_t SL_WLAN_SMART_CONFIG_COMPLETE_EVENT = (3);
+const int8_t SL_WLAN_SMART_CONFIG_STOP_EVENT = (4);
+/* WLAN AP user events */
+const int8_t SL_WLAN_STA_CONNECTED_EVENT = (5);
+const int8_t SL_WLAN_STA_DISCONNECTED_EVENT = (6);
+/* WLAN P2P user events */
+const int8_t SL_WLAN_P2P_DEV_FOUND_EVENT = (7);
+const int8_t SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT = (8);
+const int8_t SL_WLAN_CONNECTION_FAILED_EVENT = (9);
+/* SL_EVENT_CLASS_DEVICE user events */
+const int8_t SL_DEVICE_FATAL_ERROR_EVENT = (1);
+const int8_t SL_DEVICE_ABORT_ERROR_EVENT = (2);
+/* SL_EVENT_CLASS_BSD user events */
+const int8_t SL_SOCKET_TX_FAILED_EVENT = (1);
+const int8_t SL_SOCKET_ASYNC_EVENT = (2);
+/* SL_EVENT_CLASS_NETAPP user events */
+const int8_t SL_NETAPP_IPV4_IPACQUIRED_EVENT = (1);
+const int8_t SL_NETAPP_IPV6_IPACQUIRED_EVENT = (2);
+const int8_t SL_NETAPP_IP_LEASED_EVENT = (3);
+const int8_t SL_NETAPP_IP_RELEASED_EVENT = (4);
+
+/* Server Events */
+const int8_t SL_NETAPP_HTTPGETTOKENVALUE_EVENT = (1);
+const int8_t SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT = (2);
+#endif
+
+/*
+ Declare the different event group classifications for sl_DevGet
+ for getting status indications
+ */
+
+/* Events list to mask/unmask*/
+const int8_t SL_EVENT_CLASS_GLOBAL = (0);
+const int8_t SL_EVENT_CLASS_DEVICE = (1);
+const int8_t SL_EVENT_CLASS_WLAN = (2);
+const int8_t SL_EVENT_CLASS_BSD = (3);
+const int8_t SL_EVENT_CLASS_NETAPP = (4);
+const int8_t SL_EVENT_CLASS_NETCFG = (5);
+const int8_t SL_EVENT_CLASS_FS = (6);
+
+
+/****************** DEVICE CLASS status ****************/
+const uint32_t EVENT_DROPPED_DEVICE_ASYNC_GENERAL_ERROR = (0x00000001L);
+const uint32_t STATUS_DEVICE_SMART_CONFIG_ACTIVE = (0x80000000L);
+
+/****************** WLAN CLASS status ****************/
+const uint32_t EVENT_DROPPED_WLAN_WLANASYNCONNECTEDRESPONSE = (0x00000001L);
+const uint32_t EVENT_DROPPED_WLAN_WLANASYNCDISCONNECTEDRESPONSE = (0x00000002L);
+const uint32_t EVENT_DROPPED_WLAN_STA_CONNECTED = (0x00000004L);
+const uint32_t EVENT_DROPPED_WLAN_STA_DISCONNECTED = (0x00000008L);
+const uint32_t STATUS_WLAN_STA_CONNECTED = (0x80000000L);
+
+/****************** NETAPP CLASS status ****************/
+const uint32_t EVENT_DROPPED_NETAPP_IPACQUIRED = (0x00000001L);
+const uint32_t EVENT_DROPPED_NETAPP_IPACQUIRED_V6 = (0x00000002L);
+const uint32_t EVENT_DROPPED_NETAPP_IP_LEASED = (0x00000004L);
+const uint32_t EVENT_DROPPED_NETAPP_IP_RELEASED = (0x00000008L);
+
+/****************** BSD CLASS status ****************/
+const uint32_t EVENT_DROPPED_SOCKET_TXFAILEDASYNCRESPONSE = (0x00000001L);
+
+/****************** FS CLASS ****************/
+
+/*****************************************************************************/
+/* Structure/Enum declarations */
+/*****************************************************************************/
+
+#ifdef SL_IF_TYPE_UART
+typedef struct {
+ uint32_t BaudRate;
+ uint8_t FlowControlEnable;
+ uint8_t CommPort;
+} SlUartIfParams_t;
+#endif
+
+typedef struct {
+ uint32_t ChipId;
+ uint32_t FwVersion[4];
+ uint8_t PhyVersion[4];
+} _SlPartialVersion;
+
+typedef struct {
+ _SlPartialVersion ChipFwAndPhyVersion;
+ uint32_t NwpVersion[4];
+ uint16_t RomVersion;
+ uint16_t Padding;
+} SlVersionFull;
+
+typedef struct
+{
+ uint32_t AbortType;
+ uint32_t AbortData;
+}sl_DeviceReportAbort;
+
+typedef struct {
+ int8_t status;
+ SlErrorSender_e sender;
+} sl_DeviceReport;
+
+typedef union {
+ sl_DeviceReport deviceEvent;
+ sl_DeviceReportAbort deviceReport;
+} _SlDeviceEventData_u;
+
+typedef struct {
+ uint32_t Event;
+ _SlDeviceEventData_u EventData;
+} SlDeviceEvent_t;
+
+typedef struct {
+ /* time */
+ uint32_t sl_tm_sec;
+ uint32_t sl_tm_min;
+ uint32_t sl_tm_hour;
+ /* date */
+ uint32_t sl_tm_day; /* 1-31 */
+ uint32_t sl_tm_mon; /* 1-12 */
+ uint32_t sl_tm_year; /* YYYY 4 digits */
+ uint32_t sl_tm_week_day; /* not required */
+ uint32_t sl_tm_year_day; /* not required */
+ uint32_t reserved[3];
+} SlDateTime_t;
+
+/******************************************************************************/
+/* Type declarations */
+/******************************************************************************/
+typedef void (*P_INIT_CALLBACK)(uint32_t Status);
+
+class cc3100_netcfg;
+
+class cc3100
+{
+
+public:
+
+ cc3100(PinName button1_irq, PinName button2_irq, PinName cc3100_irq, PinName cc3100_nHIB, PinName cc3100_cs, SPI cc3100_spi);
+
+ ~cc3100();
+
+ /*****************************************************************************/
+ /* Function prototypes */
+ /*****************************************************************************/
+ int32_t initializeAppVariables();
+
+ int32_t establishConnectionWithAP(void);
+
+ int32_t checkLanConnection(void);
+
+ int32_t checkInternetConnection(void);
+
+ int32_t createUDPConnection(void);
+
+ int32_t createConnection(uint32_t DestinationIP);
+
+ int32_t getChunkSize(int32_t *len, uint8_t **p_Buff, uint32_t *chunk_size);
+
+ int32_t hexToi(unsigned char *ptr);
+
+// int32_t getFile(void);
+
+ int32_t disconnectFromAP(void);
+
+ uint16_t itoa(int16_t cNum, uint8_t *cString);
+
+ int32_t Network_IF_InitDriver(uint32_t uiMode);
+
+ int32_t configureSimpleLinkToDefaultState(void);
+
+ int16_t _sl_GetStartResponseConvert(uint32_t Status);
+
+ void _sl_HandleAsync_InitComplete(void *pVoidBuf);
+
+ bool IS_PING_DONE(uint32_t status_variable,const uint32_t bit);
+ bool IS_CONNECTED(uint32_t status_variable,const uint32_t bit);
+ bool IS_STA_CONNECTED(uint32_t status_variable,const uint32_t bit);
+ bool IS_IP_ACQUIRED(uint32_t status_variable,const uint32_t bit);
+ bool IS_IP_LEASED(uint32_t status_variable,const uint32_t bit);
+ bool IS_CONNECTION_FAILED(uint32_t status_variable,const uint32_t bit);
+ bool IS_P2P_NEG_REQ_RECEIVED(uint32_t status_variable,const uint32_t bit);
+ bool IS_SMARTCONFIG_DONE(uint32_t status_variable,const uint32_t bit);
+ bool IS_SMARTCONFIG_STOPPED(uint32_t status_variable,const uint32_t bit);
+
+
+
+ void CLR_STATUS_BIT(uint32_t status_variable, const uint32_t bit);
+ void SET_STATUS_BIT(uint32_t status_variable, const uint32_t bit);
+ void CLR_STATUS_BIT_ALL(uint32_t status_variable);
+
+ /*!
+ \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)
+ int16_t sl_Start(const void* pIfHdl, int8_t* 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)
+ int16_t sl_Stop(const uint16_t 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 = (uint32_t)23; // Day of month (DD format) range 1-13
+ dateTime.sl_tm_mon = (uint32_t)6; // Month (MM format) in the range of 1-12
+ dateTime.sl_tm_year = (uint32_t)2014; // Year (YYYY format)
+ dateTime.sl_tm_hour = (uint32_t)17; // Hours in the range of 0-23
+ dateTime.sl_tm_min = (uint32_t)55; // Minutes in the range of 0-59
+ dateTime.sl_tm_sec = (uint32_t)22; // Seconds in the range of 0-59
+ sl_DevSet(SL_DEVICE_GENERAL_CONFIGURATION,
+ SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME,
+ sizeof(SlDateTime_t),
+ (uint8_t *)(&dateTime));
+
+ \endcode
+ */
+#if _SL_INCLUDE_FUNC(sl_DevSet)
+ int32_t sl_DevSet(const uint8_t DeviceSetId , const uint8_t Option, const uint8_t ConfigLen, const uint8_t *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:
+ uint32_t statusWlan;
+ uint8_t pConfigOpt;
+ uint8_t pConfigLen;
+ pConfigLen = sizeof(_u32);
+ pConfigOpt = SL_EVENT_CLASS_WLAN;
+ sl_DevGet(SL_DEVICE_STATUS,&pConfigOpt,&pConfigLen,(uint8_t *)(&statusWlan));
+ Example for getting version:
+ SlVersionFull ver;
+ pConfigLen = sizeof(ver);
+ pConfigOpt = SL_DEVICE_GENERAL_VERSION;
+ sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION,&pConfigOpt,&pConfigLen,(uint8_t *)(&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};
+ int8_t configLen = sizeof(SlDateTime_t);
+ int8_t configOpt = SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME;
+ sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION,&configOpt, &configLen,(uint8_t *)(&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)
+ int32_t sl_DevGet(const uint8_t DeviceGetId, uint8_t *pOption,uint8_t *pConfigLen, uint8_t *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)
+ int16_t sl_EventMaskSet(const uint8_t EventClass , const uint32_t 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
+ uint32_t maskWlan;
+ sl_StatusGet(SL_EVENT_CLASS_WLAN,&maskWlan);
+
+ \endcode
+ */
+#if _SL_INCLUDE_FUNC(sl_EventMaskGet)
+ int16_t sl_EventMaskGet(const uint8_t EventClass, uint32_t *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)
+ int16_t sl_UartSetMode(const SlUartIfParams_t* pUartParams);
+#endif
+#endif
+
+public:
+
+ cc3100_spi _spi;
+ cc3100_driver _driver;
+#ifndef SL_PLATFORM_MULTI_THREADED
+ cc3100_nonos _nonos;
+#endif
+ cc3100_wlan _wlan;
+ cc3100_wlan_rx_filters _wlan_filters;
+ cc3100_netapp _netapp;
+ cc3100_fs _fs;
+ cc3100_netcfg _netcfg;
+ cc3100_socket _socket;
+ cc3100_flowcont _flowcont;
+
+
+protected:
+
+
+};//class
+
+}//namespace mbed_cc3100
+
+/*!
+
+ Close the Doxygen group.
+ @}
+
+ */
+
+
+#endif /* __DEVICE_H__ */
+
+
+