AM_CFLAGS = -DPC
noinst_LIBRARIES = lib6lowpan.a
-noinst_lib6lowpandir = $(includedir)/lib6lowpan-2.1.1
-noinst_lib6lowpan_HEADERS = 6lowpan.h devconf.h IEEE154Packet.h in_cksum.h \
- ip.h ip_malloc.h lib6lowpan.h TrackFlows.h
-lib6lowpan_a_SOURCES = lib6lowpan.c lib6lowpanIP.c lib6lowpanFrag.c $(lib6lowpan_HEADERS)
+lib6lowpan_h = 6lowpan.h devconf.h IEEE154Packet.h in_cksum.h \
+ ip.h ip_malloc.h lib6lowpan.h TrackFlows.h blip-platform.h
+lib6lowpan_a_SOURCES = lib6lowpan.c lib6lowpanIP.c lib6lowpanFrag.c $(lib6lowpan_h)
--- /dev/null
+/*
+ * "Copyright (c) 2008, 2009 The Regents of the University of California.
+ * All rights reserved."
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice, the following
+ * two paragraphs and the author appear in all copies of this software.
+ *
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
+ *
+ */
+#ifndef _BLIP_PLATFORM_H
+#define _BLIP_PLATFORM_H
+
+/* this file has platform-specific configuration settings that don't
+ belong anywhere else */
+
+/* bring in */
+#if defined(PC)
+// use library versions if on linux
+#include <netinet/in.h>
+#include <endian.h>
+#else
+// if we're not on a pc, assume little endian for now
+#define __LITTLE_ENDIAN 1234
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#endif
+
+/* buffer sizes are defined here. */
+#if !defined(PLATFORM_MICAZ)
+#define IP_MALLOC_HEAP_SIZE 1500
+enum {
+ IP_NUMBER_FRAGMENTS = 14,
+};
+#else
+#define IP_MALLOC_HEAP_SIZE 500
+enum {
+ IP_NUMBER_FRAGMENTS = 4,
+};
+#endif
+
+
+#ifndef BLIP_L2_RETRIES
+#define BLIP_L2_RETRIES 5
+#endif
+
+#ifndef BLIP_L2_DELAY
+#define BLIP_L2_DELAY 15
+#endif
+
+
+#endif
#ifndef _NWBYTE_H
#define _NWBYTE_H_
-#if !defined(PC)
-// if we're not on a pc, assume little endian for now
-#define __LITTLE_ENDIAN 1234
-#define __BYTE_ORDER __LITTLE_ENDIAN
-#endif
+#include "blip-platform.h"
/* define normal network byte-orders routines */
#if defined(PC)
-// use library versions if on linux
-#include <netinet/in.h>
-#include <endian.h>
#define ntoh16(X) ntohs(X)
#define hton16(X) htons(X)
#define hton16(X) (((((uint16_t)(X)) << 8) | ((uint16_t)(X) >> 8)) & 0xffff)
/* this is much more efficient since gcc can insert swpb now. */
-static uint32_t __attribute__((unused)) ntoh32(uint32_t i) {
+static inline uint32_t __attribute__((unused)) ntoh32(uint32_t i) {
uint16_t lo = (uint16_t)i;
uint16_t hi = (uint16_t)(i >> 16);
lo = (lo << 8) | (lo >> 8);
#endif
#else
-// assume big-endian byte-order
-#define leton16(X) (X)
+// big-endian byte-order
+#define leton16(X) (((((uint16_t)(X)) << 8) | ((uint16_t)(X) >> 8)) & 0xffff)
#define htole16(X) (((((uint16_t)(X)) << 8) | ((uint16_t)(X) >> 8)) & 0xffff)
#endif