X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/c02a9bd7aaf1e6fbfa829ec2e1b66cefce3268c5..2eb905f8ba355d71931c769d62bb491c8fcffc5e:/package/iwinfo/src/iwinfo_cli.c?ds=sidebyside diff --git a/package/iwinfo/src/iwinfo_cli.c b/package/iwinfo/src/iwinfo_cli.c index bfa1d88ef..4f8f5612c 100644 --- a/package/iwinfo/src/iwinfo_cli.c +++ b/package/iwinfo/src/iwinfo_cli.c @@ -311,6 +311,36 @@ static char * print_hardware_name(const struct iwinfo_ops *iw, const char *ifnam return buf; } +static char * print_txpower_offset(const struct iwinfo_ops *iw, const char *ifname) +{ + int off; + static char buf[12]; + + if (iw->txpower_offset(ifname, &off)) + snprintf(buf, sizeof(buf), "unknown"); + else if (off != 0) + snprintf(buf, sizeof(buf), "%d dB", off); + else + snprintf(buf, sizeof(buf), "none"); + + return buf; +} + +static char * print_frequency_offset(const struct iwinfo_ops *iw, const char *ifname) +{ + int off; + static char buf[12]; + + if (iw->frequency_offset(ifname, &off)) + snprintf(buf, sizeof(buf), "unknown"); + else if (off != 0) + snprintf(buf, sizeof(buf), "%.3f GHz", ((float)off / 1000.0)); + else + snprintf(buf, sizeof(buf), "none"); + + return buf; +} + static char * print_ssid(const struct iwinfo_ops *iw, const char *ifname) { char buf[IWINFO_ESSID_MAX_SIZE+1] = { 0 }; @@ -473,6 +503,10 @@ static void print_info(const struct iwinfo_ops *iw, const char *ifname) printf(" Hardware: %s [%s]\n", print_hardware_id(iw, ifname), print_hardware_name(iw, ifname)); + printf(" TX power offset: %s\n", + print_txpower_offset(iw, ifname)); + printf(" Frequency offset: %s\n", + print_frequency_offset(iw, ifname)); printf(" Supports VAPs: %s\n", print_mbssid_supp(iw, ifname)); } @@ -519,7 +553,7 @@ static void print_scanlist(const struct iwinfo_ops *iw, const char *ifname) static void print_txpwrlist(const struct iwinfo_ops *iw, const char *ifname) { - int len, pwr, i; + int len, pwr, off, i; char buf[IWINFO_BUFSIZE]; struct iwinfo_txpwrlist_entry *e; @@ -532,14 +566,17 @@ static void print_txpwrlist(const struct iwinfo_ops *iw, const char *ifname) if (iw->txpower(ifname, &pwr)) pwr = -1; + if (iw->txpower_offset(ifname, &off)) + off = 0; + for (i = 0; i < len; i += sizeof(struct iwinfo_txpwrlist_entry)) { e = (struct iwinfo_txpwrlist_entry *) &buf[i]; printf("%s%3d dBm (%4d mW)\n", (pwr == e->dbm) ? "*" : " ", - e->dbm, - e->mw); + e->dbm + off, + iwinfo_dbm2mw(e->dbm + off)); } }