This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF:配置后是否获取 IP 地址的正确方法

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1056566/cc3220sf-correct-way-to-know-if-ip-address-was-acquired-after-provisioning

器件型号:CC3220SF

我们通过发出主机命令来配置器件。 该文档指出、在配置完成或显式停止配置之前、其他 WiFi 功能将不起作用。 配置文档显示、在 发出 sl_WLAN_PROVISIONING_STOPPED 命令之前、器件将切换回我的案例站点模式中的预设模式、之后主机可以开始 WiFi 活动。 由于器     件在调用 sl_WLAN_PROVISIONING_STOPPED 命令之前切换回站模式、因此 sl_NetApp_EVENT_IPv4_ACQUIRED 事件和 SL_WLAN_EVENT_CONNECT 事件永远不会触发。  

 sl_WLAN_PROVISIONING_STOPPED 事件具有一些我们可以检查的特定数据、如配置示例所示。 但不能保证在 触发 SL_WLAN_PROVISIONING_STOPPED 事件后会获取 IP 地址。

case SL_WLAN_PROVISIONING_STOPPED:
    Display_printf(display,0,0,"\r\n Provisioning stopped:");
    
    if (pWlanEvent->Data.ProvisioningStatus.Role == ROLE_STA)
    {
        Display_printf(display,0,0,"Role STA");
    }
    
    else if (pWlanEvent->Data.ProvisioningStatus.Role == ROLE_AP)
    {
        Display_printf(display,0,0,"Role AP");
    }

    if(ROLE_STA == pWlanEvent->Data.ProvisioningStatus.Role)
    {
        Display_printf(display,0,0,"WLAN Status: %d\r\n",pWlanEvent->Data.ProvisioningStatus.WlanStatus);

        if(SL_WLAN_STATUS_CONNECTED == pWlanEvent->Data.ProvisioningStatus.WlanStatus)
        {
            Display_printf(display,0,0,"Connected to SSID: %s\r\n", pWlanEvent->Data.ProvisioningStatus.Ssid);
        }
        else if(SL_WLAN_STATUS_SCANING == pWlanEvent->Data.ProvisioningStatus.WlanStatus)
        {
            Display_printf(display,0,0,"scanning for SSID: %s\r\n", pWlanEvent->Data.ProvisioningStatus.Ssid);
        }
    }
    
    break;

主机是否可以通过任何方式知道该站点是否已成功连接并且已获取 IP 地址?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅 SL_NetCfgGet (SL_netcfg_IPV4_STA_ADDR_MODE)。 - 检索当前 IP 地址。

    我无法完全理解您的配置顺序。 您是否正在调用 sl_WLAN_PROVISIONING_CMD_STOP? 您是否正在等待确认状态? 为什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     确认完成后、我正在等待 sl_WLAN_PROVISIONING_STOPPED 触发回调函数。 问题是、在完成正确的配置并调用回调函数后、NWP 可以按照配置文档处于以下4种模式中的任何一种。

    WlanStatus:如果活动角色为 STA、则此参数显示配置过程结束时器件的 WLAN 连接状态(0-断开连接、1-扫描、2-连接、3-连接)。

    此外、这会导致与 WLAN 连接关联的其他回调函数无法工作。 具体而言、 不  会触发 SL_WLAN_EVENT_CONNECT 和 SL_NetApp_EVENT_IPv4_ACQUIRED 事件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是移动设备的指示。

    配置成功后(当您获取 SL_WLAN_PROVISIONING_CONFIRMATION_STATUS_SUCCESS 时)、将连接基站。

    无论如何、您可以使用 sl_WlanGet (sl_WLAN_CONNECT_INFO)检查器件是否已连接

    _i16 RetVal = 0 ;
    _u16 Len = sizeof(SlWlanConnStatusParam_t) ;
    SlWlanConnStatusParam_t WlanConnectInfo ;
    RetVal = sl_WlanGet(SL_WLAN_CONNECTION_INFO, NULL, &Len, (_u8* )&WlanConnectInfo);