Merge remote-tracking branch 'origin/master' into composite

This commit is contained in:
Gregory Nutt 2017-06-19 17:26:00 -06:00
commit f29dc98512
42 changed files with 917 additions and 381 deletions

View File

@ -1906,7 +1906,7 @@
Kivilinna (2017-04-03).
* NSH: Fix some warnings about integer/pointer casts of different sizes
(probably only effects 64-bit simulation) (2017-04-03).
* examples/nettest: Trying to adapt to use for testing 6loWPAN
* examples/nettest: Trying to adapt to use for testing 6LoWPAN
(2017-04-03).
* examples/nettest: If doing loopback, but not using the official
loopback device, then use the server should use the configured client
@ -1925,10 +1925,10 @@
default is +x. No printing of a trace of script commands as they are
executed. From David Sidrane (2017-04-05).
* Print expanded variables if -x. From David Sidrane (2017-04-05).
* examples/udpblaster: Several fixes to work with 6loWPAN (2017-04-06).
* examples/udpblaster: Several fixes to work with 6LoWPAN (2017-04-06).
* examples/udpblaster: Add logic to bind the local UDP socket to a
well-known address (2017-04-06).
* 6loWPAN: Add network IOCTL support to set the node address
* 6LoWPAN: Add network IOCTL support to set the node address
(2017-04-06).
* examples/ostest: Add tests for pthread_rwlock. Adding tests to be
used to verify the pthread_rwlock lock works. From Mark Schulte
@ -1937,9 +1937,9 @@
unconditionally (2017-04-07).
* examples/ostest: pthread rwlock additional tests and bugfixes. From
Mark Schulte (2017-04-07).
* netutils: Add a helper function to convert a string to a 6loWPAN node
* netutils: Add a helper function to convert a string to a 6LoWPAN node
address (2017-04-08).
* NSH library: Extend ifconfig to support 6loWPAN. Adapt to some
* NSH library: Extend ifconfig to support 6LoWPAN. Adapt to some
changes in configuration variable usage (2017-04-08).
* NSH set command: Eliminate useless argc check of SCRIPTS are enabled
but ENVIRONMENT is disabled (2017-04-09).
@ -1995,7 +1995,7 @@
eth0 for network device name (2017-05-02).
* wireless/wext: Add drivers_wext from the WPA supplicant; Integrate
into NSH. From Simon Piriou (2017-05-02).
* 6loWPAN: Replace some Rime address naming with more consistent
* 6LoWPAN: Replace some Rime address naming with more consistent
short/exended address terminology (2017-05-04).
* wireless/ieee802154: Removes libradio to coincide with removal of
ioctl with radio. Moves all functionality from libradio to libmac.

View File

@ -12,9 +12,79 @@ config EXAMPLES_UDP
if EXAMPLES_UDP
config EXAMPLES_UDP_SERVER
bool "Target is the server"
config EXAMPLES_UDP_SERVER1
bool "Target1 is the server"
default n
---help---
By default Target1 is the client and the host PC is the server
config EXAMPLES_UDP_PROGNAME1
string "Target1 program name"
default "udpserver" if EXAMPLES_UDP_SERVER1
default "udpclient" if !EXAMPLES_UDP_SERVER1
depends on BUILD_KERNEL
---help---
This is the name of the Target1 program that will be use when the
NSH ELF program is installed.
config EXAMPLES_UDP_PRIORITY1
int "Target1 task priority"
default 100
config EXAMPLES_UDP_STACKSIZE1
int "Target1 stack size"
default 2048
config EXAMPLES_UDP_TARGET2
bool "Second endpoint is a target"
default n
---help---
By default, the host PC is configured as the second endpoint of the
UDP test. If this option is selected, then the second endpoint
will be built into the FLASH image as well. This means that you
can use two target boards to run the test with not host PC
involvement.
if EXAMPLES_UDP_TARGET2
config EXAMPLES_UDP_PROGNAME2
string "Target2 program name"
default "udpserver" if !EXAMPLES_UDP_SERVER2
default "udpclient" if EXAMPLES_UDP_SERVER2
depends on BUILD_KERNEL
---help---
This is the name of the Target2 program that will be use when the
NSH ELF program is installed.
config EXAMPLES_UDP_PRIORITY2
int "Target2 task priority"
default 100
config EXAMPLES_UDP_STACKSIZE2
int "Target2 stack size"
default 2048
endif # EXAMPLES_UDP_TARGET2
config EXAMPLES_UDP_DEVNAME
string "Network device"
default "eth0"
config EXAMPLES_UDP_NETINIT
bool "Initialize network"
default n if NSH_NETINIT
default y if !NSH_NETINIT
---help---
Selecting this option will enable logic in the example to perform
some basic initialization of the network. You would probably only
want to do this if the example is running stand-alone. If the
example is running as an NSH command, then the network as already
been initialized.
This basic initialization currently only supports basic
initialization of Ethernet network devices. For other exotic
network devices this initialization should be suppressed. Such
devices will require other, external initialization.
choice
prompt "IP Domain"
@ -35,6 +105,8 @@ if EXAMPLES_UDP_IPv4
comment "IPv4 addresses"
if EXAMPLES_UDP_NETINIT
config EXAMPLES_UDP_IPADDR
hex "Target IP address"
default 0x0a000002
@ -47,16 +119,17 @@ config EXAMPLES_UDP_NETMASK
hex "Network mask"
default 0xffffff00
endif # !EXAMPLES_UDP_NETINIT
config EXAMPLES_UDP_SERVERIP
hex "Server IP address"
default 0x0a000001 if !EXAMPLES_UDP_SERVER
default 0x0a000002 if EXAMPLES_UDP_SERVER
default 0x0a000001 if !EXAMPLES_UDP_SERVER1
default 0x0a000002 if EXAMPLES_UDP_SERVER1
endif # EXAMPLES_UDP_IPv4
if EXAMPLES_UDP_IPv6
if !NET_ICMPv6_AUTOCONF
if !NET_ICMPv6_AUTOCONF && EXAMPLES_UDP_NETINIT
comment "Target IPv6 address"
@ -306,7 +379,7 @@ config EXAMPLES_UDP_IPv6NETMASK_8
endif # NET_ICMPv6_AUTOCONF
comment "Server IPv6 address"
comment "Default Server IPv6 address"
config EXAMPLES_UDP_SERVERIPv6ADDR_1
hex "[0]"
@ -422,8 +495,8 @@ config EXAMPLES_UDP_SERVERIPv6ADDR_7
config EXAMPLES_UDP_SERVERIPv6ADDR_8
hex "[7]"
default 0x0001 if !EXAMPLES_UDP_SERVER
default 0x0002 if EXAMPLES_UDP_SERVER
default 0x0001 if !EXAMPLES_UDP_SERVER1
default 0x0002 if EXAMPLES_UDP_SERVER1
range 0x0 0xffff
---help---
IP address of the server. If the target is the server, then

View File

