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

WLAN

sl_WlanSetMode – The WLAN device has several WLAN modes of operation. By default, the device acts as a WLAN station, but it can also act in other WLAN roles. The different options are:

  • ROLE_STA – For WLAN station mode
  • ROLE_AP – For WLAN AP mode
  • ROLE_P2P – For WLAN P2P mode
Note:

The set mode functionality only takes effect in the next device boot.

An example of switching from any role to WLAN AP roles:

sl_WlanSetMode(ROLE_AP);                
/* Turning the device off and on in order for the roles change to take effect */
sl_Stop(0);
sl_Start(NULL,NULL,NULL);

sl_WlanSet – Lets the user configure different WLAN-related parameters. The main parameters used are ConfigID and ConfigOpt.

The possible ConfigID and ConfigOpt combinations are:

  • SL_WLAN_CFG_GENERAL_PARAM_ID – The different general WLAN parameters are:
    • WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE
    • WLAN_GENERAL_PARAM_OPT_STA_TX_POWER – Sets STA mode Tx power level, a number from 0 to 15, as the dB offset from max power (0 will set maximum power).
    • WLAN_GENERAL_PARAM_OPT_AP_TX_POWER – Sets AP mode Tx power level, a number from 0 to 15, as the dB offset from max power (0 will set maximum power).
  • SL_WLAN_CFG_AP_ID – The different AP configuration options are:
    • WLAN_AP_OPT_SSID
    • WLAN_AP_OPT_CHANNEL
    • WLAN_AP_OPT_HIDDEN_SSID – Sets the AP to be hidden or not hidden
    • WLAN_AP_OPT_SECURITY_TYPE – Possible options are:
      • Open security: SL_SEC_TYPE_OPEN
      • WEP security: SL_SEC_TYPE_WEP
      • WPA security: SL_SEC_TYPE_WPA
    • WLAN_AP_OPT_PASSWORD – Sets the security password for AP mode:
      • For WPA: 8 to 63 characters
      • For WEP: 5 to 13 characters (ASCII)
  • SL_WLAN_CFG_P2P_PARAM_ID
    • WLAN_P2P_OPT_DEV_NAME
    • WLAN_P2P_OPT_DEV_TYPE
    • WLAN_P2P_OPT_CHANNEL_N_REGS – The listen channel and regulatory class determine the device listen channel during the P2P find and listen phase. The operational channel and regulatory class determines the operating channel preferred by the device (if the device is the group owner, this is the operating channel). Channels should be one of the social channels (1, 6, or 11). If no listen or operational channel is selected, a random 1, 6, or 11 will be selected.
    • WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT – The application sets up to MAX_PRIVATE_INFO_ELEMENTS_SUPPORTED information elements per role (AP / P2P GO). To delete an information element, use the relevant index and length = 0. The application sets up to MAX_PRIVATE_INFO_ELEMENTS_SUPPORTED to the same role. However, for AP no more than INFO_ELEMENT_MAX_TOTAL_LENGTH_AP bytes are stored for all information elements. For P2P GO no more than INFO_ELEMENT_MAX_TOTAL_LENGTH_P2P_GO bytes are stored for all information elements.
    • WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS – Changes the scan channels and RSSI threshold

An example of setting SSID for AP mode:

unsigned char  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);

sl_WlanGet – Enables the user to configure different WLAN-related parameters. The main parameters used are ConfigID and ConfigOpt. The usage of sl_WlanGet is similar to sl_WlanSet.

sl_WlanConnect – Manually connects to a WLAN network

sl_WlanDisconnect – Disconnects WLAN connection

sl_WlanProfileAdd – When auto-start connection policy is enabled, the device connects to an AP from the profiles table. Up to seven profiles are supported. If several profiles are configured, the device selects the highest priority profile. Within each priority group, the device choses the profile based on the following parameters in descending priority: security policy, signal strength.

sl_WlanProfileGet – Reads a WLAN profile from the device

sl_WlanProfileDel – Deletes an existing profile

