SWRU368C May   2018  – January 2021 CC3100 , CC3100MOD , CC3200 , CC3200MOD

 

  1. Overview
    1. 1.1 Document Scope
    2. 1.2 Overview
      1. 1.2.1 Features List
    3. 1.3 Host Driver Overview
    4. 1.4 Configurable Information Element
  2. Writing a Simple Networking Application
    1. 2.1 Overview
      1. 2.1.1 Basic Example Code
  3. Device Initialization
    1. 3.1 Overview
    2. 3.2 Host Interface
      1. 3.2.1 SPI Interface
      2. 3.2.2 UART Interface
        1. 3.2.2.1 Change UART Baud Rate
  4. Device Configurations
    1. 4.1 Overview
    2. 4.2 Device Parameters
    3. 4.3 WLAN Parameters
      1. 4.3.1 Advanced
    4. 4.4 Network Parameters
    5. 4.5 Internet and Networking Services Parameters
    6. 4.6 Power-Management Parameters
      1. 4.6.1 Overview
      2. 4.6.2 Power Policy
    7. 4.7 Scan Parameters
      1. 4.7.1 Scan Policy
  5. Socket
    1. 5.1 Overview
      1. 5.1.1 Transmission Control Protocol (TCP)
      2. 5.1.2 User Datagram Protocol (UDP)
    2. 5.2 Socket Connection Flow
    3. 5.3 TCP Connection Flow
      1. 5.3.1 Client Side
      2. 5.3.2 Server Side
    4. 5.4 UDP Connection Flow
      1. 5.4.1 Client Side
      2. 5.4.2 Server Side
    5. 5.5 Socket Options
      1. 5.5.1 Blocking vs NonBlocking
      2. 5.5.2 Secure Sockets
    6. 5.6 SimpleLink Supported Socket API
    7. 5.7 Number of Available Sockets
    8. 5.8 Packet Aggregation
  6. Device Hibernate
    1. 6.1 Overview
  7. Provisioning
    1. 7.1 Overview
    2. 7.2 SmartConfig
      1. 7.2.1 General Description
      2. 7.2.2 How to Use / API
        1. 7.2.2.1 Automatic Activation (Out of the Box)
        2. 7.2.2.2 Manual Activation
        3. 7.2.2.3 Stopping Smart Config
    3. 7.3 AP Mode
      1. 7.3.1 General Description
      2. 7.3.2 How to Use / API
      3. 7.3.3 Things to Note When Configuring AP Provisioning
    4. 7.4 WPS
      1. 7.4.1 General Description
      2. 7.4.2 How to Use / API
      3. 7.4.3 Example of Using WPS
      4. 7.4.4 Tradeoffs Between Provisioning Options
  8. Security
    1. 8.1 WLAN Security
      1. 8.1.1 Personal
      2. 8.1.2 Enterprise
        1. 8.1.2.1 General Description
        2. 8.1.2.2 How to Use / API
        3. 8.1.2.3 Example
        4. 8.1.2.4 Limitations
    2. 8.2 Secured Socket
      1. 8.2.1 General Description
      2. 8.2.2 How to Use / API
        1. 8.2.2.1 Selecting a Method
        2. 8.2.2.2 Selecting a Cipher Suit
        3. 8.2.2.3 Selecting the Secured Files for the Socket
        4. 8.2.2.4 Set Domain Name for Verification and SNI
      3. 8.2.3 Example of Using the SSL
      4. 8.2.4 Supported Cryptographic Algorithms
    3. 8.3 Limitations
      1. 8.3.1 Main Known Limitations
        1. 8.3.1.1 STA Mode
        2. 8.3.1.2 AP Mode
        3. 8.3.1.3 JavaScript Example
        4. 8.3.1.4 Host Driver Example
  9. AP Mode
    1. 9.1 General Description
    2. 9.2 Setting AP Mode – API
    3. 9.3 WLAN Parameters Configuration – API
    4. 9.4 WLAN Parameters Query – API
    5. 9.5 AP Network Configuration
    6. 9.6 DHCP Server Configuration
    7. 9.7 Setting Device URN
    8. 9.8 Asynchronous Events Sent to the Host
    9. 9.9 Example Code
  10. 10Peer to Peer (P2P)
    1. 10.1 General Description
      1. 10.1.1 Scope
      2. 10.1.2 Wi-Fi Direct Advantage
      3. 10.1.3 Support and Abilities of Wi-Fi Direct
      4. 10.1.4 Limitations
    2. 10.2 P2P APIs and Configuration
      1. 10.2.1 Configuring P2P Global Parameters
        1. 10.2.1.1 Set P2P Role
        2. 10.2.1.2 Set P2P Network Configuration
        3. 10.2.1.3 Set P2P Device Name
        4. 10.2.1.4 Set P2P Device Type
        5. 10.2.1.5 Set P2P Listen and Operation Channels
      2. 10.2.2 Configuring P2P Policy
        1. 10.2.2.1 Configure P2P Intent Value and Negotiation Initiator
      3. 10.2.3 Configuring P2P Profile Connection Policy
      4. 10.2.4 Discovering Remote P2P Peers
        1. 10.2.4.1 How to Start P2P Discovery
        2. 10.2.4.2 How to See/Get P2P Remote Peers (Network P2P List)
      5. 10.2.5 Negotiation Method
      6. 10.2.6 Manual P2P Connection
      7. 10.2.7 Manual P2P Disconnection
      8. 10.2.8 P2P Profiles
      9. 10.2.9 Removing P2P Profiles
    3. 10.3 P2P Connection Events
    4. 10.4 Use Cases and Configuration
      1. 10.4.1 Case 1 – Nailed P2P Client Low-Power Profile
      2. 10.4.2 Case 2 – Mobile Client Low-Power Profile
      3. 10.4.3 Case 3 – Nailed Center Plugged-in Profile
      4. 10.4.4 Case 4 – Mobile Center Profile
      5. 10.4.5 Case 5 – Mobile General-Purpose Profile
    5. 10.5 Example Code
  11. 11HTTP Server
    1. 11.1  Overview
    2. 11.2  Supported Features
    3. 11.3  HTTP Web Server Description
      1. 11.3.1 Overview
        1. 11.3.1.1 Details
    4. 11.4  HTTP GET Processing
      1. 11.4.1 Overview
      2. 11.4.2 Default Web Page
      3. 11.4.3 SimpleLink GET Tokens
      4. 11.4.4 User-Defined Tokens
      5. 11.4.5 HTML Sample Code With Dynamic HTML Content
    5. 11.5  HTTP POST Processing
      1. 11.5.1 Overview
      2. 11.5.2 SimpleLink POST Tokens
      3. 11.5.3 SimpleLink POST Actions
      4. 11.5.4 User-Defined Tokens
      5. 11.5.5 Redirect after POST
      6. 11.5.6 HTML Sample Code With POST and Dynamic HTML Content
    6. 11.6  Internal Web Page
    7. 11.7  Force AP Mode Support
    8. 11.8  Accessing the Web Page
      1. 11.8.1 SimpleLink in Station Mode
      2. 11.8.2 SimpleLink in AP Mode
    9. 11.9  HTTP Authentication Check
    10. 11.10 Handling HTTP Events in Host Using the SimpleLink Driver
    11. 11.11 SimpleLink Driver Interface the HTTP Web Server
      1. 11.11.1 Enable or Disable HTTP Server
      2. 11.11.2 Configure HTTP Port Number
      3. 11.11.3 Enable or Disable Authentication Check
      4. 11.11.4 Set or Get Authentication Name, Password, and Realm
      5. 11.11.5 Set or Get Domain Name
      6. 11.11.6 Set or Get URN Name
      7. 11.11.7 Enable or Disable ROM Web Pages Access
    12. 11.12 SimpleLink Predefined Tokens
      1. 11.12.1 GET Values
      2. 11.12.2 POST Values
      3. 11.12.3 POST Actions
      4. 11.12.4 HTTP Server Limitations
  12. 12mDNS
    1. 12.1 Overview
    2. 12.2 Protocol Detail
    3. 12.3 Implementation
      1. 12.3.1 Default Implementation
      2. 12.3.2 173
      3. 12.3.3 Start and Stop mDNS
      4. 12.3.4 mDNS Query – One Shot
      5. 12.3.5 mDNS Query – Continuous
      6. 12.3.6 mDNS Service Registration
    4. 12.4 Supported Features
    5. 12.5 Limitations
  13. 13Serial Flash File System
    1. 13.1 Overview
      1. 13.1.1 Summary of Instructions
      2.      File Creation
      3.      File Opening
      4.      File Closing
      5.      File Writing
      6.      File Reading
      7.      File Deleting
      8.      File Information
  14. 14Rx Filter
    1. 14.1 Overview
    2. 14.2 Detailed Description
    3. 14.3 Examples
    4. 14.4 Creating Trees
    5. 14.5 Host API
      1. 14.5.1 Code Example
    6. 14.6 Notes and Limitations
  15. 15Transceiver Mode
    1. 15.1  General Description
    2. 15.2  How to Use / API
    3. 15.3  Sending and Receiving
    4. 15.4  Changing Socket Properties
    5. 15.5  Internal Packet Generator
    6. 15.6  Transmitting CW (Carrier-Wave)
    7. 15.7  Connection Policies and Transceiver Mode
    8. 15.8  Notes about Receiving and Transmitting
      1. 15.8.1 Receiving
    9. 15.9  Use Cases
      1. 15.9.1 Sniffer
    10. 15.10 TX Continues
    11. 15.11 Ping
    12. 15.12 Transceiver Mode Limitations
  16. 16Rx Statistics
    1. 16.1 General Description
    2. 16.2 How to Use / API
    3. 16.3 Notes about Receiving and Transmitting
    4. 16.4 Use Cases
    5. 16.5 Rx Statistics Limitations
  17. 17Asynchronous Events
    1. 17.1 Overview
    2. 17.2 WLAN Events
    3. 17.3 Netapp Events
    4. 17.4 Socket Events
    5. 17.5 Device Events
  18. 18Configurable Info Element
    1. 18.1 General
    2. 18.2 Interface to Application
      1. 18.2.1 API Output
    3. 18.3 Total Maximum Size of all Information Elements
  19. 19Debug
    1. 19.1 Capture NWP Logs
      1. 19.1.1 Overview
      2. 19.1.2 Instructions
        1. 19.1.2.1 Configuring Pin Mux for CC32xx
        2. 19.1.2.2 Terminal Settings
        3. 19.1.2.3 Run Your Program
        4. 19.1.2.4 Send to TI Engineer
          1.        A Host Driver Architecture
            1.         A.1 Overview
              1.          A.1.1 SimpleLink WiFi Host Driver -– Platform-Independent Part
              2.          A.1.2 SimpleLink WiFi Host Driver – Platform-Dependent Part
              3.          A.1.3 SimpleLink WiFi Driver Configuration
              4.          A.1.4 User Application
            2.         A.2 Driver Data Flows
              1.          A.2.1 Transport Layer Protocol
              2.          A.2.2 Command and Command Complete
              3.          A.2.3 Data Transactions
                1.           A.2.3.1 Data Send (From Host to SimpleLink Network Processor)
                2.           A.2.3.2 Data Flow Control
                3.           A.2.3.3 Data Receive (From SimpleLink Network Processor to Host)
                4.           A.2.3.4 Blocking Receive
                5.           A.2.3.5 NonBlocking Receive
                  1.            B Error Codes
                    1.             B.1 Error Codes
                      1.              C How to Generate Certificates, Public Keys, and CAs
                        1.               C.1 Certificate Generation
                          1.                Revision History

