apps/wireless/wapi: Fix problems in build support. Fix some initial compile isses (still does not compile).

This commit is contained in:
Gregory Nutt 2017-04-10 14:57:33 -06:00
parent 806d2c731a
commit aeb37c12b2
11 changed files with 140 additions and 49 deletions

View File

@ -38,7 +38,7 @@
#include <netinet/in.h>
#include <sys/socket.h>
#include <net/ethernet.h>
#include <linux/wireless.h>
#include <nuttx/wireless/wireless.h>
/****************************************************************************
* Pre-processor Definitions
@ -72,7 +72,7 @@ typedef struct wapi_list_t wapi_list_t;
typedef enum
{
WAPI_FREQ_AUTO = IW_FREQ_AUTO,
WAPI_FREQ_AUTO = IW_FREQ_AUTO,
WAPI_FREQ_FIXED = IW_FREQ_FIXED
} wapi_freq_flag_t;
@ -314,10 +314,12 @@ int wapi_get_routes(wapi_list_t * list);
*
****************************************************************************/
#ifdef CONFIG_NET_ROUTE
int wapi_add_route_gw(int sock, wapi_route_target_t targettype,
FAR const struct in_addr *target,
FAR const struct in_addr *netmask,
FAR const struct in_addr *gw);
#endif
/****************************************************************************
* Name: wapi_del_route_gw
@ -327,10 +329,12 @@ int wapi_add_route_gw(int sock, wapi_route_target_t targettype,
*
****************************************************************************/
#ifdef CONFIG_NET_ROUTE
int wapi_del_route_gw(int sock, wapi_route_target_t targettype,
FAR const struct in_addr *target,
FAR const struct in_addr *netmask,
FAR const struct in_addr *gw);
#endif
/****************************************************************************
* Name: wapi_get_we_version
@ -367,7 +371,7 @@ int wapi_get_freq(int sock, FAR const char *ifname, FAR double *freq,
*
****************************************************************************/
int wapi_set_freq(int sock, FARconst char *ifname, double freq,
int wapi_set_freq(int sock, FAR const char *ifname, double freq,
wapi_freq_flag_t flag);
/****************************************************************************

2
wireless/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/Kconfig

37
wireless/Make.defs Normal file
View File

@ -0,0 +1,37 @@
############################################################################
# apps/wireless/Make.defs
# Adds selected applications to apps/ build
#
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
include $(wildcard wireless/*/Make.defs)

38
wireless/Makefile Normal file
View File

@ -0,0 +1,38 @@
############################################################################
# apps/wireless/Makefile
#
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
MENUDESC = "Wireless Libraries and NSH Add-Ons"
include $(APPDIR)/Directory.mk

View File

@ -4,9 +4,9 @@
#
menuconfig WIRELESS_WAPI
bool "Temperature"
bool "IEEE802.11 Configuration Library"
default n
depends on EXPERIMENTAL
depends on NET && DRIVERS_WIRELESS && EXPERIMENTAL
---help---
Wapi is a tool by Volkan YAZICI <volkan.yazici@gmail.com> that can
be used to manage 802.11 network.
@ -14,7 +14,7 @@ menuconfig WIRELESS_WAPI
if WIRELESS_WAPI
config WIRELESS_WAPI_CMDTOOL
bool "Build command line tool"
bool "IEEE802.11 Command Line Tool"
default n
---help---
By default, Wapi is build as only a library. If this option is
@ -22,11 +22,11 @@ config WIRELESS_WAPI_CMDTOOL
will also be generated.
config WIRELESS_WAPI_ENABLE_SET
bool "Enable setting options"
bool "Enable Setting Options"
default n
config WIRELESS_WAPI_PROGNAME
string "Program name"
string "Program Name"
default "wapi"
depends on BUILD_KERNEL
---help---
@ -34,11 +34,11 @@ config WIRELESS_WAPI_PROGNAME
program is installed.
config WIRELESS_WAPI_STACKSIZE
int "Stack size (bytes)"
int "Stack Size (bytes)"
default 2048
config WIRELESS_WAPI_PRIORITY
int "Command priority"
int "Command Priority"
default 100
endif

