apps/wireless/wapi/scan: Add frequency/rssi printf
Scan print layout: nsh> wapi scan wlan0 bssid / frequency / signal level / ssid **:**:**:**:**:** 2437 -38 <ssid> **:**:**:**:**:** 2427 -36 <ssid> ...
This commit is contained in:
parent
270b97190b
commit
7612221df6
@ -181,6 +181,8 @@ struct wapi_scan_info_s
|
||||
enum wapi_mode_e mode;
|
||||
int has_bitrate;
|
||||
int bitrate;
|
||||
int has_rssi;
|
||||
int rssi;
|
||||
};
|
||||
|
||||
/* Linked list container for routing table rows. */
|
||||
|
@ -747,13 +747,14 @@ static void wapi_scan_cmd(int sock, FAR const char *ifname)
|
||||
|
||||
/* Print found aps */
|
||||
|
||||
printf("bssid / frequency / signal level / ssid\n");
|
||||
for (info = list.head.scan; info; info = info->next)
|
||||
{
|
||||
printf(" %02x:%02x:%02x:%02x:%02x:%02x %s\n",
|
||||
printf("%02x:%02x:%02x:%02x:%02x:%02x\t%g\t%d\t%s\n",
|
||||
info->ap.ether_addr_octet[0], info->ap.ether_addr_octet[1],
|
||||
info->ap.ether_addr_octet[2], info->ap.ether_addr_octet[3],
|
||||
info->ap.ether_addr_octet[4], info->ap.ether_addr_octet[5],
|
||||
(info->has_essid ? info->essid : ""));
|
||||
info->freq, info->rssi, info->essid);
|
||||
}
|
||||
|
||||
/* Free ap list */
|
||||
|
@ -342,9 +342,35 @@ static int wapi_scan_event(FAR struct iw_event *event,
|
||||
}
|
||||
|
||||
case SIOCGIWFREQ:
|
||||
{
|
||||
info->has_freq = 1;
|
||||
|
||||
if (event->u.freq.e == 0)
|
||||
{
|
||||
/* Some drivers do not report frequency, but a channel.
|
||||
* Try to map this to frequency by assuming they are using
|
||||
* IEEE 802.11b/g. But don't overwrite a previously parsed
|
||||
* frequency if the driver sends both frequency and channel,
|
||||
* since the driver may be sending an A-band channel that we
|
||||
* don't handle here.
|
||||
*/
|
||||
|
||||
if (event->u.freq.m >= 1 && event->u.freq.m <= 13)
|
||||
{
|
||||
info->freq = 2407 + 5 * event->u.freq.m;
|
||||
}
|
||||
else if (event->u.freq.m == 14)
|
||||
{
|
||||
info->freq = 2484;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
info->freq = wapi_freq2float(&(event->u.freq));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SIOCGIWMODE:
|
||||
{
|
||||
@ -361,16 +387,19 @@ static int wapi_scan_event(FAR struct iw_event *event,
|
||||
}
|
||||
|
||||
case SIOCGIWESSID:
|
||||
{
|
||||
info->has_essid = 1;
|
||||
info->essid_flag = (event->u.data.flags) ? WAPI_ESSID_ON
|
||||
: WAPI_ESSID_OFF;
|
||||
memset(info->essid, 0, (WAPI_ESSID_MAX_SIZE + 1));
|
||||
if ((event->u.essid.pointer) && (event->u.essid.length))
|
||||
{
|
||||
memcpy(info->essid, event->u.essid.pointer, event->u.essid.length);
|
||||
memcpy(info->essid, event->u.essid.pointer,
|
||||
event->u.essid.length);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SIOCGIWRATE:
|
||||
|
||||
@ -383,7 +412,26 @@ static int wapi_scan_event(FAR struct iw_event *event,
|
||||
info->has_bitrate = 1;
|
||||
info->bitrate = event->u.bitrate.value;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case IWEVQUAL:
|
||||
{
|
||||
if (event->u.qual.updated & IW_QUAL_DBM)
|
||||
{
|
||||
info->has_rssi = 1;
|
||||
info->rssi = event->u.qual.level;
|
||||
|
||||
/* Report signal levels in dBm */
|
||||
|
||||
if (info->rssi >= 0x40)
|
||||
{
|
||||
info->rssi -= 0x100;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -1237,8 +1285,6 @@ alloc:
|
||||
return -errcode;
|
||||
}
|
||||
|
||||
printf("got %d bytes\n", wrq.u.data.length);
|
||||
|
||||
/* We have the results, process them. */
|
||||
|
||||
if (wrq.u.data.length)
|
||||
|
Loading…
x
Reference in New Issue
Block a user