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.

[参考译文] CC3220MOD:[功能请求]-实时 Wifi 扫描

Guru**** 2524550 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/799944/cc3220mod-feature-request---real-time-wifi-scan

器件型号:CC3220MOD

嗨、大家好、

如果您能提供一种更简单、更准确的方法来扫描 CC3220周围的 AP、我们将不胜感激。 在我们的应用中,必须立即了解当前情况,我们只会使用一次!

在当前实施中、需要设置扫描策略、然后发出扫描、然后取消扫描策略... 此外、还需要等待10秒以上的时间才能使某些 AP 从列表中消失或显示在列表中、这对于快速响应应用而言根本不实用。 还可以看到、获取所有 AP 需要几(2-3)个周期、这在以下情况下也不可用:例如、在创建我们自己的 AP 之前执行简单扫描以评估哪些通道最忙...  

我们希望对扫描函数进行单次调用、该函数会立即在内部执行实际扫描并提供所有结果(如果需要通过回调函数、也没关系)。

你们怎么看? 如果其他用户看到此功能的优点,请评论!

谢谢、Vincent Vuarnoz

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

    如果禁用了扫描策略,调用 sl_WlanGetNetworkList()应该会提示立即进行一次性扫描。 此 API 可返回的最大结果数为30。 您是否达到了最大值?

    AP 老化时、完成两个扫描间隔所需的时间后、将从网络列表中删除。 从 NWP 编程人员指南中:"如果禁用扫描策略、老化定义为20秒;如果启用了扫描策略、则定义为两倍扫描间隔。"

    此致、
    Sarah
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sarah、
    感谢您的回复。
    我在没有启用扫描策略的情况下尝试过、但我无法获得如此多的 AP ... 我必须再次进行测试。
    是否可以手动设置更短的老化时间? 或者更好地控制从列表中删除 AP 的条件是什么?
    当我们的客户正在等待设备连接时、20秒是非常重要的...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Vincent:

    目前无法控制何时从网络列表中删除 AP 的条件、因为 NWP 在扫描 API 之外使用该 AP。 我们可以在内部提供此反馈、并将其考虑用于未来发展。

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

    您好、Sarah、

    我已经对此进行了一些测试。

    1.正如您建议的那样,我尝试禁用扫描策略(请参阅下面的代码)。

    void * catMaxMainTask( void *pvParameters )
    {
    SlWlanNetworkEntry_t netEntryArray[CC3220_scan_MAX_entry];
    uint32_t time = 0;
    _u32 intervalInSeconds init=1;
    
    //调用驱动程序 init 函数*/GPIO_init
    ();// timer_sl( uart_init()/init_init0;/gpio_debug/init/(/init/);/init/init/(/init/);
    /init_debug_driver(/(/init/);/init/init/(/init/);/init_init/(//init_init/);
    /init_init/(/////init_init/);/(//init/
    
    
    
    
    
    
    
    
    /*将器件设置为站点模式*/
    sl_WlanSetMode (Role_STA);
    sl_Stop (200);
    sl_Start (0、0、0);
    
    //调试
    debug_printf ("starting...\r\n");
    
    
    //扫描参数*/
    SlWlanScanParamCommand_t ScanParamConfig;
    ScanParamConfig.RssiThreshold =-10000;
    ParamConfig.ChannelsMask = 0x1FFF;//所有通道
    状态= sl_WlanSet (sl_WLAN_CFG_General_params);params 0_params (param_params 0_params);// params
    0_params 0_params (param_param_param8)
    ;//所有通道状态= 0x1FFF (s_param_param_params) (%i)\r\n"、状态);
    }
    
    状态= sl_WlanPolicySet (sl_WLAN_policy_scan、sl_WLAN_scan_policy (0、0)、(_u8*)&intervalInSeconds、sizeof (intervalInonds));
    if (Status < 0){
    debug_printf ("错误扫描参数! (%i)\r\n"、状态);
    }
    
    
    //永久循环
    while (1){
    if (clock_diff_TO_NOW (time)> 3000){
    time = clock_get_current_time ();
    
    // Scan */
    _i16 results Count = sl_WlanGetNetworkList (0、CC3220_scan_MAX_entries、[time_entries
    )、[clock_get_time_time](<n_time_time"、[000u_time_time]);[clock_time_printn_time_time](%64x_time_[n_000_time_entries);[n_time_tim
    Debug_printf ("resultCount STA: %i\r\n"、resultsCount);
    _U16 ii;
    for (ii = 0;ii < resultsCount; ++ii){
    debug_printf ("\t%u:%s (RSSI:%i)\r\n"、ii、netEntryArray[i].SSID、netEntryArray[i].RSSI);
    }
    
    
    
    }}} 

    接收到错误 SL_ERROR_WLAN_GET_NETWORK_LIST_EAGAIN (-2073)后、似乎每20秒仅更新一次结果。

    更糟糕的是,当关闭其中一个 AP 时,它在30到40秒后从列表中消失!!!

    请参见附加的日志。

    e2e.ti.com/.../scanning-test-_2D00_-policy-disabled.txt

    2.启用扫描策略时(间隔= 1s)。 请参阅下面的代码

    void * catMaxMainTask( void *pvParameters )
    {
    SlWlanNetworkEntry_t netEntryArray[CC3220_scan_MAX_entry];
    uint32_t time = 0;
    _u32 intervalInSeconds init=1;
    _i16 Status;
    
    /* Call 驱动程序初始化函数*/
    gpio_watchdog ();// timer_init/unchdog (/需要时初
    
    
    
    
    始化)
    
    
    
    ;/pio_init_init_init_0 (/pio_init_init_init/pio_0);/pio_init_init/unchditer();/pio_init_init_init_init_init_init/unchditer();/pio_init_init_init/pio_init_init
    
    /*将器件设置为站点模式*/
    sl_WlanSetMode (Role_STA);
    sl_Stop (200);
    sl_Start (0、0、0);
    
    //调试
    debug_printf ("starting...\r\n");
    
    
    //扫描参数*/
    SlWlanScanParamCommand_t ScanParamConfig;
    ScanParamConfig.RssiThreshold =-10000;
    ParamConfig.ChannelsMask = 0x1FFF;//所有通道
    状态= sl_WlanSet (sl_WLAN_CFG_General_params);params 0_params (param_params 0_params);// params
    0_params 0_params (param_param_param8)
    ;//所有通道状态= 0x1FFF (s_param_param_params) (%i)\r\n"、状态);
    }
    
    状态= sl_WlanPolicySet (sl_WLAN_policy_scan、sl_WLAN_scan_policy (1、1)、(_u8*)&intervalInSeconds、sizeof (intervalInonds));
    if (Status < 0){
    debug_printf ("错误扫描参数! (%i)\r\n"、状态);
    }
    
    
    //永久循环
    while (1){
    if (clock_diff_TO_NOW (time)> 3000){
    time = clock_get_current_time ();
    
    // Scan */
    _i16 results Count = sl_WlanGetNetworkList (0、CC3220_scan_MAX_entries、[time_entries
    )、[clock_get_time_time](<n_time_time"、[000u_time_time]);[clock_time_printn_time_time](%64x_time_[n_000_time_entries);[n_time_tim
    Debug_printf ("resultCount STA: %i\r\n"、resultsCount);
    _U16 ii;
    for (ii = 0;ii < resultsCount; ++ii){
    debug_printf ("\t%u:%s (RSSI:%i)\r\n"、ii、netEntryArray[i].SSID、netEntryArray[i].RSSI);
    }
    
    
    
    
    }}} 

    首先,找到更多 AP! (请参阅在完全相同的环境中获取的日志文件)。  

    其次、结果会一直更新(新 AP、RSSI)、这很棒!

    但是、关闭 AP 时、平均需要30秒(!!!) 以便它从列表中消失。 这对我们的应用来说太大了! 是否有方法可以减少这种情况?

    e2e.ti.com/.../scanning-test-_2D00_-policy-enabled.txt

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、
    有任何有关这方面的新闻吗?

    我继续看到与扫描过程不一致的情况。
    例如、通过启用上面提到的扫描策略、错误代码 SL_ERROR_WLAN_GET_NETWORK_LIST_EAGAIN 会永久返回(尝试每隔3秒调用 sl_WlanGetNetworkList)。 而不提供任何 AP、即使周围有很多...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Vincent:

    您在启用扫描策略时是否会看到隐藏的 SSID? 请尝试进行 SL_WLAN_SCAN_PO保 单(1、0)比较。

    如果您尝试每3秒触发一次单次扫描、我希望看到 SL_ERROR_WLAN_GET_NETWORK_LIST_EAGAIN。 SL_WlanGetNetworkList 仅在系统中没有扫描结果或扫描结果为旧时(基于20秒老化定义)才会启动一次性扫描。 它似乎在较长的间隔内按预期工作。 API 指南给出了10秒的最小间隔。

    我将验证 AP 何时会从网络列表中删除(是否必须完成两个完整扫描周期)。 我将在本周晚些时候得到一个答案。

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

    尊敬的 Vincent:

    我们已确认、由于 NWP 的内部实施、最小老化限值为32秒或站点模式下扫描间隔的两倍、以较大者为准。 我们将更新我们的文档以反映这一点。 我可以提交一个较短限制的功能请求、在我们将其添加到服务请求发布之前、将评估其可行性并确定其优先级。 您的用例或环境中、哪些 AP 网络会在10-20秒的时间范围内进入和退出?

    此致、
    Sarah

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

    您好、Sarah、

    感谢您提供相关信息。

    我们的产品包含一对相互连接并将数据发送到某些 I-PADS 的器件。 因此、它们可能会被分离或放置得太远、或者客户关闭 AP 并重新启动 AP。 因此、用户在等待32秒后才能重新连接设备、这是不方便的...

    然后、会发生以下情况:客户端断开连接并再次进入"搜索"模式、直到它使用扫描功能找到配对设备。 因此、如果列出了 AP、STA 将尝试通过调用 sl_WlanConnect 来连接到现有 AP)并等待永远不会出现的连接事件。 我们当然会处理这种超时情况、我们的应用程序会再次进入"搜索"模式。 但是、当 AP 再次处于范围内时、将触发连接事件、但我们还不期待(尚未)... 由于应用程序没有时间知道 AP 已返回、因此它是之前对 sl_WlanConnect 的调用。

    当然,我们可以调整我们的应用,但从东道国的角度来看,似乎有一种"未定义"的状态。