Added TSCH+RPL example, with support for link-layer security and Orchestra scheduling
This commit is contained in:
parent
bc1e27cab7
commit
f225ff43d3
5 changed files with 674 additions and 0 deletions
22
examples/ipv6/rpl-tsch/Makefile
Normal file
22
examples/ipv6/rpl-tsch/Makefile
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
CONTIKI_PROJECT = node
|
||||||
|
all: $(CONTIKI_PROJECT)
|
||||||
|
|
||||||
|
CONTIKI=../../..
|
||||||
|
CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\"
|
||||||
|
|
||||||
|
CONTIKI_WITH_IPV6 = 1
|
||||||
|
MAKE_WITH_ORCHESTRA ?= 0 # force Orchestra from command line
|
||||||
|
MAKE_WITH_SECURITY ?= 0 # force Security from command line
|
||||||
|
|
||||||
|
APPS += orchestra
|
||||||
|
MODULES += core/net/mac/tsch
|
||||||
|
|
||||||
|
ifeq ($(MAKE_WITH_ORCHESTRA),1)
|
||||||
|
CFLAGS += -DWITH_ORCHESTRA=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(MAKE_WITH_SECURITY),1)
|
||||||
|
CFLAGS += -DWITH_SECURITY=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(CONTIKI)/Makefile.include
|
10
examples/ipv6/rpl-tsch/README.md
Normal file
10
examples/ipv6/rpl-tsch/README.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
A RPL+TSCH node. Will act as basic node by default, but can be configured at startup
|
||||||
|
using the user button and following instructions from the log output. Every press
|
||||||
|
of a button toggles the mode as 6ln, 6dr or 6dr-sec (detailled next). After 10s with
|
||||||
|
no button press, the node starts in the last setting. The modes are:
|
||||||
|
* 6ln (default): 6lowpan node, will join a RPL+TSCH network and act as router.
|
||||||
|
* 6dr: 6lowpan DAG Root, will start its own RPL+TSCH network. Note this is not a
|
||||||
|
border router, i.e. it does not have a serial interface with connection to
|
||||||
|
the Internet. For a border router, see ../border-router.
|
||||||
|
* 6dr-sec: 6lowpan DAG Root, starting a RPL+TSCH network with link-layer security
|
||||||
|
enabled. 6ln nodes are able to join both non-secured or secured networks.
|
210
examples/ipv6/rpl-tsch/node.c
Normal file
210
examples/ipv6/rpl-tsch/node.c
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, SICS Swedish ICT.
|
||||||
|
* 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 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* \file
|
||||||
|
* A RPL+TSCH node able to act as either a simple node (6ln),
|
||||||
|
* DAG Root (6dr) or DAG Root with security (6dr-sec)
|
||||||
|
* Press use button at startup to configure.
|
||||||
|
*
|
||||||
|
* \author Simon Duquennoy <simonduq@sics.se>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "contiki.h"
|
||||||
|
#include "node-id.h"
|
||||||
|
#include "net/rpl/rpl.h"
|
||||||
|
#include "net/ipv6/uip-ds6-route.h"
|
||||||
|
#include "net/mac/tsch/tsch.h"
|
||||||
|
#if WITH_ORCHESTRA
|
||||||
|
#include "orchestra.h"
|
||||||
|
#endif /* WITH_ORCHESTRA */
|
||||||
|
|
||||||
|
#define DEBUG DEBUG_PRINT
|
||||||
|
#include "net/ip/uip-debug.h"
|
||||||
|
|
||||||
|
#define CONFIG_VIA_BUTTON PLATFORM_HAS_BUTTON
|
||||||
|
#if CONFIG_VIA_BUTTON
|
||||||
|
#include "button-sensor.h"
|
||||||
|
#endif /* CONFIG_VIA_BUTTON */
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
PROCESS(node_process, "RPL Node");
|
||||||
|
#if CONFIG_VIA_BUTTON
|
||||||
|
AUTOSTART_PROCESSES(&node_process, &sensors_process);
|
||||||
|
#else /* CONFIG_VIA_BUTTON */
|
||||||
|
AUTOSTART_PROCESSES(&node_process);
|
||||||
|
#endif /* CONFIG_VIA_BUTTON */
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
print_network_status(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
uint8_t state;
|
||||||
|
uip_ds6_defrt_t *default_route;
|
||||||
|
uip_ds6_route_t *route;
|
||||||
|
|
||||||
|
PRINTA("--- Network status ---\n");
|
||||||
|
|
||||||
|
/* Our IPv6 addresses */
|
||||||
|
PRINTA("- Server IPv6 addresses:\n");
|
||||||
|
for(i = 0; i < UIP_DS6_ADDR_NB; i++) {
|
||||||
|
state = uip_ds6_if.addr_list[i].state;
|
||||||
|
if(uip_ds6_if.addr_list[i].isused &&
|
||||||
|
(state == ADDR_TENTATIVE || state == ADDR_PREFERRED)) {
|
||||||
|
PRINTA("-- ");
|
||||||
|
uip_debug_ipaddr_print(&uip_ds6_if.addr_list[i].ipaddr);
|
||||||
|
PRINTA("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Our default route */
|
||||||
|
PRINTA("- Default route:\n");
|
||||||
|
default_route = uip_ds6_defrt_lookup(uip_ds6_defrt_choose());
|
||||||
|
if(default_route != NULL) {
|
||||||
|
PRINTA("-- ");
|
||||||
|
uip_debug_ipaddr_print(&default_route->ipaddr);;
|
||||||
|
PRINTA(" (lifetime: %lu seconds)\n", (unsigned long)default_route->lifetime.interval);
|
||||||
|
} else {
|
||||||
|
PRINTA("-- None\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Our routing entries */
|
||||||
|
PRINTA("- Routing entries (%u in total):\n", uip_ds6_route_num_routes());
|
||||||
|
route = uip_ds6_route_head();
|
||||||
|
while(route != NULL) {
|
||||||
|
PRINTA("-- ");
|
||||||
|
uip_debug_ipaddr_print(&route->ipaddr);
|
||||||
|
PRINTA(" via ");
|
||||||
|
uip_debug_ipaddr_print(uip_ds6_route_nexthop(route));
|
||||||
|
PRINTA(" (lifetime: %lu seconds)\n", (unsigned long)route->state.lifetime);
|
||||||
|
route = uip_ds6_route_next(route);
|
||||||
|
}
|
||||||
|
|
||||||
|
PRINTA("----------------------\n");
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
net_init(uip_ipaddr_t *br_prefix)
|
||||||
|
{
|
||||||
|
uip_ipaddr_t global_ipaddr;
|
||||||
|
|
||||||
|
if(br_prefix) { /* We are RPL root. Will be set automatically
|
||||||
|
as TSCH pan coordinator via the tsch-rpl module */
|
||||||
|
memcpy(&global_ipaddr, br_prefix, 16);
|
||||||
|
uip_ds6_set_addr_iid(&global_ipaddr, &uip_lladdr);
|
||||||
|
uip_ds6_addr_add(&global_ipaddr, 0, ADDR_AUTOCONF);
|
||||||
|
rpl_set_root(RPL_DEFAULT_INSTANCE, &global_ipaddr);
|
||||||
|
rpl_set_prefix(rpl_get_any_dag(), br_prefix, 64);
|
||||||
|
rpl_repair_root(RPL_DEFAULT_INSTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
NETSTACK_MAC.on();
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
PROCESS_THREAD(node_process, ev, data)
|
||||||
|
{
|
||||||
|
static struct etimer et;
|
||||||
|
PROCESS_BEGIN();
|
||||||
|
|
||||||
|
/* 3 possible roles:
|
||||||
|
* - role_6ln: simple node, will join any network, secured or not
|
||||||
|
* - role_6dr: DAG root, will advertise (unsecured) beacons
|
||||||
|
* - role_6dr_sec: DAG root, will advertise secured beacons
|
||||||
|
* */
|
||||||
|
static int is_coordinator = 0;
|
||||||
|
static enum { role_6ln, role_6dr, role_6dr_sec } node_role;
|
||||||
|
node_role = role_6ln;
|
||||||
|
|
||||||
|
/* Set node with ID == 1 as coordinator, convenient in Cooja. */
|
||||||
|
if(node_id == 1) {
|
||||||
|
if(LLSEC802154_CONF_SECURITY_LEVEL) {
|
||||||
|
node_role = role_6dr_sec;
|
||||||
|
} else {
|
||||||
|
node_role = role_6dr;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
node_role = role_6ln;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if CONFIG_VIA_BUTTON
|
||||||
|
{
|
||||||
|
#define CONFIG_WAIT_TIME 5
|
||||||
|
|
||||||
|
SENSORS_ACTIVATE(button_sensor);
|
||||||
|
etimer_set(&et, CLOCK_SECOND * CONFIG_WAIT_TIME);
|
||||||
|
|
||||||
|
while(!etimer_expired(&et)) {
|
||||||
|
printf("Init: current role: %s. Will start in %u seconds. Press user button to toggle mode.\n",
|
||||||
|
node_role == role_6ln ? "6ln" : (node_role == role_6dr) ? "6dr" : "6dr-sec",
|
||||||
|
CONFIG_WAIT_TIME);
|
||||||
|
PROCESS_WAIT_EVENT_UNTIL(((ev == sensors_event) &&
|
||||||
|
(data == &button_sensor) && button_sensor.value(0) > 0)
|
||||||
|
|| etimer_expired(&et));
|
||||||
|
if(ev == sensors_event && data == &button_sensor && button_sensor.value(0) > 0) {
|
||||||
|
node_role = (node_role + 1) % 3;
|
||||||
|
if(LLSEC802154_CONF_SECURITY_LEVEL == 0 && node_role == role_6dr_sec) {
|
||||||
|
node_role = (node_role + 1) % 3;
|
||||||
|
}
|
||||||
|
etimer_restart(&et);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_VIA_BUTTON */
|
||||||
|
|
||||||
|
printf("Init: node starting with role %s\n",
|
||||||
|
node_role == role_6ln ? "6ln" : (node_role == role_6dr) ? "6dr" : "6dr-sec");
|
||||||
|
|
||||||
|
tsch_set_pan_secured(LLSEC802154_CONF_SECURITY_LEVEL && (node_role == role_6dr_sec));
|
||||||
|
is_coordinator = node_role > role_6ln;
|
||||||
|
|
||||||
|
if(is_coordinator) {
|
||||||
|
uip_ipaddr_t prefix;
|
||||||
|
uip_ip6addr(&prefix, 0xaaaa, 0, 0, 0, 0, 0, 0, 0);
|
||||||
|
net_init(&prefix);
|
||||||
|
} else {
|
||||||
|
net_init(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if WITH_ORCHESTRA
|
||||||
|
orchestra_init();
|
||||||
|
#endif /* WITH_ORCHESTRA */
|
||||||
|
|
||||||
|
/* Print out routing tables every minute */
|
||||||
|
etimer_set(&et, CLOCK_SECOND * 60);
|
||||||
|
while(1) {
|
||||||
|
print_network_status();
|
||||||
|
PROCESS_YIELD_UNTIL(etimer_expired(&et));
|
||||||
|
etimer_reset(&et);
|
||||||
|
}
|
||||||
|
|
||||||
|
PROCESS_END();
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
165
examples/ipv6/rpl-tsch/project-conf.h
Normal file
165
examples/ipv6/rpl-tsch/project-conf.h
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, SICS Swedish ICT.
|
||||||
|
* 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 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \author Simon Duquennoy <simonduq@sics.se>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __PROJECT_CONF_H__
|
||||||
|
#define __PROJECT_CONF_H__
|
||||||
|
|
||||||
|
/* Set to run orchestra */
|
||||||
|
#ifndef WITH_ORCHESTRA
|
||||||
|
#define WITH_ORCHESTRA 0
|
||||||
|
#endif /* WITH_ORCHESTRA */
|
||||||
|
|
||||||
|
/* Set to enable TSCH security */
|
||||||
|
#ifndef WITH_SECURITY
|
||||||
|
#define WITH_SECURITY 0
|
||||||
|
#endif /* WITH_SECURITY */
|
||||||
|
|
||||||
|
/*******************************************************/
|
||||||
|
/********************* Enable TSCH *********************/
|
||||||
|
/*******************************************************/
|
||||||
|
|
||||||
|
/* Netstack layers */
|
||||||
|
#undef NETSTACK_CONF_MAC
|
||||||
|
#define NETSTACK_CONF_MAC tschmac_driver
|
||||||
|
#undef NETSTACK_CONF_RDC
|
||||||
|
#define NETSTACK_CONF_RDC nordc_driver
|
||||||
|
#undef NETSTACK_CONF_FRAMER
|
||||||
|
#define NETSTACK_CONF_FRAMER framer_802154
|
||||||
|
|
||||||
|
/* IEEE802.15.4 frame version */
|
||||||
|
#undef FRAME802154_CONF_VERSION
|
||||||
|
#define FRAME802154_CONF_VERSION FRAME802154_IEEE802154E_2012
|
||||||
|
|
||||||
|
/* TSCH and RPL callbacks */
|
||||||
|
#define RPL_CALLBACK_PARENT_SWITCH tsch_rpl_callback_parent_switch
|
||||||
|
#define RPL_CALLBACK_NEW_DIO_INTERVAL tsch_rpl_callback_new_dio_interval
|
||||||
|
#define TSCH_CALLBACK_JOINING_NETWORK tsch_rpl_callback_joining_network
|
||||||
|
#define TSCH_CALLBACK_LEAVING_NETWORK tsch_rpl_callback_leaving_network
|
||||||
|
|
||||||
|
/* Needed for cc2420 platforms only */
|
||||||
|
/* Disable DCO calibration (uses timerB) */
|
||||||
|
#undef DCOSYNCH_CONF_ENABLED
|
||||||
|
#define DCOSYNCH_CONF_ENABLED 0
|
||||||
|
/* Enable SFD timestamps (uses timerB) */
|
||||||
|
#undef CC2420_CONF_SFD_TIMESTAMPS
|
||||||
|
#define CC2420_CONF_SFD_TIMESTAMPS 1
|
||||||
|
|
||||||
|
/*******************************************************/
|
||||||
|
/******************* Configure TSCH ********************/
|
||||||
|
/*******************************************************/
|
||||||
|
|
||||||
|
/* TSCH logging. 0: disabled. 1: basic log. 2: with delayed
|
||||||
|
* log messages from interrupt */
|
||||||
|
#undef TSCH_LOG_CONF_LEVEL
|
||||||
|
#define TSCH_LOG_CONF_LEVEL 2
|
||||||
|
|
||||||
|
/* IEEE802.15.4 PANID */
|
||||||
|
#undef IEEE802154_CONF_PANID
|
||||||
|
#define IEEE802154_CONF_PANID 0xabcd
|
||||||
|
|
||||||
|
/* Do not start TSCH at init, wait for NETSTACK_MAC.on() */
|
||||||
|
#undef TSCH_CONF_AUTOSTART
|
||||||
|
#define TSCH_CONF_AUTOSTART 0
|
||||||
|
|
||||||
|
/* 6TiSCH minimal schedule length.
|
||||||
|
* Larger values result in less frequent active slots: reduces capacity and saves energy. */
|
||||||
|
#undef TSCH_SCHEDULE_CONF_DEFAULT_LENGTH
|
||||||
|
#define TSCH_SCHEDULE_CONF_DEFAULT_LENGTH 3
|
||||||
|
|
||||||
|
#if WITH_SECURITY
|
||||||
|
|
||||||
|
/* Enable security */
|
||||||
|
#undef LLSEC802154_CONF_SECURITY_LEVEL
|
||||||
|
#define LLSEC802154_CONF_SECURITY_LEVEL 1
|
||||||
|
/* TSCH uses explicit keys to identify k1 and k2 */
|
||||||
|
#undef LLSEC802154_CONF_USES_EXPLICIT_KEYS
|
||||||
|
#define LLSEC802154_CONF_USES_EXPLICIT_KEYS 1
|
||||||
|
/* TSCH uses the ASN rather than frame counter to construct the Nonce */
|
||||||
|
#undef LLSEC802154_CONF_USES_FRAME_COUNTER
|
||||||
|
#define LLSEC802154_CONF_USES_FRAME_COUNTER 0
|
||||||
|
|
||||||
|
#endif /* WITH_SECURITY */
|
||||||
|
|
||||||
|
#if WITH_ORCHESTRA
|
||||||
|
|
||||||
|
/* See apps/orchestra/README.md for more Orchestra configuration options */
|
||||||
|
#define TSCH_SCHEDULE_CONF_WITH_6TISCH_MINIMAL 0 /* No 6TiSCH minimal schedule */
|
||||||
|
#define TSCH_CONF_WITH_LINK_SELECTOR 1 /* Orchestra requires per-packet link selection */
|
||||||
|
/* Orchestra callbacks */
|
||||||
|
#define TSCH_CALLBACK_NEW_TIME_SOURCE orchestra_callback_new_time_source
|
||||||
|
#define TSCH_CALLBACK_PACKET_READY orchestra_callback_packet_ready
|
||||||
|
#define NETSTACK_CONF_ROUTING_NEIGHBOR_ADDED_CALLBACK orchestra_callback_child_added
|
||||||
|
#define NETSTACK_CONF_ROUTING_NEIGHBOR_REMOVED_CALLBACK orchestra_callback_child_removed
|
||||||
|
|
||||||
|
#endif /* WITH_ORCHESTRA */
|
||||||
|
|
||||||
|
/*******************************************************/
|
||||||
|
/************* Other system configuration **************/
|
||||||
|
/*******************************************************/
|
||||||
|
|
||||||
|
#if CONTIKI_TARGET_Z1
|
||||||
|
/* Save some space to fit the limited RAM of the z1 */
|
||||||
|
#undef UIP_CONF_TCP
|
||||||
|
#define UIP_CONF_TCP 0
|
||||||
|
#undef QUEUEBUF_CONF_NUM
|
||||||
|
#define QUEUEBUF_CONF_NUM 6
|
||||||
|
#undef TSCH_QUEUE_CONF_NUM_PER_NEIGHBOR
|
||||||
|
#define TSCH_QUEUE_CONF_NUM_PER_NEIGHBOR 8
|
||||||
|
#undef TSCH_QUEUE_CONF_MAX_NEIGHBOR_QUEUES
|
||||||
|
#define TSCH_QUEUE_CONF_MAX_NEIGHBOR_QUEUES 6
|
||||||
|
#undef UIP_CONF_MAX_ROUTES
|
||||||
|
#define UIP_CONF_MAX_ROUTES 8
|
||||||
|
#undef NBR_TABLE_CONF_MAX_NEIGHBORS
|
||||||
|
#define NBR_TABLE_CONF_MAX_NEIGHBORS 8
|
||||||
|
#undef UIP_CONF_ND6_SEND_NA
|
||||||
|
#define UIP_CONF_ND6_SEND_NA 0
|
||||||
|
#undef SICSLOWPAN_CONF_FRAG
|
||||||
|
#define SICSLOWPAN_CONF_FRAG 0
|
||||||
|
|
||||||
|
#if WITH_SECURITY
|
||||||
|
/* Note: on sky or z1 in cooja, crypto operations are done in S/W and
|
||||||
|
* cannot be accommodated in normal slots. Use 65ms slots instead, and
|
||||||
|
* a very short 6TiSCH minimal schedule length */
|
||||||
|
#undef TSCH_CONF_DEFAULT_TIMESLOT_LENGTH
|
||||||
|
#define TSCH_CONF_DEFAULT_TIMESLOT_LENGTH 65000
|
||||||
|
#undef TSCH_SCHEDULE_CONF_DEFAULT_LENGTH
|
||||||
|
#define TSCH_SCHEDULE_CONF_DEFAULT_LENGTH 2
|
||||||
|
/* Reduce log level to make space for security on z1 */
|
||||||
|
#undef TSCH_LOG_CONF_LEVEL
|
||||||
|
#define TSCH_LOG_CONF_LEVEL 1
|
||||||
|
#endif /* WITH_SECURITY */
|
||||||
|
|
||||||
|
#endif /* CONTIKI_TARGET_Z1 */
|
||||||
|
|
||||||
|
#endif /* __PROJECT_CONF_H__ */
|
267
examples/ipv6/rpl-tsch/rpl-tsch-z1.csc
Normal file
267
examples/ipv6/rpl-tsch/rpl-tsch-z1.csc
Normal file
|
@ -0,0 +1,267 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<simconf>
|
||||||
|
<project EXPORT="discard">[APPS_DIR]/mrm</project>
|
||||||
|
<project EXPORT="discard">[APPS_DIR]/mspsim</project>
|
||||||
|
<project EXPORT="discard">[APPS_DIR]/avrora</project>
|
||||||
|
<project EXPORT="discard">[APPS_DIR]/serial_socket</project>
|
||||||
|
<project EXPORT="discard">[APPS_DIR]/collect-view</project>
|
||||||
|
<project EXPORT="discard">[APPS_DIR]/powertracker</project>
|
||||||
|
<simulation>
|
||||||
|
<title>RPL+TSCH</title>
|
||||||
|
<randomseed>123456</randomseed>
|
||||||
|
<motedelay_us>1000000</motedelay_us>
|
||||||
|
<radiomedium>
|
||||||
|
org.contikios.cooja.radiomediums.UDGM
|
||||||
|
<transmitting_range>50.0</transmitting_range>
|
||||||
|
<interference_range>100.0</interference_range>
|
||||||
|
<success_ratio_tx>1.0</success_ratio_tx>
|
||||||
|
<success_ratio_rx>1.0</success_ratio_rx>
|
||||||
|
</radiomedium>
|
||||||
|
<events>
|
||||||
|
<logoutput>40000</logoutput>
|
||||||
|
</events>
|
||||||
|
<motetype>
|
||||||
|
org.contikios.cooja.mspmote.Z1MoteType
|
||||||
|
<identifier>z11</identifier>
|
||||||
|
<description>Z1 Mote Type #z11</description>
|
||||||
|
<source EXPORT="discard">[CONFIG_DIR]/node.c</source>
|
||||||
|
<commands EXPORT="discard">make node.z1 TARGET=z1</commands>
|
||||||
|
<firmware EXPORT="copy">[CONFIG_DIR]/node.z1</firmware>
|
||||||
|
<moteinterface>org.contikios.cooja.interfaces.Position</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.interfaces.RimeAddress</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.interfaces.IPAddress</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.interfaces.Mote2MoteRelations</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.interfaces.MoteAttributes</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.mspmote.interfaces.MspClock</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.mspmote.interfaces.MspMoteID</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.mspmote.interfaces.MspButton</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.mspmote.interfaces.Msp802154Radio</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.mspmote.interfaces.MspDefaultSerial</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.mspmote.interfaces.MspLED</moteinterface>
|
||||||
|
<moteinterface>org.contikios.cooja.mspmote.interfaces.MspDebugOutput</moteinterface>
|
||||||
|
</motetype>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>-1.285769821276336</x>
|
||||||
|
<y>38.58045647334346</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>1</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>-19.324109516886306</x>
|
||||||
|
<y>76.23135780254927</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>2</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>5.815501305791592</x>
|
||||||
|
<y>76.77463755494317</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>3</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>31.920697784030082</x>
|
||||||
|
<y>50.5212265977149</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>4</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>47.21747673247198</x>
|
||||||
|
<y>30.217765340599726</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>5</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>10.622284947035123</x>
|
||||||
|
<y>109.81862399725188</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>6</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>52.41150716335335</x>
|
||||||
|
<y>109.93228340481916</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>7</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>70.18727461718498</x>
|
||||||
|
<y>70.06861701541145</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>8</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
<mote>
|
||||||
|
<breakpoints />
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.interfaces.Position
|
||||||
|
<x>80.29870484201041</x>
|
||||||
|
<y>99.37351603835938</y>
|
||||||
|
<z>0.0</z>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspClock
|
||||||
|
<deviation>1.0</deviation>
|
||||||
|
</interface_config>
|
||||||
|
<interface_config>
|
||||||
|
org.contikios.cooja.mspmote.interfaces.MspMoteID
|
||||||
|
<id>9</id>
|
||||||
|
</interface_config>
|
||||||
|
<motetype_identifier>z11</motetype_identifier>
|
||||||
|
</mote>
|
||||||
|
</simulation>
|
||||||
|
<plugin>
|
||||||
|
org.contikios.cooja.plugins.SimControl
|
||||||
|
<width>242</width>
|
||||||
|
<z>3</z>
|
||||||
|
<height>160</height>
|
||||||
|
<location_x>11</location_x>
|
||||||
|
<location_y>241</location_y>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
org.contikios.cooja.plugins.Visualizer
|
||||||
|
<plugin_config>
|
||||||
|
<moterelations>true</moterelations>
|
||||||
|
<skin>org.contikios.cooja.plugins.skins.IDVisualizerSkin</skin>
|
||||||
|
<skin>org.contikios.cooja.plugins.skins.GridVisualizerSkin</skin>
|
||||||
|
<skin>org.contikios.cooja.plugins.skins.TrafficVisualizerSkin</skin>
|
||||||
|
<skin>org.contikios.cooja.plugins.skins.UDGMVisualizerSkin</skin>
|
||||||
|
<viewport>1.7405603810040515 0.0 0.0 1.7405603810040515 47.95980153208088 -42.576134155447555</viewport>
|
||||||
|
</plugin_config>
|
||||||
|
<width>236</width>
|
||||||
|
<z>2</z>
|
||||||
|
<height>230</height>
|
||||||
|
<location_x>1</location_x>
|
||||||
|
<location_y>1</location_y>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
org.contikios.cooja.plugins.LogListener
|
||||||
|
<plugin_config>
|
||||||
|
<filter>ID:1</filter>
|
||||||
|
<formatted_time />
|
||||||
|
<coloring />
|
||||||
|
</plugin_config>
|
||||||
|
<width>1031</width>
|
||||||
|
<z>0</z>
|
||||||
|
<height>394</height>
|
||||||
|
<location_x>273</location_x>
|
||||||
|
<location_y>6</location_y>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
org.contikios.cooja.plugins.TimeLine
|
||||||
|
<plugin_config>
|
||||||
|
<mote>0</mote>
|
||||||
|
<mote>1</mote>
|
||||||
|
<mote>2</mote>
|
||||||
|
<mote>3</mote>
|
||||||
|
<mote>4</mote>
|
||||||
|
<mote>5</mote>
|
||||||
|
<mote>6</mote>
|
||||||
|
<mote>7</mote>
|
||||||
|
<mote>8</mote>
|
||||||
|
<showRadioRXTX />
|
||||||
|
<showRadioHW />
|
||||||
|
<showLEDs />
|
||||||
|
<zoomfactor>16529.88882215865</zoomfactor>
|
||||||
|
</plugin_config>
|
||||||
|
<width>1304</width>
|
||||||
|
<z>1</z>
|
||||||
|
<height>311</height>
|
||||||
|
<location_x>0</location_x>
|
||||||
|
<location_y>412</location_y>
|
||||||
|
</plugin>
|
||||||
|
</simconf>
|
||||||
|
|
Loading…
Reference in a new issue