@ -39,25 +39,94 @@ include $(APPDIR)/Make.defs
# UDP Test
TARG_ASRCS =
TARG_CSRCS =
ifeq ($(CONFIG_EXAMPLES_UDP_SERVER),y)
TARG_CSRCS += udp-server.c
else
TARG_CSRCS += udp-client.c
TARGCMN_CSRCS = udp_cmdline.c
ifeq ($(CONFIG_EXAMPLES_UDP_NETINIT),y)
TARGCMN_CSRCS += target_netinit.c
endif
TARG_MAINSRC = target.c
TARGCMN_COBJS = $(TARGCMN_CSRCS:.c=$(OBJEXT))
TARG_AOBJS = $(TARG_ASRCS:.S=$(OBJEXT))
TARG_COBJS = $(TARG_CSRCS:.c=$(OBJEXT))
TARG_MAINOBJ = $(TARG_MAINSRC:.c=$(OBJEXT))
# Target 1
TARG_SRCS = $(TARG_ASRCS) $(TARG_CSRCS) $(TARG_MAINSRC)
TARG_OBJS = $(TARG_AOBJS) $(TARG_COBJS)
TARG1_CRCS =
ifeq ($(CONFIG_EXAMPLES_UDP_SERVER1),y)
TARG1_CRCS += udp_server.c
else
TARG1_CRCS += udp_client.c
endif
TARG1_MAINSRC = target1.c
TARG1_COBJS = $(TARG1_CRCS:.c=$(OBJEXT))
TARG1_MAINOBJ = $(TARG1_MAINSRC:.c=$(OBJEXT))
ifeq ($(CONFIG_EXAMPLES_UDP_SERVER1),y)
CONFIG_EXAMPLES_UDP_PROGNAME1 ?= udpserver
APPNAME1 = udpserver
else
CONFIG_EXAMPLES_UDP_PROGNAME1 ?= udpclient
APPNAME1 = udpclient
endif
CONFIG_EXAMPLES_UDP_PRIORITY1 ?= 100
CONFIG_EXAMPLES_UDP_STACKSIZE1 ?= 2048
PROGNAME1 = $(CONFIG_EXAMPLES_UDP_PROGNAME1)
PRIORITY1 = $(CONFIG_EXAMPLES_UDP_PRIORITY1)
STACKSIZE1 = $(CONFIG_EXAMPLES_UDP_STACKSIZE1)
# Target 2
ifeq ($(CONFIG_EXAMPLES_UDP_TARGET2),y)
TARG2_CRCS =
ifeq ($(CONFIG_EXAMPLES_UDP_SERVER1),y)
TARG2_CRCS += udp_client.c
else
TARG2_CRCS += udp_server.c
endif
TARG2_MAINSRC = target2.c
TARG2_COBJS = $(TARG2_CRCS:.c=$(OBJEXT))
TARG2_MAINOBJ = $(TARG2_MAINSRC:.c=$(OBJEXT))
ifeq ($(CONFIG_EXAMPLES_UDP_SERVER1),y)
CONFIG_EXAMPLES_UDP_PROGNAME2 ?= udpclient
APPNAME2 = udpclient
else
CONFIG_EXAMPLES_UDP_PROGNAME2 ?= udpserver
APPNAME2 = udpserver
endif
CONFIG_EXAMPLES_UDP_PRIORITY2 ?= 100
CONFIG_EXAMPLES_UDP_STACKSIZE2 ?= 2048
PROGNAME2 = $(CONFIG_EXAMPLES_UDP_PROGNAME2)
PRIORITY2 = $(CONFIG_EXAMPLES_UDP_PRIORITY2)
STACKSIZE2 = $(CONFIG_EXAMPLES_UDP_STACKSIZE2)
endif
TARG_SRCS = $(TARG1_CRCS) $(TARG1_MAINSRC) $(TARG2_CRCS) $(TARG2_MAINSRC) $(TARGCMN_CSRCS)
TARG_OBJS = $(TARG1_COBJS) $(TARG2_COBJS) $(TARGCMN_COBJS)
ifneq ($(CONFIG_BUILD_KERNEL),y)
TARG_OBJS += $(TARG_MAINOBJ)
TARG_OBJS += $(TARG1_MAINOBJ) $(TARG2_MAINOBJ)
endif
# Host
ifneq ($(CONFIG_EXAMPLES_UDP_TARGET2),y)
HOSTCFLAGS += -DEXAMPLES_UDP_HOST=1
HOSTOBJSEXT ?= o1
HOST_SRCS = host.c udp_cmdline.c
ifeq ($(CONFIG_EXAMPLES_UDP_SERVER1),y)
HOST_SRCS += udp_client.c
else
HOST_SRCS += udp_server.c
endif
HOST_OBJS = $(HOST_SRCS:.c=.$(HOSTOBJSEXT))
HOST_BIN = host$(EXEEXT)
endif
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
@ -70,27 +139,19 @@ else
endif
endif
HOSTCFLAGS += -DEXAMPLES_UDP_HOST=1
HOST_SRCS = host.c
ifeq ($(CONFIG_EXAMPLES_UDP_SERVER),y)
HOST_SRCS += udp-client.c
ifeq ($(CONFIG_EXAMPLES_UDP_TARGET2),y)
MAINNAME1 = udp1_main
MAINNAME2 = udp2_main
else
HOST_SRCS += udp-server.c
MAINNAME1 = udp_main
endif
HOST_OBJS = $(HOST_SRCS:.c=.o)
HOST_BIN = host
ifeq ($(WINTOOL),y)
INSTALL_DIR = "${shell cygpath -w $(BIN_DIR)}"
else
INSTALL_DIR = $(BIN_DIR)
endif
CONFIG_XYZ_PROGNAME ?= udp$(EXEEXT)
PROGNAME = $(CONFIG_XYZ_PROGNAME)
ROOTDEPPATH = --dep-path .
# Common build
@ -98,45 +159,61 @@ ROOTDEPPATH = --dep-path .
VPATH =
all: .built
.PHONY: clean depend distclean
.PHONY: clean depend distclean preconfig
$(TARG_AOBJS): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@)
$(TARG_COBJS) $(TARG_MAINOBJ): %$(OBJEXT): %.c
$(TARG1_COBJS) $(TARG1_MAINOBJ)$(TARG2_COBJS) $(TARG2_MAINOBJ) $(TARGCMN_COBJS): %$(OBJEXT): %.c
$(call COMPILE, $<, $@)
$(TARG_BIN): $(TARG_OBJS) $(HOST_BIN)
$(call ARCHIVE, $@, $(TARG_OBJS))
$(HOST_OBJS): %.o: %.c
ifneq ($(CONFIG_EXAMPLES_UDP_TARGET2),y)
$(HOST_OBJS): %.$(HOSTOBJSEXT): %.c
@echo "CC: $<"
$(Q) $(HOSTCC) -c $(HOSTCFLAGS) $< -o $@
endif
config.h: $(TOPDIR)/include/nuttx/config.h
@echo "CP: $<"
$(Q) cp $< $@
ifneq ($(CONFIG_EXAMPLES_UDP_TARGET2),y)
$(HOST_BIN): config.h $(HOST_OBJS)
$(Q) $(HOSTCC) $(HOSTLDFLAGS) $(HOST_OBJS) -o $@
endif
.built: config.h $(TARG_BIN) $(HOST_BIN)
$(Q) touch .built
ifeq ($(CONFIG_BUILD_KERNEL),y)
$(BIN_DIR)$(DELIM)$(PROGNAME): $(OBJS) $(TARG_MAINOBJ)
@echo "LD: $(PROGNAME)"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $(INSTALL_DIR)$(DELIM)$(PROGNAME) $(ARCHCRT0OBJ) $(TARG_MAINOBJ) $(LDLIBS)
$(Q) $(NM) -u $(INSTALL_DIR)$(DELIM)$(PROGNAME)
$(BIN_DIR)$(DELIM)$(PROGNAME1): $(OBJS) $(TARG1_MAINOBJ)
@echo "LD: $(PROGNAME1)"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $(INSTALL_DIR)$(DELIM)$(PROGNAME1) $(ARCHCRT0OBJ) $(TARG1_MAINOBJ) $(LDLIBS)
$(Q) $(NM) -u $(INSTALL_DIR)$(DELIM)$(PROGNAME1)
install: $(BIN_DIR)$(DELIM)$(PROGNAME)
install: $(BIN_DIR)$(DELIM)$(PROGNAME1)
else
install:
endif
ifeq ($(CONFIG_NSH_BUILTIN_APPS),y)
$(BUILTIN_REGISTRY)$(DELIM)$(APPNAME1)_main.bdat: $(DEPCONFIG) Makefile
$(call REGISTER,$(APPNAME1),$(PRIORITY1),$(STACKSIZE1),$(MAINNAME1))
ifeq ($(CONFIG_EXAMPLES_UDP_TARGET2),y)
$(BUILTIN_REGISTRY)$(DELIM)$(APPNAME2)_main.bdat: $(DEPCONFIG) Makefile
$(call REGISTER,$(APPNAME2),$(PRIORITY2),$(STACKSIZE2),$(MAINNAME2))
context: $(BUILTIN_REGISTRY)$(DELIM)$(APPNAME1)_main.bdat \
$(BUILTIN_REGISTRY)$(DELIM)$(APPNAME2)_main.bdat
else
context: $(BUILTIN_REGISTRY)$(DELIM)$(APPNAME1)_main.bdat
endif
else
context:
endif
.depend: Makefile config.h $(TARG_SRCS)
@$(MKDEP) $(ROOTDEPPATH) "$(CC)" -- $(CFLAGS) -- $(TARG_SRCS) >Make.dep
@ -146,8 +223,11 @@ depend: .depend
clean:
$(call DELFILE, .built)
$(call DELFILE, $(TARG_BIN))
#$(call DELFILE, $(TARG_BIN))
ifneq ($(CONFIG_EXAMPLES_UDP_TARGET2),y)
$(call DELFILE, $(HOST_BIN))
$(call DELFILE, *.$(HOSTOBJSEXT))
endif
$(call DELFILE, *.dSYM)
$(call DELFILE, config.h)
$(call CLEAN)
@ -156,7 +236,6 @@ distclean: clean
$(call DELFILE, Make.dep)
$(call DELFILE, .depend)
-include Make.dep
.PHONY: preconfig
preconfig:
-include Make.dep

View File

@ -38,7 +38,7 @@
****************************************************************************/
#include "config.h"
#include "udp-internal.h"
#include "udp.h"
/****************************************************************************
* Private Data
@ -54,7 +54,13 @@
int main(int argc, char **argv, char **envp)
{
#ifdef CONFIG_EXAMPLES_UDP_SERVER
/* Parse any command line options */
parse_cmdline(argc, argv);
/* Run the server or client, depending upon how target1 was configured */
#ifdef CONFIG_EXAMPLES_UDP_SERVER1
send_client();
#else
recv_server();

View File

