首先,用SDK中的network_terminal的demo程序,扫描出来的AP结果每次都是一样的,比如说,我先打开路由器A,输入scan -n 30扫描30个AP结果,其中有A路由器,然后断开路由器A,再扫描一次,结果没有变化,还是有路由器A,而且等待几分钟后再尝试依旧如此。比如重启后再扫描,结果才能更新,是不是CC3235S缓存了扫描结果,如果是,那么怎样才能手动删除缓存结果。
自己开发过程中也是遇到了这种问题,偶尔需要扫码一下AP,结果每次扫出来的结果都是一样的,代码如下
int get_ap_list(SlWlanNetworkEntry_t *pAp_entry,int entry_number)
{
int ret_val;
int ret = 0;
int i;
UART_PRINT( "start scan \n\r");
ret_val = sl_WlanPolicySet(SL_WLAN_POLICY_SCAN, SL_WLAN_SCAN_POLICY_EN(1), NULL,0);
if(ret_val < 0)
{
UART_PRINT("enable scan policy failed, ret = %d\n\r",ret_val);
}
/*延时一定时间,等待扫描完成*/
mdelay(500);
for(i=0;i<10;i++)
{
ret = sl_WlanGetNetworkList(0, entry_number, pAp_entry);
if(ret >0)
break;
else if(i == 9)
{
UART_PRINT("sl_WlanGetNetworkList Failed, ret = %d\n\r",ret);
soft_reset();
}
msleep(1000);
}
UART_PRINT( "end scan \n\r");
ret_val = sl_WlanPolicySet(SL_WLAN_POLICY_SCAN, SL_WLAN_SCAN_POLICY_EN(0), NULL,0);
if(ret_val < 0)
{
UART_PRINT("enable scan policy failed, ret = %d\n\r",ret_val);
}
return ret;
}