Device

The device APIs handle the device power and general configuration.

Sl_Start – This function initializes the communication interface, sets the enable pin of the device, and calls to the init complete callback. If no callback function is provided, the function is blocking until the device finishes the initialization process. The device returns to its functional role in case of success: ROLE_STA, ROLE_AP, ROLE_P2P. Otherwise, in case of a failure it returns: ROLE_STA_ERR, ROLE_AP_ERR, ROLE_P2P_ERR

Sl_Stop – This function clears the enable pin of the device, closes the communication interface, and invokes the stop complete callback (if it exists). The time-out parameter lets the user control the hibernate timing:

  • 0 – Enter to hibernate immediately
  • 0xFFFF – The host waits for the device to respond before hibernating, without timeout protection.
  • 0 < Timeout[msec] < 0xFFFF – The host waits for the device to respond before hibernating, with a defined time-out protection. This time-out defines the maximum time to wait. The NWP response can be sent earlier than this time-out.

sl_DevSet – This function configures different device parameters. The main parameters used are the DeviceSetID and Option. The possible DeviceSetID and Option combinations are:

  • SL_DEVICE_GENERAL_CONFIGURATION – The general configuration options are:
    • SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME – Configures the device internal date and time. The time parameter is retained in hibernate mode but will reset at shutdown.