sl_WlanPolicySet – Manages the configuration of the following WLAN functionalities:

  • SL_POLICY_CONNECTION – SL_POLICY_CONNECTION type defines three options available to connect the CC31xx device to the AP:
    • Auto Connect – The CC31xx device tries to automatically reconnect to one of its stored profiles each time the connection fails or the device is rebooted. To set this option, use:
      • sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(1,0,0,0,0),NULL,0)
    • Fast Connect – The CC31xx device tries to establish a fast connection to AP. To set this option, use:
      • sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,1,0,0,0),NULL,0)
        
    • P2P Connect – If Any P2P mode is set, the CC31xx device tries to automatically connect to the first P2P device available, supporting push-button only. To set this option, use:
      • sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,0,0,1,0),NULL,0)
    • Auto SmartConfig upon restart – The device wakes up in SmartConfig mode. Any command from the host ends this state. To set this option use:
      • sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,0,0,0,1),NULL,0)
        
  • SL_POLICY_SCAN – Defines the system scan time interval if there is no connection. The default interval is 10 minutes. After the settings scan interval, an immediate scan is activated. The next scan is based on the interval settings. To set the scan interval to a 1-minute interval, use the following example:
    unsigned long intervalInSeconds = 60;
    #define SL_SCAN_ENABLE  1
    sl_WlanPolicySet(SL_POLICY_SCAN,SL_SCAN_ENABLE, (unsigned char *)
    &intervalInSeconds,sizeof(intervalInSeconds));

    To disable the scan, use:

    #define SL_SCAN_DISABLE  0
    sl_WlanPolicySet(SL_POLICY_SCAN,SL_SCAN_DISABLE,0,0);
    
  • SL_POLICY_PM – Defines a power-management policy for station mode only. Four power policies are available:
    • SL_NORMAL_POLICY (default) – For setting normal power-management policy use:
      • sl_WlanPolicySet(SL_POLICY_PM , SL_NORMAL_POLICY, NULL,0)
        
    • SL_ALWAYS_ON_POLICY – For setting always-on power-management policy use:
      • sl_WlanPolicySet(SL_POLICY_PM , SL_ALWAYS_ON_POLICY, NULL,0)
    • SL_LONG_SLEEP_INTERVAL_POLICY – For setting long-sleep interval policy use:
      • unsigned short PolicyBuff[4] = {0,0,800,0}; // 800 is max sleep time in mSec
        sl_WlanPolicySet(SL_POLICY_PM , SL_LONG_SLEEP_INTERVAL_POLICY, PolicyBuff,sizeof(PolicyBuff));
        
  • SL_POLICY_P2P – Defines P2P negotiation policy parameters for a P2P role. To set the intent negotiation value, set one of the following:
    • SL_P2P_ROLE_NEGOTIATE – intent 3
    • SL_P2P_ROLE_GROUP_OWNER – intent 15
    • SL_P2P_ROLE_CLIENT – intent 0
  • To set the negotiation initiator value (the initiator policy of the first negotiation action frame), set one of the following:
    • SL_P2P_NEG_INITIATOR_ACTIVE
    • SL_P2P_NEG_INITIATOR_PASSIVE
    • SL_P2P_NEG_INITIATOR_RAND_BACKOFF

    For example:

    set sl_WlanPolicySet(SL_POLICY_P2P, SL_P2P_POLICY(SL_P2P_ROLE_NEGOTIATE,SL_P2P_NEG_INITIATOR_RAND_BACKOFF),NULL,0);

sl_WlanPolicyGet – Reads the different WLAN policy settings. The possible options are:

  • SL_POLICY_CONNECTION
  • SL_POLICY_SCAN
  • SL_POLICY_PM
  • SL_POLICY_P2P

sl_WlanGetNetworkList – Gets the latest WLAN scan results

sl_WlanSmartConfigStart – Puts the device into SmartConfig state. Once SmartConfig has ended successfully, an asynchronous event will be received: SL_OPCODE_WLAN_SMART_CONFIG_START_ASYNC_RESPONSE. The event holds the SSID and an extra field that might also have been delivered (for example, device name).

sl_WlanSmartConfigStop – Stops the SmartConfig procedure. Once SmartConfig is stopped, an asynchronous event is received: SL_OPCODE_WLAN_SMART_CONFIG_STOP_ASYNC_RESPONSE

sl_WlanRxStatStart – Starts collecting WLAN Rx statistics (unlimited time)

sl_WlanRxStatStop – Stops collecting WLAN Rx statistics

sl_WlanRxStatGet – Gets WLAN Rx statistics. Upon calling this command, the statistics counters are cleared. The statistics returned are:

  • Received valid packets – Sum of the packets received correctly (including filtered packets)
  • Received FCS error packets – Sum of the packets dropped due to FCS error
  • Received PLCP error packets – Sum of the packets dropped due to PLCP error
  • Average data RSSI – Average RSSI for all valid data packets received
  • Average management RSSI – Average RSSI for all valid management packets received
  • Rate histogram – Rate histogram for all valid packets received
  • RSSI histogram – RSSI histogram from -40 until -87 (all values below and above RSSI appear in the first and last cells)
  • Start time stamp – The timestamp of starting to collect the statistics in µSec
  • Get time stamp – The timestamp of reading the statistics in µSec