CC3X00EMBEDDEDPROG: BLE + Wi-Fi Advertising on CC3501ENJARSHR with SimpleLink Wi-Fi SDK 9.22.00.15

Part Number: CC3X00EMBEDDEDPROG

Hi TI Team,

I am working with the CC3501ENJARSHR Wi-Fi + BLE chipset and using SDK version 9.22.00.15 on the EVK.

My Requirement:
I need simultaneous Wi-Fi and BLE operation where both interfaces automatically start advertising upon device power-on, without requiring any external trigger command.  I also need to send data over both Wi-Fi and BLE.

What I Have Tried:
I tested the five example projects available in the SDK, but encountered issues with each. Below is a summary of my observations:

 
 
Example Issue Observed
1. at_commands When sending at+wlanstart command, I receive the same command string back as response instead of "OK" as per the readme. No Wi-Fi activity observed. And below image from readme. [Log attached]image.png
2. ble_wifi_provisioning Based on the code flow, this should advertise BLE and Wi-Fi by default. However, no advertising is observed at all.
3. indigo not tested
4. mqtt_client not tested
5. network_terminal After flashing and sending ble_start, I received: "Device is stopped, run wlan_start". Then when sending wlan_start, I got the same wlan_start string echoed back, and the EVK became unresponsive to further commands. [Log attached] 

My Questions:

  1. Among these five examples, which one is the correct starting point for my requirement of simultaneous Wi-Fi + BLE with auto-start advertising on boot?

  2. If none of these are suitable, is there another example in the SDK I should use?

Attachments:

Thank you for your support. Please let me know if you need any additional information.

Regards,
Venkata Kishore

  • Hi Venkata,

    When you say "sending ble_start" and "sending wlan_start," what exactly are you doing?

    If you take a look at the network terminal, even if you call the Wlan_Start API, if you do not properly indicate that the net interface is up, the condition below will fail.

    if (!isNetIFActive())
        {
            Report("\n\rDevice is stopped, run wlan_start.\n\r");
            return ( -1 );
        }
    In the network terminal, if you call cmdWlanStartCallback(NULL) followed by cmdBleStartCalback(NULL) before the while(!app_CB.Exit) loop, your device will now have started the network processor and the nimble host as soon as the bootloader boots up your image.
    int32_t cmd_prompt(void *arg)
    {
        int32_t     lRetVal = 1;
        uint32_t    i = 0;
        char        cmdBuffer[(MAX_CMD_NAME_LEN+5)];
        char        *token = NULL;
    
        lRetVal = cmdWlanStartCallback(NULL);
        if (lRetVal == OSI_OK) {
            lRetVal = cmdBleStartCallback(NULL);
            if (lRetVal == OSI_OK) {
                UART_PRINT("Wlan and BLE start success\n\r");
            }
            else {
                UART_PRINT("BLE start failed\n\r");
            }
        }
        else {
            UART_PRINT("wlan start failed\n\r");
        }
    
    
        while(!app_CB.Exit)
        {
    Here is my result: