diff --git a/net/sixlowpan/sixlowpan.h b/net/sixlowpan/sixlowpan.h index b003445fc6..c9fd5fd7bd 100644 --- a/net/sixlowpan/sixlowpan.h +++ b/net/sixlowpan/sixlowpan.h @@ -50,10 +50,13 @@ ****************************************************************************/ /* Rime addres macros */ +/* Copy a Rime address */ #define rimeaddr_copy(dest,src) \ memcpy(dest, src, CONFIG_NET_6LOWPAN_RIMEADDR_SIZE) +/* Compare two Rime addresses */ + #define rimeaddr_cmp(addr1,addr2) \ (memcmp(addr1, addr2, CONFIG_NET_6LOWPAN_RIMEADDR_SIZE) == 0) @@ -77,10 +80,6 @@ struct sixlowpan_rime_sniffer_s; /* Foward reference */ extern FAR struct sixlowpan_rime_sniffer_s *g_sixlowpan_sniffer; #endif -/* All zero rime address */ - -extern const struct rimeaddr_s g_rimeaddr_null; - /**************************************************************************** * Public Types ****************************************************************************/ @@ -171,26 +170,6 @@ ssize_t psock_6lowpan_udp_send(FAR struct socket *psock, FAR const void *buf, size_t len); #endif -/**************************************************************************** - * Name: sixlowpan_output - * - * Description: - * Process an outgoing UDP or TCP packet. Called from UDP/TCP logic to - * determine if the the packet should be formatted for 6loWPAN output. - * - * Input Parameters: - * dev - The IEEE802.15.4 MAC network driver interface. - * - * Returned Value: - * Ok is returned on success; Othewise a negated errno value is returned. - * This function is expected to fail if the driver is not an IEEE802.15.4 - * MAC network driver. In that case, the UDP/TCP will fall back to normal - * IPv4/IPv6 formatting. - * - ****************************************************************************/ - -int sixlowpan_output(FAR struct net_driver_s *dev); - /**************************************************************************** * Name: sixlowpan_hc06_initialize * diff --git a/net/sixlowpan/sixlowpan_send.c b/net/sixlowpan/sixlowpan_send.c index 59f26959ae..20b567914e 100644 --- a/net/sixlowpan/sixlowpan_send.c +++ b/net/sixlowpan/sixlowpan_send.c @@ -236,8 +236,6 @@ static int sixlowpan_send(FAR struct net_driver_s *dev, /* Reset rime buffer, packet buffer metatadata */ - dev->d_len = 0; - sixlowpan_pktbuf_reset(ieee); ieee->i_rimeptr = &dev->d_buf[PACKETBUF_HDR_SIZE]; @@ -300,6 +298,7 @@ static int sixlowpan_send(FAR struct net_driver_s *dev, ninfo("Header of len %d\n", ieee->i_rime_hdrlen); + /* Calculate frame header length. */ #warning Missing logic return -ENOSYS; } diff --git a/net/sixlowpan/sixlowpan_utils.c b/net/sixlowpan/sixlowpan_utils.c new file mode 100644 index 0000000000..077055f081 --- /dev/null +++ b/net/sixlowpan/sixlowpan_utils.c @@ -0,0 +1,85 @@ +/**************************************************************************** + * net/sixlowpan/sixlowpan_utils.c + * + * Copyright (C) 2017 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Copyright (C) 2017, Gregory Nutt, all rights reserved + * Author: Gregory Nutt + * + * Derives from logic in Contiki: + * + * Copyright (c) 2008, Swedish Institute of Computer Science. + * All rights reserved. + * Authors: Adam Dunkels + * Nicolas Tsiftes + * Niclas Finne + * Mathilde Durvy + * Julien Abeille + * Joakim Eriksson + * Joel Hoglund + * + * 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 of the Institute 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 INSTITUTE 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 INSTITUTE 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 + +#include + +#include "nuttx/net/sixlowpan.h" + +#include "sixlowpan/sixlowpan.h" + +#ifdef CONFIG_NET_6LOWPAN + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: sixlowpan_pktbuf_reset + * + * Description: + * Reset all attributes and addresses in the packet buffer metadata in the + * provided IEEE802.15.4 MAC driver structure. + * + ****************************************************************************/ + +void sixlowpan_pktbuf_reset(FAR struct ieee802154_driver_s *ieee) +{ + ieee->i_dev.d_len = 0; + ieee->i_rimeptr = 0; + ieee->i_hdrptr = PACKETBUF_HDR_SIZE; + + memset(ieee->i_pktattrs, 0, PACKETBUF_NUM_ATTRS * sizeof(uint16_t)); + memset(ieee->i_pktaddrs, 0, PACKETBUF_NUM_ADDRS * sizeof(struct rimeaddr_s)); +} + +#endif /* CONFIG_NET_6LOWPAN */