diff --git a/Makefile b/Makefile index d6744bed3cf102427d59c45c2ce136309074db69..cd5bd421c3242124343f830523d1e08628f058a2 100644 --- a/Makefile +++ b/Makefile @@ -14,3 +14,4 @@ clean: doc: make -BC doc/doxygen + diff --git a/sys/net/sixlowpan/border.c b/sys/net/sixlowpan/border.c index 2de368cb38bec2aeeaa6edce1b84e9e77370e1ed..ecd82907ae939ef55e50edff3b396cde2ed20539 100644 --- a/sys/net/sixlowpan/border.c +++ b/sys/net/sixlowpan/border.c @@ -37,7 +37,7 @@ #include "sys/net/ieee802154/ieee802154_frame.h" #include "sys/net/net_help/net_help.h" -#define READER_STACK_SIZE 512 +#define READER_STACK_SIZE (KERNEL_CONF_STACKSIZE_IDLE) ipv6_addr_t abr_addr; @@ -120,7 +120,8 @@ void serial_reader_f(void) } } -uint8_t border_initialize(transceiver_type_t trans, ipv6_addr_t *border_router_addr) +uint8_t sixlowpan_lowpan_border_init(transceiver_type_t trans, + const ipv6_addr_t *border_router_addr) { ipv6_addr_t addr; @@ -160,21 +161,6 @@ uint8_t border_initialize(transceiver_type_t trans, ipv6_addr_t *border_router_a return SUCCESS; } -void border_send_ipv6_over_lowpan(ipv6_hdr_t *packet, uint8_t aro_flag, uint8_t sixco_flag) -{ - uint16_t offset = IPV6_HDR_LEN + HTONS(packet->length); - - packet->flowlabel = HTONS(packet->flowlabel); - packet->length = HTONS(packet->length); - - memset(buffer, 0, BUFFER_SIZE); - memcpy(buffer + LL_HDR_LEN, packet, offset); - - sixlowpan_lowpan_sendto((ieee_802154_long_t *) & (packet->destaddr.uint16[4]), - (uint8_t *)packet, - offset); -} - void border_process_lowpan(void) { msg_t m; diff --git a/sys/net/sixlowpan/border.h b/sys/net/sixlowpan/border.h index 7828295ea9f043cbf91943c39f6100578eed6eb7..6ee70b8dc487500cbb5d38b57d4905dd27bb3dc1 100644 --- a/sys/net/sixlowpan/border.h +++ b/sys/net/sixlowpan/border.h @@ -36,8 +36,6 @@ uint16_t border_get_serial_reader(void); uint8_t *get_serial_out_buffer(int offset); uint8_t *get_serial_in_buffer(int offset); -uint8_t border_initialize(transceiver_type_t trans, ipv6_addr_t *border_router_addr); -void border_send_ipv6_over_lowpan(ipv6_hdr_t *packet, uint8_t aro_flag, uint8_t sixco_flag); void border_process_lowpan(void); #endif /* _SIXLOWPAN_BORDER_H*/ diff --git a/sys/net/sixlowpan/bordermultiplex.c b/sys/net/sixlowpan/bordermultiplex.c index ae3d29fbd9102a9670cf449a5c20979248583cc0..e02d6f7b392c0c189ecded0387d094217733c72c 100644 --- a/sys/net/sixlowpan/bordermultiplex.c +++ b/sys/net/sixlowpan/bordermultiplex.c @@ -29,10 +29,10 @@ #include "bordermultiplex.h" -#define END 0xC0 -#define ESC 0xDB -#define END_ESC 0xDC -#define ESC_ESC 0xDD +#define END (0xC0) +#define ESC (0xDB) +#define END_ESC (0xDC) +#define ESC_ESC (0xDD) void demultiplex(border_packet_t *packet, int len) { @@ -48,7 +48,7 @@ void demultiplex(border_packet_t *packet, int len) switch (l3_header_buf->ethertype) { case (BORDER_ETHERTYPE_IPV6): { ipv6_hdr_t *ipv6_buf = (ipv6_hdr_t *)(((unsigned char *)packet) + sizeof(border_l3_header_t)); - border_send_ipv6_over_lowpan(ipv6_buf, 1, 1); + ipv6_send_buf(ipv6_buf); break; } diff --git a/sys/net/sixlowpan/bordermultiplex.h b/sys/net/sixlowpan/bordermultiplex.h index c284953b3076421c48736fa3d8fb74788f92723e..b2d84299afaca7cc76a2692c7954d9d752d05247 100644 --- a/sys/net/sixlowpan/bordermultiplex.h +++ b/sys/net/sixlowpan/bordermultiplex.h @@ -25,16 +25,16 @@ #include "ip.h" /* packet types of uart-packets */ -#define BORDER_PACKET_RAW_TYPE 0 -#define BORDER_PACKET_CONF_TYPE 2 -#define BORDER_PACKET_L3_TYPE 3 +#define BORDER_PACKET_RAW_TYPE (0) +#define BORDER_PACKET_CONF_TYPE (2) +#define BORDER_PACKET_L3_TYPE (3) /* configuration types */ -#define BORDER_CONF_CONTEXT 2 -#define BORDER_CONF_IPADDR 3 +#define BORDER_CONF_CONTEXT (2) +#define BORDER_CONF_IPADDR (3) /* ethertypes for L3 packets */ -#define BORDER_ETHERTYPE_IPV6 0x86DD +#define BORDER_ETHERTYPE_IPV6 (0x86DD) typedef struct __attribute__((packed)) { uint8_t empty; diff --git a/sys/net/sixlowpan/flowcontrol.h b/sys/net/sixlowpan/flowcontrol.h index f17a80c48e48db029d4f0ed0f23566fd8f553c08..cf7f811248c1dc35d81b3d4a50de4d007ee43687 100644 --- a/sys/net/sixlowpan/flowcontrol.h +++ b/sys/net/sixlowpan/flowcontrol.h @@ -29,15 +29,15 @@ #include "bordermultiplex.h" /* packet types for flowcontrol */ -#define BORDER_PACKET_ACK_TYPE 1 +#define BORDER_PACKET_ACK_TYPE (1) /* configuration types for flowcontrol */ -#define BORDER_CONF_SYN 0 -#define BORDER_CONF_SYNACK 1 +#define BORDER_CONF_SYN (0) +#define BORDER_CONF_SYNACK (1) -#define BORDER_SWS 1 -#define BORDER_RWS 1 -#define BORDER_SL_TIMEOUT 500 // microseconds, maybe smaller +#define BORDER_SWS (1) +#define BORDER_RWS (1) +#define BORDER_SL_TIMEOUT (500) // microseconds, maybe smaller #define SENDING_SLOT_STACK_SIZE (256) diff --git a/sys/net/sixlowpan/include/sixlowpan.h b/sys/net/sixlowpan/include/sixlowpan.h index eeb1634a70210e2f70c977dea0ecd01f6df4c324..f7a5e6df8b85c803d4d3ee8470b706cbca1e38c2 100644 --- a/sys/net/sixlowpan/include/sixlowpan.h +++ b/sys/net/sixlowpan/include/sixlowpan.h @@ -43,12 +43,9 @@ #include "sixlowpan/error.h" #include "sixlowpan/types.h" -#include "sixlowpan/borderrouter.h" #include "sixlowpan/lowpan.h" #include "sixlowpan/mac.h" -#include "../border.h" /* TODO: remove if not needed anymore */ - /** * @} */ diff --git a/sys/net/sixlowpan/include/sixlowpan/borderrouter.h b/sys/net/sixlowpan/include/sixlowpan/borderrouter.h deleted file mode 100644 index 2f40ee84af419e0a559ee6b934c1e3df74edf4b9..0000000000000000000000000000000000000000 --- a/sys/net/sixlowpan/include/sixlowpan/borderrouter.h +++ /dev/null @@ -1,24 +0,0 @@ -/** - * 6LoWPAN constants, data structs, and prototypes for 6LoWPAN border router - * - * Copyright (C) 2013 INRIA. - * - * This file subject to the terms and conditions of the GNU Lesser General - * Public License. See the file LICENSE in the top level directory for more - * details. - * - * @ingroup sixlowpan - * @{ - * @file sixlowpan/borderrouter.h - * @brief 6LoWPAN borderrouter header - * @author Stephan Zeisberg <zeisberg@mi.fu-berlin.de> - * @author Martin Lenders <mlenders@inf.fu-berlin.de> - * @author Eric Engel <eric.engel@fu-berlin.de> - * @author Oliver Gesch <oliver.gesch@googlemail.com> - * @} - */ - -#ifndef SIXLOWPAN_BORDERROUTER_H -#define SIXLOWPAN_BORDERROUTER_H - -#endif /* SIXLOWPAN_BORDERROUTER_H */ diff --git a/sys/net/sixlowpan/include/sixlowpan/lowpan.h b/sys/net/sixlowpan/include/sixlowpan/lowpan.h index a2c7122d0d8046d5eedcfe0086ac6d9ae0597a2e..2cda25b58d6587b1f5782284b746b4bf6449840b 100644 --- a/sys/net/sixlowpan/include/sixlowpan/lowpan.h +++ b/sys/net/sixlowpan/include/sixlowpan/lowpan.h @@ -193,6 +193,22 @@ void sixlowpan_lowpan_adhoc_init(transceiver_type_t trans, const ipv6_addr_t *prefix, uint8_t r_addr); +/** + * @brief Initializes a 6LoWPAN border router with an address + * + * @note Currently only working with addresses generated from + * IEEE 802.15.4 16-bit short addresses. + * + * @param[in] trans transceiver to use with 6LoWPAN. + * @param[in] border_router_addr Address of this border router. + * + * @return SUCCESS on success, otherwise SIXLOWERROR_ADDRESS if + * address was not generated from IEEE 802.15.4 16-bit short + * address. + */ +uint8_t sixlowpan_lowpan_border_init(transceiver_type_t trans, + const ipv6_addr_t *border_router_addr); + /** * @brief Send data via 6LoWPAN to destination node dest. * diff --git a/sys/net/sixlowpan/ip.c b/sys/net/sixlowpan/ip.c index 40d60e40cf139341e9efa7980163269eee9b06c9..cd1d4b0e980560f1dc380d8913779fac29f799fa 100644 --- a/sys/net/sixlowpan/ip.c +++ b/sys/net/sixlowpan/ip.c @@ -50,6 +50,21 @@ int rpl_process_pid = 0; /* registered upper layer threads */ int sixlowip_reg[SIXLOWIP_MAX_REGISTERED]; +void ipv6_send_buf(ipv6_hdr_t *buffer) +{ + uint16_t offset = IPV6_HDR_LEN + HTONS(buffer->length); + + buffer->flowlabel = HTONS(buffer->flowlabel); + buffer->length = HTONS(buffer->length); + + memset(buffer, 0, BUFFER_SIZE); + memcpy(buffer + LL_HDR_LEN, buffer, offset); + + sixlowpan_lowpan_sendto((ieee_802154_long_t *) & (buffer->destaddr.uint16[4]), + (uint8_t *)buffer, + offset); +} + ipv6_hdr_t *get_ipv6_buf_send(void) { return ((ipv6_hdr_t *) & (ip_send_buffer[LL_HDR_LEN])); diff --git a/sys/net/sixlowpan/ip.h b/sys/net/sixlowpan/ip.h index 7baa7a27449b43938b9c8d402a1c6a3ac46eebb3..c6fa20ef45b769c2f872943aaa815497eae6b93e 100644 --- a/sys/net/sixlowpan/ip.h +++ b/sys/net/sixlowpan/ip.h @@ -134,6 +134,7 @@ typedef struct __attribute__((packed)) { extern iface_t iface; +void ipv6_send_buf(ipv6_hdr_t *buffer); /* function prototypes */ struct icmpv6_hdr_t *get_icmpv6_buf(uint8_t ext_len); ipv6_hdr_t *get_ipv6_buf(void);