@ -1,7 +1,7 @@
/****************************************************************************
* examples/udp/udp-internal.h
* examples/udp/target1.c
*
* Copyright (C) 2007, 2008, 2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2007, 2011, 2015, 2017 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -33,49 +33,46 @@
*
****************************************************************************/
#ifndef __EXAMPLES_UDP_INTERNAL_H
#define __EXAMPLES_UDP_INTERNAL_H
/****************************************************************************
* Included Files
****************************************************************************/
#ifdef EXAMPLES_UDP_HOST
#else
# include <debug.h>
#endif
#include <arpa/inet.h>
#include "config.h"
#include "udp.h"
/****************************************************************************
* Pre-processor Definitions
* Public Functions
****************************************************************************/
#ifdef EXAMPLES_UDP_HOST
/* HTONS/L macros are unique to uIP */
# define HTONS(a) htons(a)
# define HTONL(a) htonl(a)
#endif
#ifdef CONFIG_EXAMPLES_UDP_IPv6
# define AF_INETX AF_INET6
# define PF_INETX PF_INET6
#else
# define AF_INETX AF_INET
# define PF_INETX PF_INET
#endif
#define PORTNO 5471
#define ASCIISIZE (0x7f - 0x20)
#define SENDSIZE (ASCIISIZE+1)
/****************************************************************************
* Public Function Prototypes
* udp1_main
****************************************************************************/
extern void send_client(void);
extern void recv_server(void);
#if defined(CONFIG_BUILD_KERNEL)
int main(int argc, FAR char *argv[])
#elif defined(CONFIG_EXAMPLES_UDP_TARGET2)
int udp1_main(int argc, char *argv[])
#else
int udp_main(int argc, char *argv[])
#endif
{
/* Parse any command line options */
#endif /* __EXAMPLES_UDP_INTERNAL_H */
parse_cmdline(argc, argv);
#ifdef CONFIG_EXAMPLES_UDP_NETINIT
/* Initialize the network */
(void)target_netinit();
#endif
/* Run the server or client, depending upon how we are configured */
#ifdef CONFIG_EXAMPLES_UDP_SERVER1
recv_server();
#else
send_client();
#endif
return 0;
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* netutils/netlib/netlib_setnodeaddr.c
* examples/udp/target2.c
*
* Copyright (C) 2017 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -37,73 +37,40 @@
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <stdint.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <netinet/in.h>
#include <net/if.h>
#include <nuttx/net/sixlowpan.h>
#include "netutils/netlib.h"
#if defined(CONFIG_NET_6LOWPAN) && CONFIG_NSOCKET_DESCRIPTORS > 0
#include "config.h"
#include "udp.h"
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: netlib_setnodeaddr
*
* Description:
* Set the 6loWPAN IEEE802.15.4 MAC network driver node address
*
* Parameters:
* ifname The name of the interface to use
* nodeaddr Node address to set, size must be NET_6LOWPAN_ADDRSIZE
*
* Return:
* 0 on success; -1 on failure
*
* udp2_main
****************************************************************************/
int netlib_setnodeaddr(FAR const char *ifname, FAR const uint8_t *nodeaddr)
#if defined(CONFIG_BUILD_KERNEL)
int main(int argc, FAR char *argv[])
#else
int udp2_main(int argc, char *argv[])
#endif
{
int ret = ERROR;
/* Parse any command line options */
if (ifname && nodeaddr)
{
/* Get a socket (only so that we get access to the INET subsystem) */
parse_cmdline(argc, argv);
int sockfd = socket(PF_INET6, NETLIB_SOCK_IOCTL, 0);
if (sockfd >= 0)
{
struct ifreq req;
#ifdef CONFIG_EXAMPLES_UDP_NETINIT
/* Initialize the network */
/* Put the driver name into the request */
(void)target_netinit();
#endif
strncpy(req.ifr_name, ifname, IFNAMSIZ);
/* Run the server or client, depending upon how target1 was configured */
/* Put the new MAC address into the request */
#ifdef CONFIG_EXAMPLES_UDP_SERVER1
send_client();
#else
recv_server();
#endif
req.ifr_hwaddr.sa_family = AF_INET6;
memcpy(&req.ifr_hwaddr.sa_data, nodeaddr, NET_6LOWPAN_ADDRSIZE);
/* Perform the ioctl to set the node address */
ret = ioctl(sockfd, SIOCSIFHWADDR, (unsigned long)&req);
close(sockfd);
}
}
return ret;
return 0;
}
#endif /* CONFIG_NET_6LOWPAN && CONFIG_NSOCKET_DESCRIPTORS */

View File

@ -1,7 +1,7 @@
/****************************************************************************
* examples/udp/target.c
* examples/udp/target_netinit.c
*
* Copyright (C) 2007, 2011, 2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2007, 2011, 2015, 2017 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -39,6 +39,7 @@
#include "config.h"
#include <stdbool.h>
#include <stdio.h>
#include <debug.h>
@ -47,12 +48,20 @@
#include "netutils/netlib.h"
#include "udp-internal.h"
#include "udp.h"
#ifdef CONFIG_EXAMPLES_UDP_NETINIT
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#ifdef CONFIG_EXAMPLES_UDP_DEVNAME
# define DEVNAME CONFIG_EXAMPLES_UDP_DEVNAME
#else
# define DEVNAME "eth0"
#endif
/****************************************************************************
* Private Data
****************************************************************************/
@ -101,76 +110,75 @@ static const uint16_t g_ipv6_netmask[8] =
};
#endif /* CONFIG_EXAMPLES_UDP_IPv6 && !CONFIG_NET_ICMPv6_AUTOCONF */
static bool g_initialized;
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* udp_main
* target_netinit
****************************************************************************/
#ifdef CONFIG_BUILD_KERNEL
int main(int argc, FAR char *argv[])
#else
int udp_main(int argc, char *argv[])
#endif
int target_netinit(void)
{
if (!g_initialized)
{
#ifdef CONFIG_EXAMPLES_UDP_IPv6
#ifdef CONFIG_NET_ICMPv6_AUTOCONF
/* Perform ICMPv6 auto-configuration */
/* Perform ICMPv6 auto-configuration */
netlib_icmpv6_autoconfiguration("eth0");
netlib_icmpv6_autoconfiguration(DEVNAME);
#else /* CONFIG_NET_ICMPv6_AUTOCONF */
/* Set up our fixed host address */
/* Set up our fixed host address */
netlib_set_ipv6addr("eth0",
(FAR const struct in6_addr *)g_ipv6_hostaddr);
netlib_set_ipv6addr(DEVNAME,
(FAR const struct in6_addr *)g_ipv6_hostaddr);
/* Set up the default router address */
/* Set up the default router address */
netlib_set_dripv6addr("eth0",
(FAR const struct in6_addr *)g_ipv6_draddr);
netlib_set_dripv6addr(DEVNAME,
(FAR const struct in6_addr *)g_ipv6_draddr);
/* Setup the subnet mask */
/* Setup the subnet mask */
netlib_set_ipv6netmask("eth0",
(FAR const struct in6_addr *)g_ipv6_netmask);
netlib_set_ipv6netmask(DEVNAME,
(FAR const struct in6_addr *)g_ipv6_netmask);
#endif /* CONFIG_NET_ICMPv6_AUTOCONF */
#else /* CONFIG_EXAMPLES_UDP_IPv6 */
struct in_addr addr;
struct in_addr addr;
/* Set up our host address */
/* Set up our host address */
addr.s_addr = HTONL(CONFIG_EXAMPLES_UDP_IPADDR);
netlib_set_ipv4addr("eth0", &addr);
addr.s_addr = HTONL(CONFIG_EXAMPLES_UDP_IPADDR);
netlib_set_ipv4addr(DEVNAME, &addr);
/* Set up the default router address */
/* Set up the default router address */
addr.s_addr = HTONL(CONFIG_EXAMPLES_UDP_DRIPADDR);
netlib_set_dripv4addr("eth0", &addr);
addr.s_addr = HTONL(CONFIG_EXAMPLES_UDP_DRIPADDR);
netlib_set_dripv4addr(DEVNAME, &addr);
/* Setup the subnet mask */
/* Setup the subnet mask */
addr.s_addr = HTONL(CONFIG_EXAMPLES_UDP_NETMASK);
netlib_set_ipv4netmask("eth0", &addr);
addr.s_addr = HTONL(CONFIG_EXAMPLES_UDP_NETMASK);
netlib_set_ipv4netmask(DEVNAME, &addr);
#endif /* CONFIG_EXAMPLES_UDP_IPv6 */
/* New versions of netlib_set_ipvXaddr will not bring the network up,
* So ensure the network is really up at this point.
*/
/* New versions of netlib_set_ipvXaddr will not bring the network up,
* So ensure the network is really up at this point.
*/
netlib_ifup("eth0");
#ifdef CONFIG_EXAMPLES_UDP_SERVER
recv_server();
#else
send_client();
#endif
netlib_ifup(DEVNAME);
g_initialized = true;
}
return 0;
}
#endif /* CONFIG_EXAMPLES_UDP_NETINIT */

113
examples/udp/udp.h Normal file
View File