Setting device time and date example:

SlDateTime_t dateTime= {0};
dateTime.sl_tm_day =   (unsigned long)23;          // Day of month (DD format) range 1-13
dateTime.sl_tm_mon =   (unsigned long)6;           // Month (MM format) in the range of 1-12 
dateTime.sl_tm_year =  (unsigned long)2014;        // Year (YYYY format) 
dateTime.sl_tm_hour =  (unsigned long)17;          // Hours in the range of 0-23
dateTime.sl_tm_min =   (unsigned long)55;          // Minutes in the range of 0-59
dateTime.sl_tm_sec =   (unsigned long)22;          // Seconds in the range of  0-59
sl_DevSet(SL_DEVICE_GENERAL_CONFIGURATION,SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME,sizeof(SlDateTime_t),(unsigned char *
) (&dateTime));

sl_DevGet – This function lets the user read different device parameters. The main parameters used are the DeviceSetID and Option parameter. The possible DeviceSetID and Option combinations are:

  • SL_DEVICE_GENERAL_CONFIGURATION
    • SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME
    • SL_DEVICE_GENERAL_VERSION – Returns the device firmware versions
  • SL_DEVICE_STATUS – The device status options are:
    • SL_EVENT_CLASS_DEVICE – Possible values are:
      • EVENT_DROPPED_DEVICE_ASYNC_GENERAL_ERROR – General system error, check your system configuration.
      • STATUS_DEVICE_SMART_CONFIG_ACTIVE – Device in SmartConfig mode.
    • SL_EVENT_CLASS_WLAN
      • EVENT_DROPPED_WLAN_WLANASYNCONNECTEDRESPONSE
      • EVENT_DROPPED_WLAN_WLANASYNCDISCONNECTEDRESPONSE
      • EVENT_DROPPED_WLAN_STA_CONNECTED
      • EVENT_DROPPED_WLAN_STA_DISCONNECTED
      • STATUS_WLAN_STA_CONNECTED
  • SL_EVENT_CLASS_BSD – Possible values are:
    • EVENT_DROPPED_SOCKET_TXFAILEDASYNCRESPONSE
  • SL_EVENT_CLASS_NETAPP – Possible values are:
    • EVENT_DROPPED_NETAPP_IPACQUIRED
    • EVENT_DROPPED_NETAPP_IPACQUIRED_V6
    • EVENT_DROPPED_NETAPP_IP_LEASED
    • EVENT_DROPPED_NETAPP_IP_RELEASED
  • SL_EVENT_CLASS_NETCFG (Currently unused)
  • SL_EVENT_CLASS_NVMEM (Currently unused)

