Permalink
Browse files

A default configuraion file for Contiki

The contiki-default-conf.h file is intended as a safe fallback for
a number of configuration options in Contiki, to avoid putting too
much in the individual contiki-conf.h files.
  • Loading branch information...
adamdunkels committed Mar 17, 2013
1 parent f5a1ffa commit 2d50a4064340238081c2b506ec5e9201b46bf640
Showing with 249 additions and 7 deletions.
  1. +238 −0 core/contiki-default-conf.h
  2. +1 −0 core/contiki.h
  3. +9 −7 core/net/uip-ds6-route.h
  4. +1 −0 core/net/uip-icmp6.c
View
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) 2012, Thingsquare, http://www.thingsquare.com/.
+ * All rights reserved.
+ *
+ * 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 copyright holder 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 HOLDER 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 CONTIKI_DEFAULT_CONF_H
+#define CONTIKI_DEFAULT_CONF_H
+
+/*---------------------------------------------------------------------------*/
+/* Netstack configuration
+ *
+ * The netstack configuration is typically overridden by the platform
+ * configuration, as defined in contiki-conf.h
+ */
+
+/* NETSTACK_CONF_RADIO specifies the radio driver. The radio driver
+ typically depends on the radio used on the target hardware. */
+#ifndef NETSTACK_CONF_RADIO
+#define NETSTACK_CONF_RADIO nullradio_driver
+/* #define NETSTACK_CONF_RADIO cc2420_driver */
+#endif /* NETSTACK_CONF_RADIO */
+
+/* NETSTACK_CONF_FRAMER specifies the over-the-air frame format used
+ by Contiki radio packets. For IEEE 802.15.4 radios, use the
+ framer_802154 driver. */
+#ifndef NETSTACK_CONF_FRAMER
+#define NETSTACK_CONF_FRAMER framer_nullmac
+/* #define NETSTACK_CONF_FRAMER framer_802154 */
+#endif /* NETSTACK_CONF_FRAMER */
+
+/* NETSTACK_CONF_RDC specifies the Radio Duty Cycling (RDC) layer. The
+ nullrdc_driver never turns the radio off and is compatible with all
+ radios, but consumes a lot of power. The contikimac_driver is
+ highly power-efficent and allows sleepy routers, but is not
+ compatible with all radios. */
+#ifndef NETSTACK_CONF_RDC
+#define NETSTACK_CONF_RDC nullrdc_driver
+/* #define NETSTACK_CONF_RDC contikimac_driver */
+#endif /* NETSTACK_CONF_RDC */
+
+/* NETSTACK_CONF_MAC specifies the Medium Access Control (MAC)
+ layer. The nullmac_driver does not provide any MAC
+ functionality. The csma_driver is the default CSMA MAC layer, but
+ is not compatible with all radios. */
+#ifndef NETSTACK_CONF_MAC
+#define NETSTACK_CONF_MAC nullmac_driver
+/* #define NETSTACK_CONF_MAC csma_driver */
+#endif /* NETSTACK_CONF_MAC */
+
+/* NETSTACK_CONF_NETWORK specifies the network layer and can be either
+ sicslowpan_driver, for IPv6 networking, or rime_driver, for the
+ custom Rime network stack. */
+#ifndef NETSTACK_CONF_NETWORK
+#define NETSTACK_CONF_NETWORK rime_driver
+/* #define NETSTACK_CONF_NETWORK sicslowpan_driver */
+#endif /* NETSTACK_CONF_NETWORK */
+
+/* NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE specifies the channel check
+ rate of the RDC layer. This defines how often the RDC will wake up
+ and check for radio channel activity. A higher check rate results
+ in higher communication performance at the cost of a higher power
+ consumption. */
+#ifndef NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE
+#define NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE 8
+#endif /* NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE */
+
+/*---------------------------------------------------------------------------*/
+/* Packet buffer size options.
+ *
+ * The packet buffer size options can be tweaked on a per-project
+ * basis to reduce memory consumption.
+ */
+
+/* QUEUEBUF_CONF_NUM specifies the number of queue buffers. Queue
+ buffers are used throughout the Contiki netstack but the
+ configuration option can be tweaked to save memory. Performance can
+ suffer with a too low number of queue buffers though. */
+#ifndef QUEUEBUF_CONF_NUM
+#define QUEUEBUF_CONF_NUM 8
+#endif /* QUEUEBUF_CONF_NUM */
+/*---------------------------------------------------------------------------*/
+/* uIPv6 configuration options.
+ *
+ * Many of the uIPv6 configuration options can be overriden by a
+ * project-specific configuration to save memory.
+ */
+
+/* UIP_CONF_IPV6 specifies whether or not IPv6 should be used. If IPv6
+ is not used, IPv4 is used instead. */
+#ifndef UIP_CONF_IPV6
+#define UIP_CONF_IPV6 1
+#endif /* UIP_CONF_IPV6 */
+
+/* UIP_CONF_BUFFER_SIZE specifies how much memory should be reserved
+ for the uIP packet buffer. This sets an upper bound on the largest
+ IP packet that can be received by the system. */
+#ifndef UIP_CONF_BUFFER_SIZE
+#define UIP_CONF_BUFFER_SIZE 128
+#endif /* UIP_CONF_BUFFER_SIZE */
+
+/* UIP_CONF_ROUTER specifies if the IPv6 node should be a router or
+ not. By default, all Contiki nodes are routers. */
+#ifndef UIP_CONF_ROUTER
+#define UIP_CONF_ROUTER 1
+#endif /* UIP_CONF_ROUTER */
+
+/* UIP_CONF_IPV6_RPL specifies if RPL is to be used for IPv6
+ routing. */
+#ifndef UIP_CONF_IPV6_RPL
+#define UIP_CONF_IPV6_RPL 1
+#endif /* UIP_CONF_IPV6_RPL */
+
+/* UIP_CONF_MAX_ROUTES specifies the maximum number of routes that each
+ node will be able to handle. */
+#ifndef UIP_CONF_MAX_ROUTES
+#define UIP_CONF_MAX_ROUTES 20
+#endif /* UIP_CONF_MAX_ROUTES */
+
+/* UIP_CONF_UDP specifies if UDP support should be included or
+ not. Disabling UDP saves memory but breaks a lot of stuff. */
+#ifndef UIP_CONF_UDP
+#define UIP_CONF_UDP 1
+#endif /* UIP_CONF_UDP */
+
+/* UIP_CONF_MAX_CONNECTIONS specifies the maximum number of
+ simultaneous TCP connections. */
+#ifndef UIP_CONF_MAX_CONNECTIONS
+#define UIP_CONF_MAX_CONNECTIONS 8
+#endif /* UIP_CONF_MAX_CONNECTIONS */
+
+/* UIP_CONF_TCP specifies if TCP support should be included or
+ not. Disabling TCP saves memory. */
+#ifndef UIP_CONF_TCP
+#define UIP_CONF_TCP 1
+#endif /* UIP_CONF_TCP */
+
+/* UIP_CONF_MAX_CONNECTIONS specifies the maximum number of
+ simultaneous TCP connections. */
+#ifndef UIP_CONF_MAX_CONNECTIONS
+#define UIP_CONF_MAX_CONNECTIONS 8
+#endif /* UIP_CONF_MAX_CONNECTIONS */
+
+
+/* UIP_CONF_TCP_SPLIT enables a performance optimization hack, where
+ each maximum-sized TCP segment is split into two, to avoid the
+ performance degradation that is caused by delayed ACKs. */
+#ifndef UIP_CONF_TCP_SPLIT
+#define UIP_CONF_TCP_SPLIT 0
+#endif /* UIP_CONF_TCP_SPLIT */
+
+
+/*---------------------------------------------------------------------------*/
+/* 6lowpan configuration options.
+ *
+ * These options change the behavior of the 6lowpan header compression
+ * code (sicslowpan). They typically depend on the type of radio used
+ * on the target platform, and are therefore platform-specific.
+ */
+
+/* SICSLOWPAN_CONF_MAX_MAC_TRANSMISSIONS specifies how many times the
+ MAC layer should resend packets if no link-layer ACK was
+ received. This only makes sense with the csma_driver
+ NETSTACK_CONF_MAC. */
+#ifndef SICSLOWPAN_CONF_MAX_MAC_TRANSMISSIONS
+#define SICSLOWPAN_CONF_MAX_MAC_TRANSMISSIONS 4
+#endif /* SICSLOWPAN_CONF_MAX_MAC_TRANSMISSIONS */
+
+/* SICSLOWPAN_CONF_FRAG specifies if 6lowpan fragmentation should be
+ used or not. Fragmentation is on by default. */
+#ifndef SICSLOWPAN_CONF_FRAG
+#define SICSLOWPAN_CONF_FRAG 1
+#endif /* SICSLOWPAN_CONF_FRAG */
+
+/* SICSLOWPAN_CONF_MAC_MAX_PAYLOAD specifies the maximum size of
+ packets before they get fragmented. The default is 127 bytes (the
+ maximum size of a 802.15.4 frame) - 25 bytes (for the 802.15.4 MAC
+ layer header). This can be increased for systems with larger packet
+ sizes. */
+#ifndef SICSLOWPAN_CONF_MAC_MAX_PAYLOAD
+#define SICSLOWPAN_CONF_MAC_MAX_PAYLOAD (127 - 25)
+#endif /* SICSLOWPAN_CONF_MAC_MAX_PAYLOAD */
+
+/* SICSLOWPAN_CONF_COMPRESSION_THRESHOLD sets a lower threshold for
+ when packets should not be compressed. This is used by ContikiMAC,
+ which requires packets to be larger than a given minimum size. */
+#ifndef SICSLOWPAN_CONF_COMPRESSION_THRESHOLD
+#define SICSLOWPAN_CONF_COMPRESSION_THRESHOLD 0
+/* #define SICSLOWPAN_CONF_COMPRESSION_THRESHOLD 63 */
+#endif /* SICSLOWPAN_CONF_COMPRESSION_THRESHOLD */
+
+/* SICSLOWPAN_CONF_COMPRESSION specifies what 6lowpan compression
+ mechanism to be used. 6lowpan hc06 is the default in Contiki. */
+#ifndef SICSLOWPAN_CONF_COMPRESSION
+#define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_HC06
+#endif /* SICSLOWPAN_CONF_COMPRESSION */
+
+/*---------------------------------------------------------------------------*/
+/* ContikiMAC configuration options.
+ *
+ * These are typically configured on a per-platform basis.
+ */
+
+/* CONTIKIMAC_CONF_WITH_PHASE_OPTIMIZATION specifies if ContikiMAC
+ should optimize for the phase of neighbors. The phase optimization
+ may reduce power consumption but is not compatible with all timer
+ settings and is therefore off by default. */
+#ifndef CONTIKIMAC_CONF_WITH_PHASE_OPTIMIZATION
+#define CONTIKIMAC_CONF_WITH_PHASE_OPTIMIZATION 0
+#endif /* CONTIKIMAC_CONF_WITH_PHASE_OPTIMIZATION */
+
+
+#endif /* CONTIKI_DEFAULT_CONF_H */
View
@@ -36,6 +36,7 @@
#include "contiki-version.h"
#include "contiki-conf.h"
+#include "contiki-default-conf.h"
#include "sys/process.h"
#include "sys/autostart.h"
View
@@ -59,13 +59,15 @@ void uip_ds6_notification_add(struct uip_ds6_notification *n,
/* Routing table */
-#define UIP_DS6_ROUTE_NBS 0
-#ifndef UIP_CONF_DS6_ROUTE_NBU
-#define UIP_DS6_ROUTE_NBU 4
-#else
-#define UIP_DS6_ROUTE_NBU UIP_CONF_DS6_ROUTE_NBU
-#endif
-#define UIP_DS6_ROUTE_NB UIP_DS6_ROUTE_NBS + UIP_DS6_ROUTE_NBU
+#ifndef UIP_CONF_MAX_ROUTES
+#ifdef UIP_CONF_DS6_ROUTE_NBU
+#define UIP_DS6_ROUTE_NB UIP_CONF_DS6_ROUTE_NBU
+#else /* UIP_CONF_DS6_ROUTE_NBU */
+#define UIP_DS6_ROUTE_NB 4
+#endif /* UIP_CONF_DS6_ROUTE_NBU */
+#else /* UIP_CONF_MAX_ROUTES */
+#define UIP_DS6_ROUTE_NB UIP_CONF_MAX_ROUTES
+#endif /* UIP_CONF_MAX_ROUTES */
/** \brief define some additional RPL related route state and
* neighbor callback for RPL - if not a DS6_ROUTE_STATE is already set */
View
@@ -45,6 +45,7 @@
#include <string.h>
#include "net/uip-ds6.h"
#include "net/uip-icmp6.h"
+#include "contiki-default-conf.h"
#define DEBUG 0
#if DEBUG

0 comments on commit 2d50a40

Please sign in to comment.