X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=iwinfo_cli.c;h=7cb90c22c5de8bc302ebb18f89de067e1270ab50;hb=e8a1e7d224918ba23fe0cd125e70907cb31aea31;hp=891f77e4f0bf67eed1f745989661c7460d263ff6;hpb=8ae758db52957939eeb6bc1c7da7be9d0339d3aa;p=project%2Fiwinfo.git diff --git a/iwinfo_cli.c b/iwinfo_cli.c index 891f77e..7cb90c2 100644 --- a/iwinfo_cli.c +++ b/iwinfo_cli.c @@ -744,10 +744,46 @@ static void print_countrylist(const struct iwinfo_ops *iw, const char *ifname) } } +static void print_htmodelist(const struct iwinfo_ops *iw, const char *ifname) +{ + int i, htmodes = 0; + + if (iw->htmodelist(ifname, &htmodes)) + { + printf("No HT mode information available\n"); + return; + } + + for (i = 0; i < ARRAY_SIZE(IWINFO_HTMODE_NAMES); i++) + if (htmodes & (1 << i)) + printf("%s ", IWINFO_HTMODE_NAMES[i]); + + printf("\n"); +} + +static void lookup_phy(const struct iwinfo_ops *iw, const char *section) +{ + char buf[IWINFO_BUFSIZE]; + + if (!iw->lookup_phy) + { + fprintf(stderr, "Not supported\n"); + return; + } + + if (iw->lookup_phy(section, buf)) + { + fprintf(stderr, "Phy not found\n"); + return; + } + + printf("%s\n", buf); +} + int main(int argc, char **argv) { - int i; + int i, rv = 0; char *p; const struct iwinfo_ops *iw; glob_t globbuf; @@ -762,6 +798,8 @@ int main(int argc, char **argv) " iwinfo freqlist\n" " iwinfo assoclist\n" " iwinfo countrylist\n" + " iwinfo htmodelist\n" + " iwinfo phyname
\n" ); return 1; @@ -791,49 +829,81 @@ int main(int argc, char **argv) return 0; } - iw = iwinfo_backend(argv[1]); - - if (!iw) + if (argc > 3) { - fprintf(stderr, "No such wireless device: %s\n", argv[1]); - return 1; - } + iw = iwinfo_backend_by_name(argv[1]); + + if (!iw) + { + fprintf(stderr, "No such wireless backend: %s\n", argv[1]); + rv = 1; + } + else + { + switch (argv[2][0]) + { + case 'p': + lookup_phy(iw, argv[3]); + break; - for (i = 2; i < argc; i++) + default: + fprintf(stderr, "Unknown command: %s\n", argv[2]); + rv = 1; + } + } + } + else { - switch(argv[i][0]) + iw = iwinfo_backend(argv[1]); + + if (!iw) { - case 'i': - print_info(iw, argv[1]); - break; + fprintf(stderr, "No such wireless device: %s\n", argv[1]); + rv = 1; + } + else + { + for (i = 2; i < argc; i++) + { + switch(argv[i][0]) + { + case 'i': + print_info(iw, argv[1]); + break; + + case 's': + print_scanlist(iw, argv[1]); + break; - case 's': - print_scanlist(iw, argv[1]); - break; + case 't': + print_txpwrlist(iw, argv[1]); + break; - case 't': - print_txpwrlist(iw, argv[1]); - break; + case 'f': + print_freqlist(iw, argv[1]); + break; - case 'f': - print_freqlist(iw, argv[1]); - break; + case 'a': + print_assoclist(iw, argv[1]); + break; - case 'a': - print_assoclist(iw, argv[1]); - break; + case 'c': + print_countrylist(iw, argv[1]); + break; - case 'c': - print_countrylist(iw, argv[1]); - break; + case 'h': + print_htmodelist(iw, argv[1]); + break; - default: - fprintf(stderr, "Unknown command: %s\n", argv[i]); - return 1; + default: + fprintf(stderr, "Unknown command: %s\n", argv[i]); + rv = 1; + } + } } } iwinfo_finish(); - return 0; + return rv; }