@ -0,0 +1,113 @@
/****************************************************************************
* examples/udp/udp.h
*
* Copyright (C) 2007, 2008, 2015, 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.
*
****************************************************************************/
#ifndef __EXAMPLES_UDP_UDP_H
#define __EXAMPLES_UDP_UDP_H
/****************************************************************************
* Included Files
****************************************************************************/
#ifdef EXAMPLES_UDP_HOST
#else
# include <debug.h>
#endif
#include <arpa/inet.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#ifdef EXAMPLES_UDP_HOST
/* HTONS/L macros are unique to uIP-based networks */
# ifdef CONFIG_ENDIAN_BIG
# define HTONS(ns) (ns)
# define HTONL(nl) (nl)
# else
# define HTONS(ns) \
(unsigned short) \
(((((unsigned short)(ns)) & 0x00ff) << 8) | \
((((unsigned short)(ns)) >> 8) & 0x00ff))
# define HTONL(nl) \
(unsigned long) \
(((((unsigned long)(nl)) & 0x000000ffUL) << 24) | \
((((unsigned long)(nl)) & 0x0000ff00UL) << 8) | \
((((unsigned long)(nl)) & 0x00ff0000UL) >> 8) | \
((((unsigned long)(nl)) & 0xff000000UL) >> 24))
# endif
# define NTOHS(hs) HTONS(hs)
# define NTOHL(hl) HTONL(hl)
# define FAR
#endif
#ifdef CONFIG_EXAMPLES_UDP_IPv6
# define AF_INETX AF_INET6
# define PF_INETX PF_INET6
#else
# define AF_INETX AF_INET
# define PF_INETX PF_INET
#endif
#define PORTNO 5471
#define ASCIISIZE (0x7f - 0x20)
#define SENDSIZE (ASCIISIZE+1)
/****************************************************************************
* Public Data
****************************************************************************/
#ifdef CONFIG_EXAMPLES_UDP_IPv6
uint16_t g_server_ipv6[8];
#else
uint32_t g_server_ipv4;
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#ifdef CONFIG_EXAMPLES_UDP_NETINIT
int target_netinit(void);
#endif
void parse_cmdline(int argc, char **argv);
void send_client(void);
void recv_server(void);
#endif /* __EXAMPLES_UDP_UDP_H */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* examples/udp/udp-client.c
* examples/udp/udp_client.c
*
* Copyright (C) 2007, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -51,7 +51,7 @@
#include <arpa/inet.h>
#include <netinet/in.h>
#include "udp-internal.h"
#include "udp.h"
/****************************************************************************
* Private Functions
@ -112,22 +112,12 @@ void send_client(void)
#ifdef CONFIG_EXAMPLES_UDP_IPv6
server.sin6_family = AF_INET6;
server.sin6_port = HTONS(PORTNO);
server.sin6_addr.s6_addr16[0] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_1);
server.sin6_addr.s6_addr16[1] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_2);
server.sin6_addr.s6_addr16[2] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_3);
server.sin6_addr.s6_addr16[3] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_4);
server.sin6_addr.s6_addr16[4] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_5);
server.sin6_addr.s6_addr16[5] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_6);
server.sin6_addr.s6_addr16[6] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_7);
server.sin6_addr.s6_addr16[7] = HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_8);
memcpy(server.sin6_addr.s6_addr16, g_server_ipv6, 8 * sizeof(uint16_t));
addrlen = sizeof(struct sockaddr_in6);
#else
server.sin_family = AF_INET;
server.sin_port = HTONS(PORTNO);
server.sin_addr.s_addr = HTONL(CONFIG_EXAMPLES_UDP_SERVERIP);
server.sin_addr.s_addr = (in_addr_t)g_server_ipv4;
addrlen = sizeof(struct sockaddr_in);
#endif

118
examples/udp/udp_cmdline.c Normal file
View File

@ -0,0 +1,118 @@
/****************************************************************************
* examples/udp/udp_cmdline.c
*
* 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.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <arpa/inet.h>
#include "udp.h"
/****************************************************************************
* Public Data
****************************************************************************/
#ifdef CONFIG_EXAMPLES_UDP_IPv6
uint16_t g_server_ipv6[8] =
{
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_1),
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_2),
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_3),
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_4),
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_5),
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_6),
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_7),
HTONS(CONFIG_EXAMPLES_UDP_SERVERIPv6ADDR_8)
};
#else
uint32_t g_server_ipv4 = HTONL(CONFIG_EXAMPLES_UDP_SERVERIP);
#endif
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* show_usage
****************************************************************************/
static void show_usage(FAR const char *progname)
{
fprintf(stderr, "USAGE: %s [<server-addr>]\n", progname);
exit(1);
}
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* parse_cmdline
****************************************************************************/
void parse_cmdline(int argc, char **argv)
{
/* Currently only a single command line option is supported: The server
* IP address.
*/
if (argc == 2)
{
int ret;
/* Convert the <server-addr> argument into a binary address */
#ifdef CONFIG_EXAMPLES_UDP_IPv6
ret = inet_pton(AF_INET6, argv[1], g_server_ipv6);
#else
ret = inet_pton(AF_INET, argv[1], &g_server_ipv4);
#endif
if (ret < 0)
{
fprintf(stderr, "ERROR: <server-addr> is invalid\n");
show_usage(argv[0]);
}
}
else if (argc != 1)
{
fprintf(stderr, "ERROR: Too many arguments\n");
show_usage(argv[0]);
}
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* examples/udp/udp-server.c
* examples/udp/udp_server.c
*
* Copyright (C) 2007, 2009, 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -50,7 +50,7 @@
#include <arpa/inet.h>
#include "udp-internal.h"
#include "udp.h"
/****************************************************************************
* Private Functions

View File

@ -115,12 +115,11 @@ int netlib_getmacaddr(FAR const char *ifname, FAR uint8_t *macaddr);
#endif
#ifdef CONFIG_NET_6LOWPAN
/* Get IEEE802.15.4 MAC driver node address */
/* Set IEEE 802.15.4 extended address. */
int netlib_getpanid(FAR const char *ifname, FAR uint16_t *panid);
int netlib_setnodeaddr(FAR const char *ifname, FAR const uint8_t *nodeaddr);
int netlib_setpanid(FAR const char *ifname, uint16_t panid);
bool netlib_nodeaddrconv(FAR const char *hwstr, FAR uint8_t *hw);
int netlib_seteaddr(FAR const char *ifname, FAR const uint8_t *eaddr);
int netlib_getpanid(FAR const char *ifname, FAR uint8_t *panid);
bool netlib_eaddrconv(FAR const char *hwstr, FAR uint8_t *hw);
#endif
/* IP address support */

View File

@ -2,7 +2,10 @@
* apps/include/wireless/ieee802154.h
*
* Copyright(C) 2015 Sebastien Lorquet. All rights reserved.
* Copyright(C) 2017 Verge Inc. All rights reserved.
*
* Author: Sebastien Lorquet <sebastien@lorquet.fr>
* Author: Anthony Merlino <anthony@vergeaero.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@ -86,11 +89,11 @@ int ieee802154_calibrate_req(int fd,
int ieee802154_setchan(int fd, uint8_t chan);
int ieee802154_getchan(int fd, FAR uint8_t *chan);
int ieee802154_setpanid(int fd, uint16_t panid);
int ieee802154_getpanid(int fd, FAR uint16_t *panid);
int ieee802154_setpanid(int fd, FAR const uint8_t *panid);
int ieee802154_getpanid(int fd, FAR uint8_t *panid);
int ieee802154_setsaddr(int fd, uint16_t saddr);
int ieee802154_getsaddr(int fd, FAR uint16_t *saddr);
int ieee802154_setsaddr(int fd, FAR const uint8_t *saddr);
int ieee802154_getsaddr(int fd, FAR uint8_t *saddr);
int ieee802154_seteaddr(int fd, FAR const uint8_t *eaddr);
int ieee802154_geteaddr(int fd, FAR uint8_t *eaddr);
@ -154,13 +157,15 @@ int sixlowpan_calibrate_req(int sock, FAR const char *ifname,
int sixlowpan_setchan(int sock, FAR const char *ifname, uint8_t chan);
int sixlowpan_getchan(int sock, FAR const char *ifname, FAR uint8_t *chan);
int sixlowpan_setpanid(int sock, FAR const char *ifname, uint16_t panid);
int sixlowpan_setpanid(int sock, FAR const char *ifname,
FAR const uint8_t *panid);
int sixlowpan_getpanid(int sock, FAR const char *ifname,
FAR uint16_t *panid);
FAR uint8_t *panid);
int sixlowpan_setsaddr(int sock, FAR const char *ifname, uint16_t saddr);
int sixlowpan_setsaddr(int sock, FAR const char *ifname,
FAR const uint8_t *saddr);
int sixlowpan_getsaddr(int sock, FAR const char *ifname,
FAR uint16_t *saddr);
FAR uint8_t *saddr);
int sixlowpan_seteaddr(int sock, FAR const char *ifname,
FAR const uint8_t *eaddr);

View File

@ -80,15 +80,14 @@ ifeq ($(CONFIG_NETDEV_WIRELESS_IOCTL),y)
CSRCS += netlib_getessid.c netlib_setessid.c
endif
# MAC address support(Ethernet and 6loWPAN only)
# MAC address support(Ethernet and 6LoWPAN only)
ifeq ($(CONFIG_NET_ETHERNET),y)
CSRCS += netlib_setmacaddr.c netlib_getmacaddr.c
endif
ifeq ($(CONFIG_NET_6LOWPAN),y)
CSRCS += netlib_getpanid.c netlib_setnodeaddr.c netlib_setpanid.c
CSRCS += netlib_nodeaddrconv.c
CSRCS += netlib_seteaddr.c netlib_getpanid.c netlib_eaddrconv.c
endif
# IGMP support

View File

@ -1,5 +1,5 @@
/****************************************************************************
* netutils/netlib/netlib_nodeaddrconv.c
* netutils/netlib/netlib_eaddrconv.c
*
* Copyright (C) 2017 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -50,26 +50,26 @@
****************************************************************************/
/****************************************************************************
* Name: netlib_nodeaddrconv
* Name: netlib_eaddrconv
****************************************************************************/
bool netlib_nodeaddrconv(FAR const char *hwstr, FAR uint8_t *hw)
bool netlib_eaddrconv(FAR const char *hwstr, FAR uint8_t *hw)
{
unsigned char tmp;
unsigned char i;
unsigned char j;
char ch;
/* Form xx:xx or xx:xx:xx:xx:xx:xx:xx:xx for extended Rime address */
/* Extended Address Form: xx:xx:xx:xx:xx:xx:xx:xx */
if (strlen(hwstr) != 3 * NET_6LOWPAN_ADDRSIZE - 1)
if (strlen(hwstr) != 3 * 8 - 1)
{
return false;
}
tmp = 0;
for (i = 0; i < NET_6LOWPAN_ADDRSIZE; ++i)
for (i = 0; i < 8; ++i)
{
j = 0;
do

View File

@ -70,7 +70,7 @@
*
****************************************************************************/
int netlib_getpanid(FAR const char *ifname, FAR uint16_t *panid)
int netlib_getpanid(FAR const char *ifname, FAR uint8_t *panid)
{
int ret = ERROR;

View File

@ -1,5 +1,5 @@
/****************************************************************************
* netutils/netlib/netlib_setpanid.c
* netutils/netlib/netlib_seteaddr.c
*
* Copyright (C) 2017 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -56,21 +56,21 @@
****************************************************************************/
/****************************************************************************
* Name: netlib_setpanid
* Name: netlib_seteaddr
*
* Description:
* Join the specified PAN ID
* Set the IEEE802.15.4 extended MAC address
*
* Parameters:
* ifname The name of the interface to use
* panid The PAN ID to join
* eaddr The new extended address
*
* Return:
* 0 on success; -1 on failure. errno will be set on failure.
*
****************************************************************************/
int netlib_setpanid(FAR const char *ifname, uint16_t panid)
int netlib_seteaddr(FAR const char *ifname, FAR const uint8_t *eaddr)
{
int ret = ERROR;
@ -83,7 +83,7 @@ int netlib_setpanid(FAR const char *ifname, uint16_t panid)
{
/* Use the helper provided in libmac */
ret = sixlowpan_setpanid(sockfd, ifname, panid);
ret = sixlowpan_seteaddr(sockfd, ifname, eaddr);
close(sockfd);
}
}

View File

@ -1129,7 +1129,10 @@ config NSH_NETINIT_DEBUG
or CONFIG_DEBUG_INFO are not selected. This allows for focused, unit-
level debug of the NSH network initialization logic.
# No IP address if 6LOWPAN selected; but Ethernet has precedence.
menu "IP Address Configuration"
depends on NET_ETHERNET || !NET_6LOWPAN
config NSH_DHCPC
bool "Use DHCP to get IP address"
@ -1426,7 +1429,7 @@ config NSH_IPv6NETMASK_8
individually. This is the eighth of the 8-values. The default for
all eight values is fe00::0.
endif #NET_IPv6 && !NET_ICMPv6_AUTOCONF
endif # NET_IPv6 && !NET_ICMPv6_AUTOCONF
endmenu # IP Address Configuration
config NSH_DNS
@ -1472,8 +1475,9 @@ endchoice # MAC address selection
config NSH_MACADDR
hex "Fixed MAC address"
default 0x00e0deadbeef
depends on NSH_SWMAC
default 0x00e0deadbeef if NET_ETHERNET
default 0x00fade00deadbeef if !NET_ETHERNET && NET_6LOWPAN
depends on NSH_SWMAC && (NET_ETHERNET || NET_6LOWPAN)
---help---
If the hardware has no built-in MAC address and if the NSH_SWMAC
option is selected, then the fixed, software-assigned MAC address
@ -1481,14 +1485,6 @@ config NSH_MACADDR
endif # NSH_NOMAC
config NSH_PANID
hex "6loWPAN PAN ID"
default 0xface
depends on NET_6LOWPAN
range 0x0000 0xffff
---help---
Select the PAN ID to join upon initialization.
menu "WAPI Configuration"
depends on NET && WIRELESS_WAPI

View File

@ -762,7 +762,7 @@ int cmd_ifconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
uint8_t mac[IFHWADDRLEN];
#endif
#ifdef CONFIG_NET_6LOWPAN
uint8_t nodeaddr[NET_6LOWPAN_ADDRSIZE];
uint8_t eaddr[8];
#endif
#if defined(CONFIG_NSH_DHCPC)
FAR void *handle;
@ -862,7 +862,7 @@ int cmd_ifconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifdef CONFIG_NET_ETHERNET
badarg = !netlib_ethaddrconv(hw, mac);
#else
badarg = !netlib_nodeaddrconv(hw, nodeaddr);
badarg = !netlib_eaddrconv(hw, eaddr);
#endif
}
else
@ -906,7 +906,7 @@ int cmd_ifconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifdef CONFIG_NET_ETHERNET
netlib_setmacaddr(intf, mac);
#else
netlib_setnodeaddr(intf, nodeaddr);
netlib_seteaddr(intf, eaddr);
#endif
}
#endif

View File

@ -88,20 +88,50 @@
* Pre-processor Definitions
****************************************************************************/
/* Only Ethernet and 6loWPAN have MAC layer addresses */
/* Pick one and at most one supported link layer so that all decisions are
* made consistently.
*
* NOTE: Ethernet should always be selected with IEEE 802.11
*/
#if defined(CONFIG_NET_ETHERNET)
# undef CONFIG_NET_6LOWPAN
# undef CONFIG_NET_SLIP
# undef CONFIG_NET_TUN
# undef CONFIG_NET_LOCAL
# undef CONFIG_NET_USRSOCK
# undef CONFIG_NET_LOOPBACK
#elif defined(CONFIG_NET_6LOWPAN)
# undef CONFIG_NET_SLIP
# undef CONFIG_NET_TUN
# undef CONFIG_NET_LOCAL
# undef CONFIG_NET_USRSOCK
# undef CONFIG_NET_LOOPBACK
#elif defined(CONFIG_NET_SLIP)
# undef CONFIG_NET_TUN
# undef CONFIG_NET_LOCAL
# undef CONFIG_NET_USRSOCK
# undef CONFIG_NET_LOOPBACK
#elif defined(CONFIG_NET_TUN)
# undef CONFIG_NET_LOCAL
# undef CONFIG_NET_USRSOCK
# undef CONFIG_NET_LOOPBACK
#elif defined(CONFIG_NET_LOCAL)
# undef CONFIG_NET_USRSOCK
# undef CONFIG_NET_LOOPBACK
#elif defined(CONFIG_NET_USRSOCK)
# undef CONFIG_NET_LOOPBACK
#endif
/* Only Ethernet and 6LoWPAN have MAC layer addresses */
#undef HAVE_MAC
#if defined(CONFIG_NET_ETHERNET) || defined(CONFIG_NET_6LOWPAN)
# define HAVE_MAC 1
# if defined(CONFIG_NET_6LOWPAN)
# if !defined(CONFIG_NET_6LOWPAN_RIMEADDR_EXTENDED) && CONFIG_NSH_MACADDR > 0xffff
# error Invalid 6loWPAN node address for SIZE == 2
# elif defined(CONFIG_NET_6LOWPAN_RIMEADDR_EXTENDED) && CONFIG_NSH_MACADDR > 0xffffffffffffffffull
# error Invalid 6loWPAN node address for SIZE == 8
# endif
# endif
#endif
/* Provide a default DNS address */
#if defined(CONFIG_NSH_DRIPADDR) && !defined(CONFIG_NSH_DNSIPADDR)
# define CONFIG_NSH_DNSIPADDR CONFIG_NSH_DRIPADDR
#endif
@ -185,7 +215,8 @@
static sem_t g_notify_sem;
#endif
#if defined(CONFIG_NET_IPv6) && !defined(CONFIG_NET_ICMPv6_AUTOCONF)
#if defined(CONFIG_NET_IPv6) && !defined(CONFIG_NET_ICMPv6_AUTOCONF) && \
!defined(CONFIG_NET_6LOWPAN)
/* Host IPv6 address */
static const uint16_t g_ipv6_hostaddr[8] =
@ -227,45 +258,32 @@ static const uint16_t g_ipv6_netmask[8] =
HTONS(CONFIG_NSH_IPv6NETMASK_7),
HTONS(CONFIG_NSH_IPv6NETMASK_8),
};
#endif /* CONFIG_NET_IPv6 && !CONFIG_NET_ICMPv6_AUTOCONF */
#endif /* CONFIG_NET_IPv6 && !CONFIG_NET_ICMPv6_AUTOCONF && !CONFIG_NET_6LOWPAN */
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Name: nsh_netinit_configure
* Name: nsh_set_macaddr
*
* Description:
* Initialize the network per the selected NuttX configuration
* Set the hardware MAC address if the hardware is not capable of doing
* that for itself.
*
****************************************************************************/
static void nsh_netinit_configure(void)
#if defined(NSH_HAVE_NETDEV) && defined(CONFIG_NSH_NOMAC) && defined(HAVE_MAC)
static void nsh_set_macaddr(void)
{
#ifdef NSH_HAVE_NETDEV
#ifdef CONFIG_NET_IPv4
struct in_addr addr;
#endif
#if defined(CONFIG_NSH_DHCPC) && !defined(CONFIG_NSH_NETLOCAL)
FAR void *handle;
#endif
#if (((defined(CONFIG_NSH_DHCPC) && !defined(CONFIG_NSH_NETLOCAL)) || \
defined(CONFIG_NSH_NOMAC)) && defined(HAVE_MAC))
#if defined(CONFIG_NET_ETHERNET)
uint8_t mac[IFHWADDRLEN];
#elif defined(CONFIG_NET_6LOWPAN)
uint8_t nodeaddr[NET_6LOWPAN_ADDRSIZE];
uint8_t eaddr[8];
#endif
#endif
ninfo("Entry\n");
/* Many embedded network interfaces must have a software assigned MAC */
#if defined(CONFIG_NSH_NOMAC) && defined(HAVE_MAC)
#if defined(CONFIG_NET_ETHERNET)
/* Use the configured, fixed MAC address */
@ -281,33 +299,44 @@ static void nsh_netinit_configure(void)
netlib_setmacaddr(NET_DEVNAME, mac);
#elif defined(CONFIG_NET_6LOWPAN)
/* Use the configured, fixed MAC address */
/* Use the configured, fixed extended address */
#ifdef CONFIG_NET_6LOWPAN_RIMEADDR_EXTENDED
nodeaddr[0] = (CONFIG_NSH_MACADDR >> (8 * 7)) & 0xff;
nodeaddr[1] = (CONFIG_NSH_MACADDR >> (8 * 6)) & 0xff;
nodeaddr[2] = (CONFIG_NSH_MACADDR >> (8 * 5)) & 0xff;
nodeaddr[3] = (CONFIG_NSH_MACADDR >> (8 * 4)) & 0xff;
nodeaddr[4] = (CONFIG_NSH_MACADDR >> (8 * 3)) & 0xff;
nodeaddr[5] = (CONFIG_NSH_MACADDR >> (8 * 2)) & 0xff;
nodeaddr[6] = (CONFIG_NSH_MACADDR >> (8 * 1)) & 0xff;
nodeaddr[7] = (CONFIG_NSH_MACADDR >> (8 * 0)) & 0xff;
eaddr[0] = (CONFIG_NSH_MACADDR >> (8 * 7)) & 0xff;
eaddr[1] = (CONFIG_NSH_MACADDR >> (8 * 6)) & 0xff;
eaddr[2] = (CONFIG_NSH_MACADDR >> (8 * 5)) & 0xff;
eaddr[3] = (CONFIG_NSH_MACADDR >> (8 * 4)) & 0xff;
eaddr[4] = (CONFIG_NSH_MACADDR >> (8 * 3)) & 0xff;
eaddr[5] = (CONFIG_NSH_MACADDR >> (8 * 2)) & 0xff;
eaddr[6] = (CONFIG_NSH_MACADDR >> (8 * 1)) & 0xff;
eaddr[7] = (CONFIG_NSH_MACADDR >> (8 * 0)) & 0xff;
/* Set the 6LoWPAN extended address */
(void)netlib_seteaddr(NET_DEVNAME, eaddr);
#endif /* CONFIG_NET_ETHERNET */
}
#else
nodeaddr[0] = (CONFIG_NSH_MACADDR >> (8 * 1)) & 0xff;
nodeaddr[1] = (CONFIG_NSH_MACADDR >> (8 * 0)) & 0xff;
# define nsh_set_macaddr()
#endif
/* Set the 6loWPAN node address */
(void)netlib_setnodeaddr(NET_DEVNAME, nodeaddr);
/* Set the 6loWPAN PAN ID */
(void)netlib_setpanid(NET_DEVNAME, CONFIG_NSH_PANID);
#endif /* CONFIG_NET_ETHERNET */
#endif /* CONFIG_NSH_NOMAC && HAVE_MAC */
/****************************************************************************
* Name: nsh_set_ipaddrs
*
* Description:
* Setup IP addresses.
*
* For 6LoWPAN, the IP address derives from the MAC address. Setting it
* to any user provided value is asking for trouble.
*
****************************************************************************/
#if defined(NSH_HAVE_NETDEV) && !defined(CONFIG_NET_6LOWPAN)
static void nsh_set_ipaddrs(void)
{
#ifdef CONFIG_NET_IPv4
struct in_addr addr;
/* Set up our host address */
#ifndef CONFIG_NSH_DHCPC
@ -358,13 +387,30 @@ static void nsh_netinit_configure(void)
addr.s_addr = HTONL(CONFIG_NSH_DNSIPADDR);
netlib_set_ipv4dnsaddr(&addr);
#endif
}
#else
# define nsh_set_ipaddrs()
#endif
/* That completes the 'local' initialization of the network device. */
/****************************************************************************
* Name: nsh_net_bringup()
*
* Description:
* Bring up the configured network
*
****************************************************************************/
#if defined(NSH_HAVE_NETDEV) && !defined(CONFIG_NSH_NETLOCAL)
static void nsh_net_bringup(void)
{
#ifdef CONFIG_NSH_DHCPC
uint8_t mac[IFHWADDRLEN];
FAR void *handle;
#endif
#ifndef CONFIG_NSH_NETLOCAL
/* Bring the network up. */
netlib_ifup("eth0");
netlib_ifup(NET_DEVNAME);
#ifdef CONFIG_WIRELESS_WAPI
/* Associate the wlan with an access point. */
@ -415,10 +461,38 @@ static void nsh_netinit_configure(void)
ntpc_start();
#endif
#endif /* CONFIG_NSH_NETLOCAL */
#endif /* NSH_HAVE_NETDEV */
}
#else
# define nsh_net_bringup()
#endif
ninfo("Exit\n");
/****************************************************************************
* Name: nsh_netinit_configure
*
* Description:
* Initialize the network per the selected NuttX configuration
*
****************************************************************************/
static void nsh_netinit_configure(void)
{
#ifdef NSH_HAVE_NETDEV
/* Many embedded network interfaces must have a software assigned MAC */
nsh_set_macaddr();
/* Set up IP addresses */
nsh_set_ipaddrs();
/* That completes the 'local' initialization of the network device. */
#ifndef CONFIG_NSH_NETLOCAL
/* Bring the network up. */
nsh_net_bringup();
#endif
#endif /* NSH_HAVE_NETDEV */
}
/****************************************************************************

View File

@ -52,7 +52,7 @@
# include <nuttx/usb/cdcacm.h>
#endif
#ifdef CONFIG_CDCACM
#ifdef CONFIG_PL2303
# include <nuttx/usb/pl2303.h>
#endif

View File

@ -730,7 +730,7 @@ void board_cdcuninitialize(FAR struct usbdevclass_driver_s *classdev)
* This is the main program that configures the USB mass storage device
* and exports the LUN(s). If CONFIG_NSH_BUILTIN_APPS is defined
* in the NuttX configuration, then this program can be executed by
* entering the "msconn" command at the NSH console.
* entering the "conn" command at the NSH console.
*
****************************************************************************/
@ -743,7 +743,7 @@ int conn_main(int argc, char *argv[])
struct boardioc_usbdev_ctrl_s ctrl;
int ret;
/* If this program is implemented as the NSH 'msconn' command, then we need to
/* If this program is implemented as the NSH 'conn' command, then we need to
* do a little error checking to assure that we are not being called re-entrantly.
*/

