Skip to content

Commit 49c9975

Browse files
xiaoxiang781216patacongo
authored andcommitted
Wapi simplify (#1)
apps/wireless/wapi: Simplify usage of command line. Remove duplicate extensions
1 parent 0536c5b commit 49c9975

File tree

4 files changed

+80
-201
lines changed

4 files changed

+80
-201
lines changed

include/wireless/wapi.h

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ enum wapi_route_target_e
116116

117117
enum wapi_essid_flag_e
118118
{
119-
WAPI_ESSID_ON,
120-
WAPI_ESSID_OFF
119+
WAPI_ESSID_OFF,
120+
WAPI_ESSID_ON
121121
};
122122

123123
/* Supported operation modes. */
@@ -653,44 +653,6 @@ int wapi_scan_stat(int sock, FAR const char *ifname);
653653

654654
int wapi_scan_coll(int sock, FAR const char *ifname, FAR struct wapi_list_s *aps);
655655

656-
/************************************************************************************
657-
* Name: wpa_driver_wext_set_ssid
658-
*
659-
* Description:
660-
* Set SSID, SIOCSIWESSID
661-
*
662-
* Input Parameters:
663-
* sockfd - Opened network socket
664-
* ifname - Interface name
665-
* ssid - SSID
666-
* ssid_len - Length of SSID (0..32)
667-
*
668-
* Returned Value:
669-
* 0 on success, -1 on failure
670-
*
671-
************************************************************************************/
672-
673-
int wpa_driver_wext_set_ssid(int sockfd, FAR const char *ifname,
674-
FAR const uint8_t *ssid, size_t ssid_len);
675-
676-
/************************************************************************************
677-
* Name: wpa_driver_wext_set_mode
678-
*
679-
* Description:
680-
* Set wireless mode (infra/adhoc), SIOCSIWMODE
681-
*
682-
* Input Parameters:
683-
* sockfd - Opened network socket
684-
* ifname - Interface name
685-
* mode - 0 = infra/BSS (associate with an AP), 1 = adhoc/IBSS
686-
*
687-
* Returned Value:
688-
* 0 on success, -1 on failure
689-
*
690-
************************************************************************************/
691-
692-
int wpa_driver_wext_set_mode(int sockfd, FAR const char *ifname, int mode);
693-
694656
/************************************************************************************
695657
* Name: wpa_driver_wext_set_key_ext
696658
*

wireless/wapi/src/driver_wext.c

Lines changed: 3 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -69,97 +69,6 @@
6969
* Public Functions
7070
************************************************************************************/
7171

72-
/************************************************************************************
73-
* Name: wpa_driver_wext_set_ssid
74-
*
75-
* Description:
76-
* Set SSID, SIOCSIWESSID
77-
*
78-
* Input Parameters:
79-
* sockfd - Opened network socket
80-
* ifname - Interface name
81-
* ssid - SSID
82-
* ssid_len - Length of SSID (0..32)
83-
*
84-
* Returned Value:
85-
* 0 on success, -1 on failure
86-
*
87-
************************************************************************************/
88-
89-
int wpa_driver_wext_set_ssid(int sockfd, FAR const char *ifname,
90-
FAR const uint8_t *ssid, size_t ssid_len)
91-
{
92-
struct iwreq iwr;
93-
int ret = 0;
94-
char buf[33];
95-
96-
DEBUGASSERT(ifname != NULL && ssid != NULL && ssid_len > 0);
97-
98-
if (ssid_len > WAPI_ESSID_MAX_SIZE)
99-
{
100-
return -1;
101-
}
102-
103-
memset(&iwr, 0, sizeof(iwr));
104-
strncpy(iwr.ifr_name, ifname, IFNAMSIZ);
105-
106-
/* flags: 1 = ESSID is active, 0 = not (promiscuous) */
107-
108-
iwr.u.essid.flags = (ssid_len != 0);
109-
memset(buf, 0, sizeof(buf));
110-
memcpy(buf, ssid, ssid_len);
111-
iwr.u.essid.pointer = (caddr_t) buf;
112-
113-
iwr.u.essid.length = ssid_len;
114-
115-
if (ioctl(sockfd, SIOCSIWESSID, (unsigned long)&iwr) < 0)
116-
{
117-
nerr("ERROR: ioctl[SIOCSIWESSID]: %d", errno);
118-
ret = -1;
119-
}
120-
121-
return ret;
122-
}
123-
124-
/************************************************************************************
125-
* Name: wpa_driver_wext_set_mode
126-
*
127-
* Description:
128-
* Set wireless mode (infra/adhoc), SIOCSIWMODE
129-
*
130-
* Input Parameters:
131-
* sockfd - Opened network socket
132-
* ifname - Interface name
133-
* mode - 0 = infra/BSS (associate with an AP), 1 = adhoc/IBSS
134-
*
135-
* Returned Value:
136-
* 0 on success, -1 on failure
137-
*
138-
************************************************************************************/
139-
140-
int wpa_driver_wext_set_mode(int sockfd, FAR const char *ifname, int mode)
141-
{
142-
struct iwreq iwr;
143-
int ret = -1;
144-
145-
DEBUGASSERT(ifname != NULL);
146-
147-
memset(&iwr, 0, sizeof(iwr));
148-
strncpy(iwr.ifr_name, ifname, IFNAMSIZ);
149-
iwr.u.mode = mode;
150-
151-
if (ioctl(sockfd, SIOCSIWMODE, (unsigned long)&iwr) == 0)
152-
{
153-
ret = 0;
154-
goto done;
155-
}
156-
157-
nerr("ERROR: ioctl[SIOCSIWMODE]: %d", errno);
158-
159-
done:
160-
return ret;
161-
}
162-
16372
/************************************************************************************
16473
* Name: wpa_driver_wext_set_key_ext
16574
*
@@ -272,7 +181,7 @@ int wpa_driver_wext_associate(FAR struct wpa_wconfig_s *wconfig)
272181

273182
strncpy(req.ifr_name, wconfig->ifname, IFNAMSIZ);
274183

275-
ret = wpa_driver_wext_set_mode(sockfd, wconfig->ifname, wconfig->sta_mode);
184+
ret = wapi_set_mode(sockfd, wconfig->ifname, wconfig->sta_mode);
276185
if (ret < 0)
277186
{
278187
nerr("ERROR: Fail set sta mode: %d\n", ret);
@@ -306,8 +215,8 @@ int wpa_driver_wext_associate(FAR struct wpa_wconfig_s *wconfig)
306215
goto close_socket;
307216
}
308217

309-
ret = wpa_driver_wext_set_ssid(sockfd, wconfig->ifname, wconfig->ssid,
310-
wconfig->ssidlen);
218+
ret = wapi_set_essid(sockfd, wconfig->ifname,
219+
(FAR const char *)wconfig->ssid, WAPI_ESSID_ON);
311220
if (ret < 0)
312221
{
313222
nerr("ERROR: Fail set ssid: %d\n", ret);

wireless/wapi/src/wapi.c

Lines changed: 48 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
* Included Files
3939
****************************************************************************/
4040

41+
#include <ctype.h>
4142
#include <stdio.h>
4243
#include <stdlib.h>
4344
#include <unistd.h>
@@ -76,8 +77,7 @@ typedef void (*cmd3_t)(int sock, FAR const char *arg1,
7677

7778
static int wapi_str2int(FAR const char *str);
7879
static double wapi_str2double(FAR const char *str);
79-
static unsigned int wapi_str2ndx(FAR const char *name, FAR const char **list,
80-
unsigned int listlen);
80+
static unsigned int wapi_str2ndx(FAR const char *name, FAR const char **list);
8181

8282
static void wapi_show_cmd(int sock, FAR const char *ifname);
8383
static void wapi_ip_cmd(int sock, FAR const char *ifname,
@@ -185,12 +185,18 @@ static double wapi_str2double(FAR const char *str)
185185
*
186186
****************************************************************************/
187187

188-
static unsigned int wapi_str2ndx(FAR const char *name, FAR const char **list,
189-
unsigned int listlen)
188+
static unsigned int wapi_str2ndx(FAR const char *name, FAR const char **list)
190189
{
191190
unsigned int ndx;
192191

193-
for (ndx = 0; ndx < listlen; ndx++)
192+
/* Check the first character is enough, all prefix with WAPI_* */
193+
194+
if (isdigit(name[0]))
195+
{
196+
return atoi(name);
197+
}
198+
199+
for (ndx = 0; list[ndx]; ndx++)
194200
{
195201
if (strcmp(name, list[ndx]) == 0)
196202
{
@@ -200,9 +206,9 @@ static unsigned int wapi_str2ndx(FAR const char *name, FAR const char **list,
200206

201207
WAPI_ERROR("ERROR: Invalid option string: %s\n", name);
202208
WAPI_ERROR(" Valid options include:\n");
203-
for (ndx = 0; ndx < listlen; ndx++)
209+
for (ndx = 0; list[ndx]; ndx++)
204210
{
205-
WAPI_ERROR(" - %s\n", list[ndx]);
211+
WAPI_ERROR(" - [%d] %s\n", ndx, list[ndx]);
206212
}
207213

208214
exit(EXIT_FAILURE);
@@ -456,8 +462,7 @@ static void wapi_freq_cmd(int sock, FAR const char *ifname,
456462
/* Convert input strings to values */
457463

458464
frequency = wapi_str2double(freqstr);
459-
freq_flag = (enum wapi_freq_flag_e)wapi_str2ndx(flagstr, g_wapi_freq_flags,
460-
IW_FREQ_NFLAGS);
465+
freq_flag = (enum wapi_freq_flag_e)wapi_str2ndx(flagstr, g_wapi_freq_flags);
461466

462467
/* Set the frequency */
463468

@@ -487,7 +492,7 @@ static void wapi_essid_cmd(int sock, FAR const char *ifname,
487492

488493
/* Convert input strings to values */
489494

490-
essid_flag = (enum wapi_essid_flag_e)wapi_str2ndx(flagstr, g_wapi_essid_flags, 2);
495+
essid_flag = (enum wapi_essid_flag_e)wapi_str2ndx(flagstr, g_wapi_essid_flags);
491496

492497
/* Set the ESSID */
493498

@@ -517,7 +522,7 @@ static void wapi_mode_cmd(int sock, FAR const char *ifname,
517522

518523
/* Convert input strings to values */
519524

520-
mode = (enum wapi_mode_e)wapi_str2ndx(modestr, g_wapi_modes, IW_MODE_NFLAGS);
525+
mode = (enum wapi_mode_e)wapi_str2ndx(modestr, g_wapi_modes);
521526

522527
/* Set operating mode */
523528

@@ -584,7 +589,7 @@ static void wapi_bitrate_cmd(int sock, FAR const char *ifname,
584589

585590
bitrate = wapi_str2int(ratestr);
586591
bitrate_flag = (enum wapi_bitrate_flag_e)
587-
wapi_str2ndx(flagstr, g_wapi_bitrate_flags, 2);
592+
wapi_str2ndx(flagstr, g_wapi_bitrate_flags);
588593

589594
/* Set bitrate */
590595

@@ -617,7 +622,7 @@ static void wapi_txpower_cmd(int sock, FAR const char *ifname,
617622

618623
txpower = wapi_str2int(pwrstr);
619624
txpower_flag = (enum wapi_txpower_flag_e)
620-
wapi_str2ndx(flagstr, g_wapi_txpower_flags, IW_TXPOW_NFLAGS);
625+
wapi_str2ndx(flagstr, g_wapi_txpower_flags);
621626

622627
/* Set txpower */
623628

@@ -650,16 +655,23 @@ static void wapi_scan_cmd(int sock, FAR const char *ifname)
650655
/* Start scan */
651656

652657
ret = wapi_scan_init(sock, ifname);
653-
WAPI_ERROR("ERROR: wapi_scan_init() failed: %d\n", ret);
658+
if (ret < 0)
659+
{
660+
WAPI_ERROR("ERROR: wapi_scan_init() failed: %d\n", ret);
661+
return;
662+
}
654663

655664
/* Wait for completion */
656665

657666
do
658667
{
659668
sleep(sleepdur);
660669
ret = wapi_scan_stat(sock, ifname);
661-
WAPI_ERROR("ERROR: wapi_scan_stat() failed: %d, sleeptries: %d\n",
662-
ret, sleeptries);
670+
if (ret < 0)
671+
{
672+
WAPI_ERROR("ERROR: wapi_scan_stat() failed: %d, sleeptries: %d\n",
673+
ret, sleeptries);
674+
}
663675
}
664676
while (--sleeptries > 0 && ret > 0);
665677

@@ -716,46 +728,46 @@ static void wapi_showusage(FAR const char *progname, int exitcode)
716728
{
717729
int i;
718730

719-
fprintf(stderr, "Usage: %s show <ifname>\n", progname);
720-
fprintf(stderr, " %s scan <ifname>\n", progname);
721-
fprintf(stderr, " %s ip <ifname> <IP address>\n", progname);
722-
fprintf(stderr, " %s mask <ifname> <mask>\n", progname);
723-
fprintf(stderr, " %s freq <ifname> <frequency> <flag>\n", progname);
724-
fprintf(stderr, " %s essid <ifname> <essid> <flag>\n", progname);
725-
fprintf(stderr, " %s mode <ifname> <ifname> <mode>\n", progname);
726-
fprintf(stderr, " %s ap <ifname> <ifname> <MAC address>\n", progname);
727-
fprintf(stderr, " %s bitrate <ifname> <bitrate> <flag>\n", progname);
728-
fprintf(stderr, " %s txpower <ifname> <txpower> <flag>\n", progname);
731+
fprintf(stderr, "Usage: %s show <ifname>\n", progname);
732+
fprintf(stderr, " %s scan <ifname>\n", progname);
733+
fprintf(stderr, " %s ip <ifname> <IP address>\n", progname);
734+
fprintf(stderr, " %s mask <ifname> <mask>\n", progname);
735+
fprintf(stderr, " %s freq <ifname> <frequency> <index/flag>\n", progname);
736+
fprintf(stderr, " %s essid <ifname> <essid> <index/flag>\n", progname);
737+
fprintf(stderr, " %s mode <ifname> <ifname> <index/mode>\n", progname);
738+
fprintf(stderr, " %s ap <ifname> <ifname> <MAC address>\n", progname);
739+
fprintf(stderr, " %s bitrate <ifname> <bitrate> <index/flag>\n", progname);
740+
fprintf(stderr, " %s txpower <ifname> <txpower> <index/flag>\n", progname);
729741
fprintf(stderr, " %s help\n", progname);
730742

731743
fprintf(stderr, "\nFrequency Flags:\n");
732-
for (i = 0; i < IW_FREQ_NFLAGS; i++)
744+
for (i = 0; g_wapi_freq_flags[i]; i++)
733745
{
734-
fprintf(stderr, " %s\n", g_wapi_freq_flags[i]);
746+
fprintf(stderr, " [%d] %s\n", i, g_wapi_freq_flags[i]);
735747
}
736748

737749
fprintf(stderr, "\nESSID Flags:\n");
738-
for (i = 0; i < 2; i++)
750+
for (i = 0; g_wapi_essid_flags[i]; i++)
739751
{
740-
fprintf(stderr, " %s\n", g_wapi_essid_flags[i]);
752+
fprintf(stderr, " [%d] %s\n", i, g_wapi_essid_flags[i]);
741753
}
742754

743755
fprintf(stderr, "\nOperating Modes:\n");
744-
for (i = 0; i < IW_MODE_NFLAGS; i++)
756+
for (i = 0; g_wapi_modes[i]; i++)
745757
{
746-
fprintf(stderr, " %s\n", g_wapi_modes[i]);
758+
fprintf(stderr, " [%d] %s\n", i, g_wapi_modes[i]);
747759
}
748760

749761
fprintf(stderr, "\nBitrate Flags:\n");
750-
for (i = 0; i < 2; i++)
762+
for (i = 0; g_wapi_bitrate_flags[i]; i++)
751763
{
752-
fprintf(stderr, " %s\n", g_wapi_bitrate_flags[i]);
764+
fprintf(stderr, " [%d] %s\n", i, g_wapi_bitrate_flags[i]);
753765
}
754766

755767
fprintf(stderr, "\nTX power Flags:\n");
756-
for (i = 0; i < IW_TXPOW_NFLAGS; i++)
768+
for (i = 0; g_wapi_txpower_flags[i]; i++)
757769
{
758-
fprintf(stderr, " %s\n", g_wapi_txpower_flags[i]);
770+
fprintf(stderr, " [%d] %s\n", i, g_wapi_txpower_flags[i]);
759771
}
760772

761773
exit(exitcode);

0 commit comments

Comments
 (0)