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;
|
enum wapi_mode_e mode;
|
||||||
int has_bitrate;
|
int has_bitrate;
|
||||||
int bitrate;
|
int bitrate;
|
||||||
|
int has_rssi;
|
||||||
|
int rssi;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Linked list container for routing table rows. */
|
/* 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 */
|
/* Print found aps */
|
||||||
|
|
||||||
|
printf("bssid / frequency / signal level / ssid\n");
|
||||||
for (info = list.head.scan; info; info = info->next)
|
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[0], info->ap.ether_addr_octet[1],
|
||||||
info->ap.ether_addr_octet[2], info->ap.ether_addr_octet[3],
|
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->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 */
|
/* Free ap list */
|
||||||
|
@ -342,9 +342,35 @@ static int wapi_scan_event(FAR struct iw_event *event,
|
|||||||
}
|
}
|
||||||
|
|
||||||
case SIOCGIWFREQ:
|
case SIOCGIWFREQ:
|
||||||
|
{
|
||||||
info->has_freq = 1;
|
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));
|
info->freq = wapi_freq2float(&(event->u.freq));
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case SIOCGIWMODE:
|
case SIOCGIWMODE:
|
||||||
{
|
{
|
||||||
@ -361,16 +387,19 @@ static int wapi_scan_event(FAR struct iw_event *event,
|
|||||||
}
|
}
|
||||||
|
|
||||||
case SIOCGIWESSID:
|
case SIOCGIWESSID:
|
||||||
|
{
|
||||||
info->has_essid = 1;
|
info->has_essid = 1;
|
||||||
info->essid_flag = (event->u.data.flags) ? WAPI_ESSID_ON
|
info->essid_flag = (event->u.data.flags) ? WAPI_ESSID_ON
|
||||||
: WAPI_ESSID_OFF;
|
: WAPI_ESSID_OFF;
|
||||||
memset(info->essid, 0, (WAPI_ESSID_MAX_SIZE + 1));
|
memset(info->essid, 0, (WAPI_ESSID_MAX_SIZE + 1));
|
||||||
if ((event->u.essid.pointer) && (event->u.essid.length))
|
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;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case SIOCGIWRATE:
|
case SIOCGIWRATE:
|
||||||
|
|
||||||
@ -383,7 +412,26 @@ static int wapi_scan_event(FAR struct iw_event *event,
|
|||||||
info->has_bitrate = 1;
|
info->has_bitrate = 1;
|
||||||
info->bitrate = event->u.bitrate.value;
|
info->bitrate = event->u.bitrate.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
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;
|
return 0;
|
||||||
@ -1237,8 +1285,6 @@ alloc:
|
|||||||
return -errcode;
|
return -errcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("got %d bytes\n", wrq.u.data.length);
|
|
||||||
|
|
||||||
/* We have the results, process them. */
|
/* We have the results, process them. */
|
||||||
|
|
||||||
if (wrq.u.data.length)
|
if (wrq.u.data.length)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user