View File

@ -99,6 +99,8 @@
/* /dev/ is 5 characters */
#define I8SAK_DAEMONNAME_FMTLEN (6 + (I8SAK_MAX_DEVNAME-5) + 1)
/****************************************************************************
* Public Types
****************************************************************************/
@ -148,7 +150,7 @@ struct i8sak_s
uint8_t chpage;
struct ieee802154_addr_s addr;
struct ieee802154_addr_s ep;
uint16_t next_saddr;
uint8_t next_saddr[IEEE802154_SADDRSIZE];
uint8_t payload[IEEE802154_MAX_MAC_PAYLOAD_SIZE];
uint16_t payload_len;
int blasterperiod;
@ -166,6 +168,8 @@ uint8_t i8sak_char2nibble(char ch);
int i8sak_str2payload(FAR const char *str, FAR uint8_t *buf);
void i8sak_str2eaddr(FAR const char *str, FAR uint8_t *eaddr);
void i8sak_str2saddr(FAR const char *str, FAR uint8_t *saddr);
void i8sak_str2panid(FAR const char *str, FAR uint8_t *panid);
bool i8sak_str2bool(FAR const char *str);
void i8sak_startpan_cmd (FAR struct i8sak_s *i8sak, int argc, FAR char *argv[]);

View File

