MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / wifi_scan_result_cache

Function wifi_scan_result_cache

components/drivers/wlan/dev_wlan_cmd.c:193–307  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

191}
192
193static rt_err_t wifi_scan_result_cache(struct rt_wlan_info *info)
194{
195 struct rt_wlan_info *ptable;
196 rt_err_t err = RT_EOK;
197 int i, insert = -1;
198 rt_base_t level;
199
200 if ((info == RT_NULL) || (info->ssid.len == 0)) return -RT_EINVAL;
201
202 LOG_D("ssid:%s len:%d mac:%02x:%02x:%02x:%02x:%02x:%02x", info->ssid.val, info->ssid.len,
203 info->bssid[0], info->bssid[1], info->bssid[2], info->bssid[3], info->bssid[4], info->bssid[5]);
204
205 /* scanning result filtering */
206 level = rt_hw_interrupt_disable();
207 if (scan_filter)
208 {
209 struct rt_wlan_info _tmp_info = *scan_filter;
210 rt_hw_interrupt_enable(level);
211 if (wifi_info_isequ(&_tmp_info, info) != RT_TRUE)
212 {
213 return RT_EOK;
214 }
215 }
216 else
217 {
218 rt_hw_interrupt_enable(level);
219 }
220
221 /* de-duplicatio */
222 for (i = 0; i < scan_result.num; i++)
223 {
224 if ((info->ssid.len == scan_result.info[i].ssid.len) &&
225 (rt_memcmp(&info->bssid[0], &scan_result.info[i].bssid[0], RT_WLAN_BSSID_MAX_LENGTH) == 0))
226 {
227 return RT_EOK;
228 }
229#ifdef RT_WLAN_SCAN_SORT
230 if (insert >= 0)
231 {
232 continue;
233 }
234 /* Signal intensity comparison */
235 if ((info->rssi < 0) && (scan_result.info[i].rssi < 0))
236 {
237 if (info->rssi > scan_result.info[i].rssi)
238 {
239 insert = i;
240 continue;
241 }
242 else if (info->rssi < scan_result.info[i].rssi)
243 {
244 continue;
245 }
246 }
247
248 /* Channel comparison */
249 if (info->channel < scan_result.info[i].channel)
250 {

Callers 1

user_ap_info_callbackFunction · 0.85

Calls 6

wifi_info_isequFunction · 0.85
rt_memcmpFunction · 0.85
rt_mallocFunction · 0.85
rt_freeFunction · 0.85
rt_hw_interrupt_disableFunction · 0.50
rt_hw_interrupt_enableFunction · 0.50

Tested by

no test coverage detected