View File

@ -53,6 +53,8 @@ ASRCS =
CSRCS =
MAINSRC =
VPATH = .
include $(APPDIR)/wireless/wapi/src/Make.defs
AOBJS = $(ASRCS:.S=$(OBJEXT))
@ -89,8 +91,6 @@ ROOTDEPPATH = --dep-path .
# Common build
VPATH =
all: .built
.PHONY: context depend clean distclean

View File

@ -43,7 +43,7 @@ endif
DEPPATH += --dep-path src
VPATH += :src
CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" $(APPDIR)/wirelss/wapi/src}
CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" $(APPDIR)/wireless/wapi/src}
endif

View File

@ -32,16 +32,19 @@
* Included Files
****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <net/route.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#include <net/route.h>
#include <netinet/in.h>
#include "util.h"
#include "include/wireless/wapi.h"
#include "wireless/wapi.h"
/****************************************************************************
* Private Functions
@ -56,7 +59,7 @@ static int wapi_get_addr(int sock, FAR const char *ifname, int cmd,
WAPI_VALIDATE_PTR(addr);
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, cmd, &ifr)) >= 0)
if ((ret = ioctl(sock, cmd, (unsigned long)((uintptr_t)&ifr))) >= 0)
{
struct sockaddr_in *sin = (struct sockaddr_in *)&ifr.ifr_addr;
memcpy(addr, &sin->sin_addr, sizeof(struct in_addr));
@ -82,7 +85,7 @@ static int wapi_set_addr(int sock, FAR const char *ifname, int cmd,
memcpy(&sin.sin_addr, addr, sizeof(struct in_addr));
memcpy(&ifr.ifr_addr, &sin, sizeof(struct sockaddr_in));
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, cmd, &ifr)) < 0)
if ((ret = ioctl(sock, cmd, (unsigned long)((uintptr_t)&ifr))) < 0)
{
WAPI_IOCTL_STRERROR(cmd);
}
@ -90,6 +93,7 @@ static int wapi_set_addr(int sock, FAR const char *ifname, int cmd,
return ret;
}
#ifdef CONFIG_NET_ROUTE
static int wapi_act_route_gw(int sock, int act,
wapi_route_target_t targettype,
FAR const struct in_addr *target,
@ -130,13 +134,14 @@ static int wapi_act_route_gw(int sock, int act,
rt.rt_flags |= RTF_HOST;
}
if ((ret = ioctl(sock, act, &rt)) < 0)
if ((ret = ioctl(sock, act, (unsigned long)((uintptr_t)&rt))) < 0)
{
WAPI_IOCTL_STRERROR(act);
}
return ret;
}
#endif
/****************************************************************************
* Public Functions
@ -161,7 +166,7 @@ int wapi_get_ifup(int sock, FAR const char *ifname, FAR int *is_up)
WAPI_VALIDATE_PTR(is_up);
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIFFLAGS, &ifr)) >= 0)
if ((ret = ioctl(sock, SIOCGIFFLAGS, (unsigned long)((uintptr_t)&ifr))) >= 0)
{
*is_up = (ifr.ifr_flags & IFF_UP) == IFF_UP;
}
@ -187,10 +192,10 @@ int wapi_set_ifup(int sock, FAR const char *ifname)
int ret;
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIFFLAGS, &ifr)) >= 0)
if ((ret = ioctl(sock, SIOCGIFFLAGS, (unsigned long)((uintptr_t)&ifr))) >= 0)
{
ifr.ifr_flags |= (IFF_UP | IFF_RUNNING);
ret = ioctl(sock, SIOCSIFFLAGS, &ifr);
ret = ioctl(sock, SIOCSIFFLAGS, (unsigned long)((uintptr_t)&ifr));
}
else
{
@ -214,10 +219,10 @@ int wapi_set_ifdown(int sock, FAR const char *ifname)
int ret;
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIFFLAGS, &ifr)) >= 0)
if ((ret = ioctl(sock, SIOCGIFFLAGS, (unsigned long)((uintptr_t)&ifr))) >= 0)
{
ifr.ifr_flags &= ~IFF_UP;
ret = ioctl(sock, SIOCSIFFLAGS, &ifr);
ret = ioctl(sock, SIOCSIFFLAGS, (unsigned long)((uintptr_t)&ifr));
}
else
{
@ -296,9 +301,9 @@ int wapi_set_netmask(int sock, FAR const char *ifname,
int wapi_get_routes(FAR wapi_list_t *list)
{
FAR FILE *fp;
int ret;
size_t bufsiz = WAPI_PROC_LINE_SIZE * sizeof(char);
char buf[WAPI_PROC_LINE_SIZE];
int ret;
WAPI_VALIDATE_PTR(list);
@ -389,7 +394,7 @@ int wapi_get_routes(FAR wapi_list_t *list)
/* Close file. */
fclose(fp);
return 0;
return ret;
}
/****************************************************************************
@ -400,6 +405,7 @@ int wapi_get_routes(FAR wapi_list_t *list)
*
****************************************************************************/
#ifdef CONFIG_NET_ROUTE
int wapi_add_route_gw(int sock, wapi_route_target_t targettype,
FAR const struct in_addr *target,
FAR const struct in_addr *netmask,
@ -407,6 +413,7 @@ int wapi_add_route_gw(int sock, wapi_route_target_t targettype,
{
return wapi_act_route_gw(sock, SIOCADDRT, targettype, target, netmask, gw);
}
#endif
/****************************************************************************
* Name: wapi_del_route_gw
@ -416,6 +423,7 @@ int wapi_add_route_gw(int sock, wapi_route_target_t targettype,
*
****************************************************************************/
#ifdef CONFIG_NET_ROUTE
int wapi_del_route_gw(int sock, wapi_route_target_t targettype,
FAR const struct in_addr *target,
FAR const struct in_addr *netmask,
@ -423,3 +431,4 @@ int wapi_del_route_gw(int sock, wapi_route_target_t targettype,
{
return wapi_act_route_gw(sock, SIOCDELRT, targettype, target, netmask, gw);
}
#endif

View File

@ -39,7 +39,7 @@
#include <sys/socket.h>
#include <sys/ioctl.h>
#include "include/wireless/wapi.h"
#include "wireless/wapi.h"
#include "util.h"
/****************************************************************************

View File

@ -40,7 +40,7 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include "include/wireless/wapi.h"
#include "wireless/wapi.h"
/* Gets current configuration of the @a ifname using WAPI accessors and prints

View File

@ -38,7 +38,7 @@
#include <nuttx/wireless/wireless.h>
#include "include/wireless/wapi.h"
#include "wireless/wapi.h"
#include "util.h"
/****************************************************************************
@ -351,7 +351,7 @@ int wapi_get_we_version(int sock, const char *ifname, FAR int *we_version)
/* Get WE version. */
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWRANGE, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWRANGE, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
struct iw_range *range = (struct iw_range *)buf;
*we_version = (int)range->we_version_compiled;
@ -382,7 +382,7 @@ int wapi_get_freq(int sock, FAR const char *ifname, FAR double *freq,
WAPI_VALIDATE_PTR(flag);
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWFREQ, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWFREQ, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
/* Set flag. */
@ -440,7 +440,7 @@ int wapi_set_freq(int sock, FARconst char *ifname, double freq,
}
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCSIWFREQ, &wrq);
ret = ioctl(sock, SIOCSIWFREQ, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCSIWFREQ);
@ -479,7 +479,7 @@ int wapi_freq2chan(int sock, FAR const char *ifname, double freq,
/* Get range. */
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWRANGE, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWRANGE, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
struct iw_range *range = (struct iw_range *)buf;
int k;
@ -539,7 +539,7 @@ int wapi_chan2freq(int sock, FAR const char *ifname, int chan,
/* Get range. */
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWRANGE, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWRANGE, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
struct iw_range *range = (struct iw_range *)buf;
int k;
@ -591,7 +591,7 @@ int wapi_get_essid(int sock, FAR const char *ifname, FAR char *essid,
wrq.u.essid.flags = 0;
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCGIWESSID, &wrq);
ret = ioctl(sock, SIOCGIWESSID, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCGIWESSID);
@ -629,7 +629,7 @@ int wapi_set_essid(int sock, FAR const char *ifname, FAR const char *essid,
wrq.u.essid.flags = (flag == WAPI_ESSID_ON);
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCSIWESSID, &wrq);
ret = ioctl(sock, SIOCSIWESSID, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCSIWESSID);
@ -654,7 +654,7 @@ int wapi_get_mode(int sock, FAR const char *ifname, FAR wapi_mode_t *mode)
WAPI_VALIDATE_PTR(mode);
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWMODE, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWMODE, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
ret = wapi_parse_mode(wrq.u.mode, mode);
}
@ -682,7 +682,7 @@ int wapi_set_mode(int sock, FAR const char *ifname, wapi_mode_t mode)
wrq.u.mode = mode;
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCSIWMODE, &wrq);
ret = ioctl(sock, SIOCSIWMODE, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCSIWMODE);
@ -737,7 +737,7 @@ int wapi_get_ap(int sock, FAR const char *ifname, FAR struct ether_addr *ap)
WAPI_VALIDATE_PTR(ap);
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWAP, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWAP, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
memcpy(ap, wrq.u.ap_addr.sa_data, sizeof(struct ether_addr));
}
@ -769,7 +769,7 @@ int wapi_set_ap(int sock, FAR const char *ifname,
memcpy(wrq.u.ap_addr.sa_data, ap, sizeof(struct ether_addr));
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCSIWAP, &wrq);
ret = ioctl(sock, SIOCSIWAP, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCSIWAP);
@ -796,7 +796,7 @@ int wapi_get_bitrate(int sock, FAR const char *ifname,
WAPI_VALIDATE_PTR(flag);
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWRATE, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWRATE, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
/* Check if enabled. */
if (wrq.u.bitrate.disabled)
@ -834,7 +834,7 @@ int wapi_set_bitrate(int sock, FAR const char *ifname, int bitrate,
wrq.u.bitrate.fixed = (flag == WAPI_BITRATE_FIXED);
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCSIWRATE, &wrq);
ret = ioctl(sock, SIOCSIWRATE, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCSIWRATE);
@ -887,7 +887,7 @@ int wapi_get_txpower(int sock, FAR const char *ifname, FAR int *power,
WAPI_VALIDATE_PTR(flag);
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWTXPOW, &wrq)) >= 0)
if ((ret = ioctl(sock, SIOCGIWTXPOW, (unsigned long)((uintptr_t)&wrq))) >= 0)
{
/* Check if enabled. */
@ -963,7 +963,7 @@ int wapi_set_txpower(int sock, FAR const char *ifname, int power,
/* Issue the set command. */
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCSIWTXPOW, &wrq);
ret = ioctl(sock, SIOCSIWTXPOW, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCSIWTXPOW);
@ -991,7 +991,7 @@ int wapi_scan_init(int sock, const char *ifname)
wrq.u.data.length = 0;
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(sock, SIOCSIWSCAN, &wrq);
ret = ioctl(sock, SIOCSIWSCAN, (unsigned long)((uintptr_t)&wrq));
if (ret < 0)
{
WAPI_IOCTL_STRERROR(SIOCSIWSCAN);
@ -1022,7 +1022,7 @@ int wapi_scan_stat(int sock, FAR const char *ifname)
wrq.u.data.length = 0;
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWSCAN, &wrq)) < 0)
if ((ret = ioctl(sock, SIOCGIWSCAN, (unsigned long)((uintptr_t)&wrq))) < 0)
{
if (errno == E2BIG)
{
@ -1090,7 +1090,8 @@ alloc:
wrq.u.data.length = buflen;
wrq.u.data.flags = 0;
strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
if ((ret = ioctl(sock, SIOCGIWSCAN, &wrq)) < 0 && errno == E2BIG)
if ((ret = ioctl(sock, SIOCGIWSCAN, (unsigned long)((uintptr_t)&wrq))) < 0 &&
errno == E2BIG)
{
char *tmp;