Example for getting version:

SlVersionFull ver;
pConfigOpt = SL_DEVICE_GENERAL_VERSION;
sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION, &pConfigOpt,&pConfigLen,
         (unsigned char*)(&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);

sl_EventMaskSet – Masks asynchronous events from the device. Masked events do not generate asynchronous messages from the device. This function receives an EventClass and a bit mask. The events and mask options are:

  • SL_EVENT_CLASS_WLAN user events:
    • SL_WLAN_CONNECT_EVENT
    • SL_WLAN_DISCONNECT_EVENT
    • SL_WLAN_STA_CONNECTED_EVENT
    • SL_WLAN_STA_DISCONNECTED_EVENT
    • SL_WLAN_SMART_CONFIG_COMPLETE_EVENT
    • SL_WLAN_SMART_CONFIG_STOP_EVENT
    • SL_WLAN_P2P_DEV_FOUND_EVENT
    • SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT
    • SL_WLAN_CONNECTION_FAILED_EVENT
  • SL_EVENT_CLASS_DEVICE user events:
    • SL_DEVICE_FATAL_ERROR_EVENT
    • SL_DEVICE_ABORT_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_IPACQUIRED_V6_EVENT
    • SL_NETAPP_IP_LEASED_EVENT
    • SL_NETAPP_IP_RELEASED_EVENT
    • SL_NETAPP_HTTPGETTOKENVALUE_EVENT
    • SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT

An example of masking out connection and disconnection from WLAN class:

sl_EventMaskSet(SL_EVENT_CLASS_WLAN, (SL_WLAN_CONNECT_EVENT | SL_WLAN_DISCONNECT_EVENT) );

sl_EventMaskGet – Returns the events bit mask from the device. If that event is masked, the device does not send this event. The function is similar to sl_EventMaskSet.

An example of getting an event mask for WLAN class:

sl_EventMaskSet(SL_EVENT_CLASS_WLAN,
(SL_WLAN_CONNECT_EVENT | SL_WLAN_DISCONNECT_EVENT) );

sl_EventMaskGet – Returns the events bit mask from the device. If an event is masked, the device does not send the event. The function is similar to sl_EventMaskSet.

An example of getting an event mask for WLAN class:

unsigned long maskWlan;
sl_StatusGet(SL_EVENT_CLASS_WLAN,&maskWlan);

sl_Task

  • Non-Os Platform – Should be called from the main loop
  • Multi-threaded Platform – When the user does not implement the external spawn functions, the function should be called from a dedicated thread allocated to the SimpleLink driver. In this mode the function never returns.

sl_UartSetMode – This function should be used if the user’s chosen host interface is UART. The function sets the user’s UART configuration:

  • Baud rate
  • Flow control
  • COM port