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.

[参考译文] CCS/CC3220:SDK WLAN 扫描错误报告

Guru**** 2562120 points
Other Parts Discussed in Thread: CC3220MOD

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/760910/ccs-cc3220-sdk-wlan-scan-bug-report

器件型号:CC3220

工具/软件:Code Composer Studio

你好。

我将 CC3220MOD 与"CC32XX SDK 2.30.00.05"和"sp_3.9.0.6_2.0.0.0_2.2.0.6.bin"服务包搭配使用、并且在开发过程中遇到了 WLAN 扫描问题。

器件设置为 AP 模式、扫描间隔设置为10秒(我不会发布整个项目代码、仅关注此处的错误)。

如果在启动扫描后调用"sl_WlanGetNetworkList"、则该函数应返回已扫描 WLAN 的数量或"sl_error_WLAN_get_network_list_EAGAIN"(这意味着扫描结果尚未就绪、应再次调用该函数)、但此函数发生了一些问题。

我在开发过程中使用了以下代码(此处为简化版本)来检索扫描结果。

void wlan_scan_test()
{
int32_t f_result;

uint32_t scan_timeout_ms、lapsed_time_ms;

SlWlanNetworkEntry_t scanned_wlan_info[30];

bool scan_finished;

scan_finished = false;

number_for_scanned_WLANs = 0;

SCAN_TIMEOUT_ms = 8000;

Elapsed_time_ms = 0;

操作
{
f_result = sl_WlanGetNetworkList (0、30、scanned_wlan_info);

switch (f_result)
{
案例(SL_ERROR_WLAN_GET_NETWORK_LIST_EAGAIN):
{
f_result = 0;

继续;
}
}

如果(f_result < 0)
{
while (1);//NWP 错误
}

if (elapsed_time_ms >= scan_timeout_ms)
{
//扫描超时已过。 完成。

scan_finished = true;
}
否则、如果(((0!= number_for_scanned_WLANs)&&
(F_RESULT = NUMBER_O_ON_SCAND_WLAN)
{
//扫描 fond 至少1个网络,最后检索到
//扫描的网络列表与当前检索的网络列表相同。
//或其扫描可能已完成、并且收集了足够的数据。

scan_finished = true;
}
其他
{
//扫描过程中未找到网络,或者扫描的网络数不断增加。
//继续检索扫描结果。

vTaskDelay (1000);//FreeRTOS 1000节拍超时(每个节拍为1 [ms])

Elapsed_time_ms += 1000;
}

number_for_scanned_WLANs = f_result;

f_result = 0;

}while (!scan_finished);

返回;
}


此代码运行正常、直到在没有任何 WLAN 的区域测试设备。
在没有任何 WLAN 的情况下、函数"sl_WlanGetNetworkList"会一直返回"sl_error_WLAN_get_network_list_EAGAIN"。
我假设函数"sl_WlanGetNetworkList"在未找到 WLAN 时应返回零(0)、但却未找到、我的代码被卡住。
所附示例的修复方法是在"switch"情况下将"Continue"语句替换为"break"语句、这将触发超时并保留此函数。

扫描功能的实施非常糟糕、无论我的问题是"sl_WlanGetNetworkList"如果找不到 WLAN、则永远不返回0、
扫描过程应报告某些事件或在完成时设置标志。
在当前实施中,我们必须保持共用扫描的网络列表,并在某个时候假设扫描已完成,而不知道它是否已完成。

此致。

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

    感谢您的反馈。 我将与团队分享这一点、以便在将来考虑。

    但是、我认为您的实施是好的、即使结果表明发现了0个网络、也应保持这种实施。 由于动态环境的性质或设备超出 AP 范围的可能性、我希望系统在这种情况下必须定期重新检查扫描结果。

    最棒的
    本·M