@ -137,37 +137,25 @@ static void acceptassoc_eventcb(FAR struct ieee802154_notif_s *notif, FAR void *
printf("i8sak: a device is trying to associate\n");
/* Send a ASSOC.resp primtive to the MAC. Copy the association
* indication address into the association response primitive
*/
IEEE802154_EADDRCOPY(assocresp.devaddr, notif->u.assocind.devaddr);
/* If the address matches our device, accept the association.
* Otherwise, reject the assocation.
*/
if (memcmp(&notif->u.assocind.devaddr[0], &i8sak->ep.eaddr[0],
IEEE802154_EADDR_LEN) == 0)
if (IEEE802154_EADDRCMP(notif->u.assocind.devaddr, i8sak->ep.eaddr))
{
/* Send a ASSOC.resp primtive to the MAC. Copy the association
* indication address into the association response primitive
*/
memcpy(&assocresp.devaddr[0], &notif->u.assocind.devaddr[0],
IEEE802154_EADDR_LEN);
assocresp.assocsaddr = i8sak->next_saddr;
IEEE802154_SADDRCOPY(assocresp.assocsaddr, i8sak->next_saddr);
assocresp.status = IEEE802154_STATUS_SUCCESS;
printf("i8sak: accepting association request\n");
}
else
{
/* Send a ASSOC.resp primtive to the MAC. Copy the association
* indication address into the association response primitive
*/
memcpy(&assocresp.devaddr[0], &notif->u.assocind.devaddr[0],
IEEE802154_EADDR_LEN);
assocresp.status = IEEE802154_STATUS_DENIED;
printf("i8sak: rejecting association request\n");
}

View File

@ -115,14 +115,14 @@ void i8sak_assoc_cmd(FAR struct i8sak_s *i8sak, int argc, FAR char *argv[])
case 's':
/* Parse extended address and put it into the i8sak instance */
i8sak->ep.saddr = i8sak_str2luint16(optarg);
i8sak_str2saddr(optarg, i8sak->ep.saddr);
i8sak->ep.mode= IEEE802154_ADDRMODE_SHORT;
break;
case 'e':
/* Parse extended address and put it into the i8sak instance */
i8sak_str2eaddr(optarg, &i8sak->ep.eaddr[0]);
i8sak_str2eaddr(optarg, i8sak->ep.eaddr);
i8sak->ep.mode = IEEE802154_ADDRMODE_EXTENDED;
break;
@ -148,7 +148,7 @@ void i8sak_assoc_cmd(FAR struct i8sak_s *i8sak, int argc, FAR char *argv[])
if (optcnt && argc == 2)
{
i8sak->ep.panid = i8sak_str2luint16(argv[1]);
i8sak_str2panid(argv[1], i8sak->ep.panid);
}
fd = open(i8sak->devname, O_RDWR);

View File

@ -353,7 +353,7 @@ uint8_t i8sak_char2nibble(char ch)
* Name: i8sak_str2eaddr
*
* Description:
* Convert a string 8-byte EADAR array.
* Convert a string 8-byte EADDR array.
*
****************************************************************************/
@ -387,6 +387,82 @@ void i8sak_str2eaddr(FAR const char *str, FAR uint8_t *eaddr)
}
}
/****************************************************************************
* Name: i8sak_str2saddr
*
* Description:
* Convert a string 2-byte SADDR array.
*
****************************************************************************/
void i8sak_str2saddr(FAR const char *str, FAR uint8_t *saddr)
{
FAR const char *src = str;
uint8_t bvalue;
char ch;
int i;
for (i = 0; i < 2; i++)
{
ch = (char)*src++;
bvalue = i8sak_char2nibble(ch) << 4;
ch = (char)*src++;
bvalue |= i8sak_char2nibble(ch);
*saddr++ = bvalue;
if (i < 1)
{
ch = (char)*src++;
if (ch != ':')
{
fprintf(stderr, "ERROR: Missing colon separator: %s\n", str);
fprintf(stderr, " Expected xx:xx\n");
exit(EXIT_FAILURE);
}
}
}
}
/****************************************************************************
* Name: i8sak_str2panid
*
* Description:
* Convert a string 2-byte PAN ID array.
*
****************************************************************************/
void i8sak_str2panid(FAR const char *str, FAR uint8_t *panid)
{
FAR const char *src = str;
uint8_t bvalue;
char ch;
int i;
for (i = 0; i < 2; i++)
{
ch = (char)*src++;
bvalue = i8sak_char2nibble(ch) << 4;
ch = (char)*src++;
bvalue |= i8sak_char2nibble(ch);
*panid++ = bvalue;
if (i < 1)
{
ch = (char)*src++;
if (ch != ':')
{
fprintf(stderr, "ERROR: Missing colon separator: %s\n", str);
fprintf(stderr, " Expected xx:xx\n");
exit(EXIT_FAILURE);
}
}
}
}
/****************************************************************************
* Name: i8sak_str2bool
*
@ -444,7 +520,7 @@ static void i8sak_switch_instance(FAR char *devname)
i8sak = (FAR struct i8sak_s *)sq_remfirst(&g_i8sak_free);
if (i8sak == NULL)
{
fprintf(stderr, "failed to allocate i8sak instance\n");
fprintf(stderr, "ERROR: Failed to allocate i8sak instance\n");
exit(EXIT_FAILURE);
}
@ -488,7 +564,7 @@ static int i8sak_setup(FAR struct i8sak_s *i8sak, FAR const char *devname)
if (strlen(devname) > I8SAK_MAX_DEVNAME)
{
fprintf(stderr, "i8sak: too long of devname");
fprintf(stderr, "ERROR: devname too long\n");
return ERROR;
}
@ -496,23 +572,38 @@ static int i8sak_setup(FAR struct i8sak_s *i8sak, FAR const char *devname)
/* Initialze default extended address */
for (i = 0; i < IEEE802154_EADDR_LEN; i++)
for (i = 0; i < IEEE802154_EADDRSIZE; i++)
{
i8sak->addr.eaddr[i] = (uint8_t)((CONFIG_IEEE802154_I8SAK_DEV_EADDR >> (i*8)) & 0xFF);
}
/* Initialize the default remote endpoint address */
for (i = 0; i < IEEE802154_EADDR_LEN; i++)
i8sak->ep.mode = IEEE802154_ADDRMODE_SHORT;
for (i = 0; i < IEEE802154_EADDRSIZE; i++)
{
i8sak->ep.eaddr[i] = (uint8_t)((CONFIG_IEEE802154_I8SAK_PANCOORD_EADDR >> (i*8)) & 0xFF);
}
i8sak->ep.mode = IEEE802154_ADDRMODE_SHORT;
i8sak->ep.saddr = CONFIG_IEEE802154_I8SAK_PANCOORD_SADDR;
i8sak->ep.panid = CONFIG_IEEE802154_I8SAK_PANID;
for (i = 0; i < IEEE802154_SADDRSIZE; i++)
{
i8sak->ep.saddr[i] = (uint8_t)((CONFIG_IEEE802154_I8SAK_PANCOORD_SADDR >> (i*8)) & 0xFF);
}
i8sak->next_saddr = CONFIG_IEEE802154_I8SAK_DEV_SADDR;
for (i = 0; i < IEEE802154_PANIDSIZE; i++)
{
i8sak->ep.panid[i] = (uint8_t)((CONFIG_IEEE802154_I8SAK_PANID >> (i*8)) & 0xFF);
}
/* Set the next association device to the default device address, so that
* the first device to request association gets that address.
*/
for (i = 0; i < IEEE802154_SADDRSIZE; i++)
{
i8sak->next_saddr[i] = (uint8_t)((CONFIG_IEEE802154_I8SAK_DEV_SADDR >> (i*8)) & 0xFF);
}
fd = open(i8sak->devname, O_RDWR);
if (fd < 0)
@ -521,7 +612,7 @@ static int i8sak_setup(FAR struct i8sak_s *i8sak, FAR const char *devname)
i8sak_cmd_error(i8sak);
}
ieee802154_seteaddr(fd, &i8sak->addr.eaddr[0]);
ieee802154_seteaddr(fd, i8sak->addr.eaddr);
close(fd);

