CC3200 STA模式下读取RSSI值没变化
我在一个TASK中开启了Wlan扫描策略,每隔5s扫描一次,在以后的代码里面都没有disable scan
int wlan_scan_background()
{
unsigned char policyOpt;
unsigned long IntervalVal = 5;
int lRetVal;
// enable scan
policyOpt = SL_SCAN_POLICY(1);
// set scan policy - this starts the scan
lRetVal = sl_WlanPolicySet(SL_POLICY_SCAN , policyOpt,
(unsigned char *)(IntervalVal), sizeof(IntervalVal));
return lRetVal;
}
然后在另一个Task中调用sl_WlanGetNetworkList 获取当前连接的AP的RSSI值,可是不管AP离设备多远,有没有遮挡,每次读取到的RSSI值都不变,问题出在哪?下面是获取的代码。
int get_scan_result(Sl_WlanNetworkEntry_t* netEntries )
{
int lRetVal;
#define SCAN_TABLE_SIZE 20
// lRetVal indicates the valid number of entries
// The scan results are occupied in netEntries[]
lRetVal = sl_WlanGetNetworkList(0, SCAN_TABLE_SIZE, netEntries);
if(lRetVal == -1)
{
UART_PRINT("can not get scan results...\r\n");
}
return lRetVal;
}
在读取RSSI信号质量的时候,需要增加一点延时,不能连续不间断的读取,在读取时候增加延时后进行读取
谢谢 Terry的回复, 我读RSSI的TASK是 每隔3s读一次,而且每次读之前都osi_Sleep了 200ms, 可是都出来的还是一样的, 感觉好像底层就没有scan。每次断开重新启动设备的时候 值才会变一次。
|
/启动扫描热点
ui_policy_inv = 5;
ucpolicy_opt = SL_SCAN_POLICY(1);
ret_val = sl_WlanPolicySet(SL_POLICY_SCAN, ucpolicy_opt, (unsigned
char
*)(&ui_policy_inv),
sizeof
(ui_policy_inv));
if
(ret_val < 0){
DO_Printf(
"Wlan Enable Scan Policy Failure.\r\n"
);
goto
return_point;
}
开启扫描热点后,等待一段时间,让芯片内部去扫描一些结果,然后循环去查询这个结果列表
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
谢谢Terry,我好像发现问题了
我的问题应该是出在这行
// set scan policy - this starts the scan
lRetVal = sl_WlanPolicySet(SL_POLICY_SCAN , policyOpt,
(unsigned char *)(IntervalVal), sizeof(IntervalVal));
IntervalVal 传入的时候应该是 传入引用的 应该这么写 (unsigned char *)(&IntervalVal),现在变成传值转换了。
不过这段代码是从1.2.0的SDK里面的antenna_selection 里面copy过来的,没多加考虑。SDK这个地方应该是错误的。
你们Check一下,SDK这个地方是不是有问题?