View File

@ -63,7 +63,6 @@
****************************************************************************/
static void poll_eventcb(FAR struct ieee802154_notif_s *notif, FAR void *arg);
static void poll_receiver(FAR struct mac802154dev_rxframe_s *frame, FAR void *arg);
/****************************************************************************
* Public Functions
@ -133,13 +132,13 @@ void i8sak_poll_cmd(FAR struct i8sak_s *i8sak, int argc, FAR char *argv[])
wpanlistener_add_eventreceiver(&i8sak->wpanlistener, poll_eventcb,
&eventfilter, (FAR void *)i8sak, true);
printf("i8sak: Polling coordinator. PAN ID: 0x%04X SADDR: 0x%04X\n",
i8sak->ep.panid,
i8sak->ep.saddr);
printf("i8sak: Polling coordinator. PAN ID: %02X:%02X SADDR: %02X:%02X\n",
i8sak->ep.panid[0], i8sak->ep.panid[1],
i8sak->ep.saddr[0], i8sak->ep.saddr[1]);
pollreq.coordaddr.mode = IEEE802154_ADDRMODE_SHORT;
pollreq.coordaddr.saddr = i8sak->ep.saddr;
pollreq.coordaddr.panid = i8sak->ep.panid;
IEEE802154_SADDRCOPY(pollreq.coordaddr.saddr, i8sak->ep.saddr);
IEEE802154_PANIDCOPY(pollreq.coordaddr.panid, i8sak->ep.panid);
ieee802154_poll_req(fd, &pollreq);

View File

@ -129,37 +129,61 @@ void i8sak_startpan_cmd(FAR struct i8sak_s *i8sak, int argc, FAR char *argv[])
if (!i8sak->addrset)
{
for (i = 0; i < IEEE802154_EADDR_LEN; i++)
/* Set our address to the default PAN Coordinator configuration */
i8sak->addr.mode = IEEE802154_ADDRMODE_SHORT;
for (i = 0; i < IEEE802154_EADDRSIZE; i++)
{
i8sak->addr.eaddr[i] =
(uint8_t)((CONFIG_IEEE802154_I8SAK_PANCOORD_EADDR >> (i*8)) & 0xFF);
}
i8sak->addr.mode = IEEE802154_ADDRMODE_SHORT;
i8sak->addr.saddr = CONFIG_IEEE802154_I8SAK_PANCOORD_SADDR;
i8sak->addr.panid = CONFIG_IEEE802154_I8SAK_PANID;
for (i = 0; i < IEEE802154_SADDRSIZE; i++)
{
i8sak->addr.saddr[i] =
(uint8_t)((CONFIG_IEEE802154_I8SAK_PANCOORD_SADDR >> (i*8)) & 0xFF);
}
for (i = 0; i < IEEE802154_EADDR_LEN; i++)
for (i = 0; i < IEEE802154_PANIDSIZE; i++)
{
i8sak->addr.panid[i] =
(uint8_t)((CONFIG_IEEE802154_I8SAK_PANID >> (i*8)) & 0xFF);
}
/* Set the endpoint address to the default endpoint device */
i8sak->ep.mode = IEEE802154_ADDRMODE_SHORT;
for (i = 0; i < IEEE802154_EADDRSIZE; i++)
{
i8sak->ep.eaddr[i] =
(uint8_t)((CONFIG_IEEE802154_I8SAK_DEV_EADDR >> (i*8)) & 0xFF);
}
i8sak->ep.mode = IEEE802154_ADDRMODE_SHORT;
i8sak->ep.saddr = CONFIG_IEEE802154_I8SAK_DEV_SADDR;
i8sak->ep.panid = CONFIG_IEEE802154_I8SAK_PANID;
for (i = 0; i < IEEE802154_SADDRSIZE; i++)
{
i8sak->ep.saddr[i] =
(uint8_t)((CONFIG_IEEE802154_I8SAK_DEV_SADDR >> (i*8)) & 0xFF);
}
for (i = 0; i < IEEE802154_PANIDSIZE; i++)
{
i8sak->ep.panid[i] =
(uint8_t)((CONFIG_IEEE802154_I8SAK_PANID >> (i*8)) & 0xFF);
}
}
/* Set EADDR and SADDR */
ieee802154_seteaddr(fd, &i8sak->addr.eaddr[0]);
ieee802154_seteaddr(fd, i8sak->addr.eaddr);
ieee802154_setsaddr(fd, i8sak->addr.saddr);
/* Tell the MAC to start acting as a coordinator */
printf("i8sak: starting PAN\n");
startreq.panid = i8sak->addr.panid;
IEEE802154_PANIDCOPY(startreq.panid, i8sak->addr.panid);
startreq.chnum = i8sak->chnum;
startreq.chpage = i8sak->chpage;
startreq.beaconorder = 15;

View File

@ -61,7 +61,7 @@ int ieee802154_geteaddr(int fd, FAR uint8_t *eaddr)
req.attr = IEEE802154_ATTR_MAC_EXTENDED_ADDR;
ret = ieee802154_get_req(fd, &req);
memcpy(eaddr, &req.attrval.mac.eaddr[0], 8);
IEEE802154_EADDRCOPY(eaddr, req.attrval.mac.eaddr);
return ret;
}

View File

@ -42,6 +42,7 @@
#include <sys/ioctl.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <nuttx/wireless/ieee802154/ieee802154_mac.h>
@ -52,7 +53,7 @@
* Public Functions
****************************************************************************/
int ieee802154_getpanid(int fd, FAR uint16_t *panid)
int ieee802154_getpanid(int fd, FAR uint8_t *panid)
{
struct ieee802154_get_req_s req;
int ret;
@ -60,7 +61,6 @@ int ieee802154_getpanid(int fd, FAR uint16_t *panid)
req.attr = IEEE802154_ATTR_MAC_PANID;
ret = ieee802154_get_req(fd, &req);
*panid = req.attrval.mac.panid;
IEEE802154_PANIDCOPY(panid, req.attrval.mac.panid);
return ret;
}

View File

@ -42,6 +42,7 @@
#include <sys/ioctl.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <nuttx/wireless/ieee802154/ieee802154_mac.h>
@ -52,7 +53,7 @@
* Public Functions
****************************************************************************/
int ieee802154_getsaddr(int fd, FAR uint16_t *saddr)
int ieee802154_getsaddr(int fd, FAR uint8_t *saddr)
{
struct ieee802154_get_req_s req;
int ret;
@ -60,7 +61,6 @@ int ieee802154_getsaddr(int fd, FAR uint16_t *saddr)
req.attr = IEEE802154_ATTR_MAC_SHORT_ADDRESS;
ret = ieee802154_get_req(fd, &req);
*saddr = req.attrval.mac.saddr;
IEEE802154_SADDRCOPY(saddr, req.attrval.mac.saddr);
return ret;
}

View File

@ -59,7 +59,7 @@ int ieee802154_seteaddr(int fd, FAR const uint8_t *eaddr)
struct ieee802154_set_req_s req;
req.attr = IEEE802154_ATTR_MAC_EXTENDED_ADDR;
memcpy(&req.attrval.mac.eaddr[0], eaddr, 8);
IEEE802154_EADDRCOPY(req.attrval.mac.eaddr, eaddr);
return ieee802154_set_req(fd, &req);
}

View File

@ -43,6 +43,7 @@
#include <sys/ioctl.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <nuttx/wireless/ieee802154/ieee802154_mac.h>
@ -53,12 +54,12 @@
* Public Functions
****************************************************************************/
int ieee802154_setpanid(int fd, uint16_t panid)
int ieee802154_setpanid(int fd, FAR const uint8_t *panid)
{
struct ieee802154_set_req_s req;
req.attr = IEEE802154_ATTR_MAC_PANID;
req.attrval.mac.panid = panid;
IEEE802154_PANIDCOPY(req.attrval.mac.panid, panid);
return ieee802154_set_req(fd, &req);
}

View File

@ -43,6 +43,7 @@
#include <sys/ioctl.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <nuttx/wireless/ieee802154/ieee802154_mac.h>
@ -53,12 +54,12 @@
* Public Functions
****************************************************************************/
int ieee802154_setsaddr(int fd, uint16_t saddr)
int ieee802154_setsaddr(int fd, FAR const uint8_t *saddr)
{
struct ieee802154_set_req_s req;
req.attr = IEEE802154_ATTR_MAC_SHORT_ADDRESS;
req.attrval.mac.saddr = saddr;
IEEE802154_SADDRCOPY(req.attrval.mac.saddr, saddr);
return ieee802154_set_req(fd, &req);
}

View File

@ -61,7 +61,7 @@ int sixlowpan_geteaddr(int sock, FAR const char *ifname, FAR uint8_t *eaddr)
req.attr = IEEE802154_ATTR_MAC_EXTENDED_ADDR;
ret = sixlowpan_get_req(sock, ifname, &req);
memcpy(eaddr, &req.attrval.mac.eaddr[0], 8);
IEEE802154_EADDRCOPY(eaddr, req.attrval.mac.eaddr);
return ret;
}

View File

@ -53,7 +53,7 @@
* Public Functions
****************************************************************************/
int sixlowpan_getpanid(int sock, FAR const char *ifname, FAR uint16_t *panid)
int sixlowpan_getpanid(int sock, FAR const char *ifname, FAR uint8_t *panid)
{
struct ieee802154_get_req_s req;
int ret;
@ -61,7 +61,7 @@ int sixlowpan_getpanid(int sock, FAR const char *ifname, FAR uint16_t *panid)
req.attr = IEEE802154_ATTR_MAC_PANID;
ret = sixlowpan_get_req(sock, ifname, &req);
*panid = req.attrval.mac.panid;
IEEE802154_PANIDCOPY(panid, req.attrval.mac.panid);
return ret;
}

View File

@ -53,7 +53,7 @@
* Public Functions
****************************************************************************/
int sixlowpan_getsaddr(int sock, FAR const char *ifname, FAR uint16_t *saddr)
int sixlowpan_getsaddr(int sock, FAR const char *ifname, FAR uint8_t *saddr)
{
struct ieee802154_get_req_s req;
int ret;
@ -61,7 +61,7 @@ int sixlowpan_getsaddr(int sock, FAR const char *ifname, FAR uint16_t *saddr)
req.attr = IEEE802154_ATTR_MAC_SHORT_ADDRESS;
ret = sixlowpan_get_req(sock, ifname, &req);
*saddr = req.attrval.mac.saddr;
IEEE802154_SADDRCOPY(saddr, req.attrval.mac.saddr);
return ret;
}

View File

@ -58,7 +58,7 @@ int sixlowpan_seteaddr(int sock, FAR const char *ifname, FAR const uint8_t *eadd
struct ieee802154_set_req_s req;
req.attr = IEEE802154_ATTR_MAC_EXTENDED_ADDR;
memcpy(&req.attrval.mac.eaddr[0], eaddr, 8);
IEEE802154_EADDRCOPY(req.attrval.mac.eaddr, eaddr);
return sixlowpan_set_req(sock, ifname, &req);
}

View File

@ -53,12 +53,12 @@
* Public Functions
****************************************************************************/
int sixlowpan_setpanid(int sock, FAR const char *ifname, uint16_t panid)
int sixlowpan_setpanid(int sock, FAR const char *ifname, FAR const uint8_t *panid)
{
struct ieee802154_set_req_s req;
req.attr = IEEE802154_ATTR_MAC_PANID;
req.attrval.mac.panid = panid;
IEEE802154_PANIDCOPY(req.attrval.mac.panid, panid);
return sixlowpan_set_req(sock, ifname, &req);
}

View File

@ -53,12 +53,12 @@
* Public Functions
****************************************************************************/
int sixlowpan_setsaddr(int sock, FAR const char *ifname, uint16_t saddr)
int sixlowpan_setsaddr(int sock, FAR const char *ifname, FAR const uint8_t *saddr)
{
struct ieee802154_set_req_s req;
req.attr = IEEE802154_ATTR_MAC_SHORT_ADDRESS;
req.attrval.mac.saddr = saddr;
IEEE802154_SADDRCOPY(req.attrval.mac.saddr, saddr);
return sixlowpan_set_req(sock, ifname, &req);
}

View File

@ -48,9 +48,11 @@
* Public Functions
****************************************************************************/
int ieee802154_addrtostr(FAR char *buf, int len,
FAR struct ieee802154_addr_s *addr)
{
#if 0
#ifndef CONFIG_BIG_ENDIAN
uint16_t panid = ((addr->panid & 0xff) << 8) | ((addr->panid >> 8) & 0xff);
#else
@ -87,5 +89,7 @@ int ieee802154_addrtostr(FAR char *buf, int len,
return snprintf(buf,len,"<INVAL>");
}
return -1;
#endif
return -1;
}

View File

@ -315,7 +315,7 @@ static bool iwpan_str2bool(FAR const char *str)
static void iwpan_show_cmd(int sock, FAR const char *ifname)
{
uint8_t eaddr[IEEE802154_EADDR_LEN] =
uint8_t eaddr[IEEE802154_EADDRSIZE] =
{
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
@ -506,7 +506,7 @@ static void iwpan_devmode_cmd(int sock, FAR const char *ifname,
static void iwpan_eaddr_cmd(int sock, FAR const char *ifname,
FAR const char *addrstr)
{
uint8_t eaddr[IEEE802154_EADDR_LEN];
uint8_t eaddr[IEEE802154_EADDRSIZE];
int ret;
/* Convert input strings to values */