diff --git a/.travis.yml b/.travis.yml index 16fb5abd3..d4060c893 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,9 @@ # See https://github.com/travis-ci/travis-ci/issues/6928#issuecomment-264227708 group: deprecated +before_install: + - sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0 + notifications: email: false language: c #NOTE: this will set CC=gcc which might cause trouble @@ -106,3 +109,5 @@ env: - BUILD_TYPE='base' BUILD_CATEGORY='sim' - BUILD_TYPE='ieee802154' BUILD_CATEGORY='sim' - BUILD_TYPE='6tisch' BUILD_CATEGORY='sim' + - BUILD_TYPE='rpl-border-router' BUILD_CATEGORY='sim' + - BUILD_TYPE='native-networking' BUILD_CATEGORY='sim' diff --git a/arch/cpu/arm/common/sys/mtarch.c b/arch/cpu/arm/common/sys/mtarch.c deleted file mode 100644 index 6bf011411..000000000 --- a/arch/cpu/arm/common/sys/mtarch.c +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright (c) 2016, Benoît Thébaudeau - * 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. - */ -/** - * \addtogroup arm-cm-mtarch - * @{ - * - * \file - * Implmentation of the ARM Cortex-M support for Contiki multi-threading. - */ -#include CMSIS_DEV_HDR -#include "sys/mt.h" - -#include - -#define EXC_RETURN_PROCESS_THREAD_BASIC_FRAME 0xfffffffd - -/* Check whether EXC_RETURN[3:0] in LR indicates a preempted process thread. */ -#if __ARM_ARCH == 7 -#define PREEMPTED_PROCESS_THREAD() \ - "and r0, lr, #0xf\n\t" \ - "cmp r0, #0xd\n\t" -#elif __ARM_ARCH == 6 -#define PREEMPTED_PROCESS_THREAD() \ - "mov r0, lr\n\t" \ - "movs r1, #0xf\n\t" \ - "and r0, r1\n\t" \ - "cmp r0, #0xd\n\t" -#else -#error Unsupported ARM architecture -#endif -/*----------------------------------------------------------------------------*/ -/** - * \brief SVCall system handler - * - * This exception handler executes the action requested by the corresponding - * \c svc instruction, which is a task switch from the main Contiki thread to an - * mt thread or the other way around. - */ -__attribute__ ((__naked__)) -void -svcall_handler(void) -{ - /* - * Decide whether to switch to the main thread or to a process thread, - * depending on the type of the thread preempted by SVCall. - */ - __asm__ (PREEMPTED_PROCESS_THREAD() -#if __ARM_ARCH == 7 - "it eq\n\t" -#endif - "beq switch_to_main_thread\n\t" - - /* - * - Retrieve from the main stack the PSP passed to SVCall through R0. Note - * that it cannot be retrieved directly from R0 on exception entry because - * this register may have been overwritten by other exceptions on SVCall - * entry. - * - Save the main thread context to the main stack. - * - Restore the process thread context from the process stack. - * - Return to Thread mode, resuming the process thread. - */ -#if __ARM_ARCH == 7 - "ldr r0, [sp]\n\t" - "push {r4-r11, lr}\n\t" - "add r1, r0, #9 * 4\n\t" - "msr psp, r1\n\t" - "ldmia r0, {r4-r11, pc}"); -#elif __ARM_ARCH == 6 - "mov r0, r8\n\t" - "mov r1, r9\n\t" - "mov r2, r10\n\t" - "mov r3, r11\n\t" - "push {r0-r7, lr}\n\t" - "ldr r0, [sp, #9 * 4]\n\t" - "ldmia r0!, {r4-r7}\n\t" - "mov r8, r4\n\t" - "mov r9, r5\n\t" - "mov r10, r6\n\t" - "mov r11, r7\n\t" - "ldmia r0!, {r3-r7}\n\t" - "msr psp, r0\n\t" - "bx r3"); -#endif -} -/*----------------------------------------------------------------------------*/ -/** - * \brief PendSV system handler - * - * This exception handler executes following a call to mtarch_pstart() from - * another exception handler. It performs a task switch to the main Contiki - * thread if it is not already running. - */ -__attribute__ ((__naked__)) -void -pendsv_handler(void) -{ - /* - * Return without doing anything if PendSV has not preempted a process thread. - * This can occur either because PendSV has preempted the main thread, in - * which case there is nothing to do, or because mtarch_pstart() has been - * called from an exception handler without having called mt_init() first, in - * which case PendSV may have preempted an exception handler and nothing must - * be done because mt is not active. - */ - __asm__ ( PREEMPTED_PROCESS_THREAD() -#if __ARM_ARCH == 7 - "it ne\n\t" - "bxne lr\n" -#elif __ARM_ARCH == 6 - "beq switch_to_main_thread\n\t" - "bx lr\n" -#endif - - /* - * - Save the process thread context to the process stack. - * - Place into the main stack the updated PSP that SVCall must return through - * R0. - * - Restore the main thread context from the main stack. - * - Return to Thread mode, resuming the main thread. - */ - "switch_to_main_thread:\n\t" - "mrs r0, psp\n\t" -#if __ARM_ARCH == 7 - "stmdb r0!, {r4-r11, lr}\n\t" - "str r0, [sp, #9 * 4]\n\t" - "pop {r4-r11, pc}"); -#elif __ARM_ARCH == 6 - "mov r3, lr\n\t" - "sub r0, #5 * 4\n\t" - "stmia r0!, {r3-r7}\n\t" - "mov r4, r8\n\t" - "mov r5, r9\n\t" - "sub r0, #9 * 4\n\t" - "mov r6, r10\n\t" - "mov r7, r11\n\t" - "stmia r0!, {r4-r7}\n\t" - "pop {r4-r7}\n\t" - "sub r0, #4 * 4\n\t" - "mov r8, r4\n\t" - "mov r9, r5\n\t" - "str r0, [sp, #5 * 4]\n\t" - "mov r10, r6\n\t" - "mov r11, r7\n\t" - "pop {r4-r7, pc}"); -#endif -} -/*----------------------------------------------------------------------------*/ -void -mtarch_init(void) -{ - SCB->CCR = (SCB->CCR -#ifdef SCB_CCR_NONBASETHRDENA_Msk - /* - * Make sure that any attempt to enter Thread mode with exceptions - * active faults. - * - * Only SVCall and PendSV are allowed to forcibly enter Thread - * mode, and they are configured with the same, lowest exception - * priority, so no other exceptions may be active. - */ - & ~SCB_CCR_NONBASETHRDENA_Msk -#endif - /* - * Force 8-byte stack pointer alignment on exception entry in order - * to be able to use AAPCS-conforming functions as exception - * handlers. - */ - ) | SCB_CCR_STKALIGN_Msk; - - /* - * Configure SVCall and PendSV with the same, lowest exception priority. - * - * This makes sure that they cannot preempt each other, and that the processor - * executes them after having handled all other exceptions. If both are - * pending at the same time, then SVCall takes precedence because of its lower - * exception number. In addition, the associated exception handlers do not - * have to check whether they are returning to Thread mode, because they - * cannot preempt any other exception. - */ - NVIC_SetPriority(SVCall_IRQn, (1 << __NVIC_PRIO_BITS) - 1); - NVIC_SetPriority(PendSV_IRQn, (1 << __NVIC_PRIO_BITS) - 1); - - /* - * Force the preceding configurations to take effect before further - * operations. - */ - __DSB(); - __ISB(); -} -/*----------------------------------------------------------------------------*/ -void -mtarch_start(struct mtarch_thread *thread, - void (*function)(void *data), void *data) -{ - struct mtarch_thread_context *context = &thread->start_stack.context; - - /* - * Initialize the thread context with the appropriate values to call - * function() with data and to make function() return to mt_exit() without - * having to call it explicitly. - */ - context->exc_return = EXC_RETURN_PROCESS_THREAD_BASIC_FRAME; - context->r0 = (uint32_t)data; - context->lr = (uint32_t)mt_exit; - context->pc = (uint32_t)function; - context->xpsr = xPSR_T_Msk; - thread->psp = (uint32_t)context; -} -/*----------------------------------------------------------------------------*/ -void -mtarch_exec(struct mtarch_thread *thread) -{ - /* Pass the PSP to SVCall, and get the updated PSP as its return value. */ - register uint32_t psp __asm__ ("r0") = thread->psp; - __asm__ volatile ("svc #0" - : "+r" (psp) - :: "memory"); - thread->psp = psp; -} -/*----------------------------------------------------------------------------*/ -__attribute__ ((__naked__)) -void -mtarch_yield(void) -{ - /* Invoke SVCall. */ - __asm__ ("svc #0\n\t" - "bx lr"); -} -/*----------------------------------------------------------------------------*/ -void -mtarch_stop(struct mtarch_thread *thread) -{ -} -/*----------------------------------------------------------------------------*/ -void -mtarch_pstart(void) -{ - /* Trigger PendSV. */ - SCB->ICSR = SCB_ICSR_PENDSVSET_Msk; -} -/*----------------------------------------------------------------------------*/ -void -mtarch_pstop(void) -{ -} -/*----------------------------------------------------------------------------*/ -void -mtarch_remove(void) -{ -} -/*----------------------------------------------------------------------------*/ - -/** @} */ diff --git a/arch/cpu/arm/common/sys/mtarch.h b/arch/cpu/arm/common/sys/mtarch.h deleted file mode 100644 index d483e6e3f..000000000 --- a/arch/cpu/arm/common/sys/mtarch.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2016, Benoît Thébaudeau - * 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. - */ -/** - * \addtogroup arm - * @{ - * - * \defgroup arm-cm-mtarch ARM Cortex-M support for Contiki multi-threading - * - * All the Cortex-M devices supported by CMSIS-CORE are supported. - * - * An exception handler can decide to make the main Contiki thread preempt any - * running mt thread by calling mtarch_pstart() (e.g. to perform urgent - * operations that have been triggered by some event or that had been - * scheduled). If the running thread is already the main Contiki thread, then - * nothing happens. The corresponding task switch takes place when leaving - * Handler mode. The main Contiki thread then resumes after the call to - * mt_exec() that yielded to the preempted mt thread. - * @{ - * - * \file - * Header file for the ARM Cortex-M support for Contiki multi-threading. - */ -#ifndef MTARCH_H_ -#define MTARCH_H_ - -#include "contiki.h" -#include "sys/cc.h" - -#include - -#ifndef MTARCH_CONF_STACKSIZE -/** Thread stack size configuration, expressed as a number of 32-bit words. */ -#define MTARCH_CONF_STACKSIZE 256 -#endif -/** Actual stack size, with minimum size and alignment requirements enforced. */ -#define MTARCH_STACKSIZE ((MAX(MTARCH_CONF_STACKSIZE, \ - sizeof(struct mtarch_thread_context) / \ - sizeof(uint32_t)) + 1) & ~1) - -/** - * Structure of a saved thread context. - * - * xpsr..r0 are managed by the processor (except in mtarch_start()), - * while the other register values are handled by the software. - */ -struct mtarch_thread_context { -#if __ARM_ARCH == 7 - uint32_t r4; - uint32_t r5; - uint32_t r6; - uint32_t r7; -#endif - uint32_t r8; - uint32_t r9; - uint32_t r10; - uint32_t r11; - uint32_t exc_return; -#if __ARM_ARCH == 6 - uint32_t r4; - uint32_t r5; - uint32_t r6; - uint32_t r7; -#endif - uint32_t r0; - uint32_t r1; - uint32_t r2; - uint32_t r3; - uint32_t r12; - uint32_t lr; - uint32_t pc; - uint32_t xpsr; -}; - -struct mtarch_thread { - uint32_t psp; - union { - struct { - uint32_t free[MTARCH_STACKSIZE - - sizeof(struct mtarch_thread_context) / sizeof(uint32_t)]; - struct mtarch_thread_context context; - } start_stack; - uint32_t stack[MTARCH_STACKSIZE]; - } CC_ALIGN(8); -}; - -#endif /* MTARCH_H_ */ - -/** - * @} - * @} - */ diff --git a/arch/cpu/cc2538/startup-gcc.c b/arch/cpu/cc2538/startup-gcc.c index 547764ec3..bde8d1488 100644 --- a/arch/cpu/cc2538/startup-gcc.c +++ b/arch/cpu/cc2538/startup-gcc.c @@ -52,8 +52,6 @@ void nmi_handler(void); void default_handler(void); /* System Handler and ISR prototypes implemented elsewhere */ -void svcall_handler(void); /* See mtarch.c */ -void pendsv_handler(void); /* See mtarch.c */ void clock_isr(void); /* SysTick Handler */ void gpio_port_a_isr(void); void gpio_port_b_isr(void); @@ -121,10 +119,10 @@ void(*const vectors[])(void) = 0, /* 8 Reserved */ 0, /* 9 Reserved */ 0, /* 10 Reserved */ - svcall_handler, /* 11 SVCall handler */ + default_handler, /* 11 SVCall handler */ default_handler, /* 12 Debug monitor handler */ 0, /* 13 Reserved */ - pendsv_handler, /* 14 The PendSV handler */ + default_handler, /* 14 The PendSV handler */ clock_isr, /* 15 The SysTick handler */ gpio_port_a_isr, /* 16 GPIO Port A */ gpio_port_b_isr, /* 17 GPIO Port B */ diff --git a/arch/cpu/cc26xx-cc13xx/mtarch.h b/arch/cpu/cc26xx-cc13xx/mtarch.h deleted file mode 100644 index 4f696669d..000000000 --- a/arch/cpu/cc26xx-cc13xx/mtarch.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2010, Loughborough University - Computer Science - * 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. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 - * Stub header file for multi-threading. It doesn't do anything, it - * just exists so that mt.c can compile cleanly. - * - * This is based on the original mtarch.h for z80 by Takahide Matsutsuka - * - * \author - * George Oikonomou - - */ -#ifndef __MTARCH_H__ -#define __MTARCH_H__ - -struct mtarch_thread { - unsigned char *sp; -}; - -#endif /* __MTARCH_H__ */ diff --git a/arch/cpu/msp430/Makefile.msp430 b/arch/cpu/msp430/Makefile.msp430 index 6f9e1e29c..97ea7f3f2 100644 --- a/arch/cpu/msp430/Makefile.msp430 +++ b/arch/cpu/msp430/Makefile.msp430 @@ -40,13 +40,6 @@ MSP430 = msp430.c flash.c clock.c leds.c leds-arch.c \ watchdog.c lpm.c rtimer-arch.c UIPDRIVERS = slip.c crc16.c -ifndef CPU_HAS_MSP430X -# include mtarch.c only in the non-large memory model case, because -# the current implementation assumes 16-bit addresses (function pointers -# stored as "unsigned short"). -MSP430 += mtarch.c -endif - CONTIKI_TARGET_SOURCEFILES += $(MSP430) \ $(SYSAPPS) \ $(UIPDRIVERS) diff --git a/arch/cpu/msp430/mtarch.c b/arch/cpu/msp430/mtarch.c deleted file mode 100644 index 0ecd5d9c0..000000000 --- a/arch/cpu/msp430/mtarch.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (c) 2005, Swedish Institute of Computer Science - * 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. - * - * This file is part of the Contiki operating system. - * - */ - -#include -#include "sys/mt.h" - -#ifdef __IAR_SYSTEMS_ICC__ -#define __asm__ asm -#endif - -static unsigned short *sptmp; -static struct mtarch_thread *running; - -/*--------------------------------------------------------------------------*/ -void -mtarch_init(void) -{ - -} -/*--------------------------------------------------------------------------*/ -static void -mtarch_wrapper(void) -{ - /* Call thread function with argument */ - ((void (*)(void *))running->function)((void*)running->data); -} -/*--------------------------------------------------------------------------*/ -void -mtarch_start(struct mtarch_thread *t, - void (*function)(void *), void *data) -{ - int i; - - for(i = 0; i < MTARCH_STACKSIZE; ++i) { - t->stack[i] = i; - } - - t->sp = &t->stack[MTARCH_STACKSIZE - 1]; - - *t->sp = (unsigned short)mt_exit; - --t->sp; - - *t->sp = (unsigned short)mtarch_wrapper; - --t->sp; - - /* Space for registers. */ - t->sp -= 11; - - /* Store function and argument (used in mtarch_wrapper) */ - t->data = data; - t->function = function; -} -/*--------------------------------------------------------------------------*/ - -static void -sw(void) -{ - - sptmp = running->sp; - - __asm__("push r4"); - __asm__("push r5"); - __asm__("push r6"); - __asm__("push r7"); - __asm__("push r8"); - __asm__("push r9"); - __asm__("push r10"); - __asm__("push r11"); - __asm__("push r12"); - __asm__("push r13"); - __asm__("push r14"); - __asm__("push r15"); - -#ifdef __IAR_SYSTEMS_ICC__ -/* use IAR intrinsic functions */ - running->sp = (unsigned short *) __get_SP_register(); - __set_SP_register((unsigned short) sptmp); -#else - __asm__("mov.w r1,%0" : "=r" (running->sp)); - __asm__("mov.w %0,r1" : : "m" (sptmp)); -#endif - - __asm__("pop r15"); - __asm__("pop r14"); - __asm__("pop r13"); - __asm__("pop r12"); - __asm__("pop r11"); - __asm__("pop r10"); - __asm__("pop r9"); - __asm__("pop r8"); - __asm__("pop r7"); - __asm__("pop r6"); - __asm__("pop r5"); - __asm__("pop r4"); -} -/*--------------------------------------------------------------------------*/ -void -mtarch_exec(struct mtarch_thread *t) -{ - running = t; - sw(); - running = NULL; -} -/*--------------------------------------------------------------------------*/ -void -mtarch_remove(void) -{ - -} -/*--------------------------------------------------------------------------*/ -void -mtarch_yield(void) -{ - sw(); -} -/*--------------------------------------------------------------------------*/ -void -mtarch_pstop(void) -{ - -} -/*--------------------------------------------------------------------------*/ -void -mtarch_pstart(void) -{ - -} -/*--------------------------------------------------------------------------*/ -void -mtarch_stop(struct mtarch_thread *thread) -{ - -} -/*--------------------------------------------------------------------------*/ -int -mtarch_stack_usage(struct mt_thread *t) -{ - int i; - - for(i = 0; i < MTARCH_STACKSIZE; ++i) { - if(t->thread.stack[i] != (unsigned short)i) { - return MTARCH_STACKSIZE - i; - } - } - - return MTARCH_STACKSIZE; -} -/*--------------------------------------------------------------------------*/ diff --git a/arch/cpu/msp430/mtarch.h b/arch/cpu/msp430/mtarch.h deleted file mode 100644 index f321bd176..000000000 --- a/arch/cpu/msp430/mtarch.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2005, Swedish Institute of Computer Science - * 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. - * - * This file is part of the Contiki operating system. - */ -#ifndef MTARCH_H_ -#define MTARCH_H_ - -#include "contiki.h" - -#ifndef MTARCH_STACKSIZE -#define MTARCH_STACKSIZE 128 -#endif /* MTARCH_STACKSIZE */ - -struct mtarch_thread { - unsigned short stack[MTARCH_STACKSIZE]; - unsigned short *sp; - void *data; - void (* function)(void *); -}; - -struct mt_thread; - -int mtarch_stack_usage(struct mt_thread *t); - -#endif /* MTARCH_H_ */ diff --git a/arch/cpu/native/Makefile.native b/arch/cpu/native/Makefile.native index ba473a3d3..90a784e34 100644 --- a/arch/cpu/native/Makefile.native +++ b/arch/cpu/native/Makefile.native @@ -1,6 +1,6 @@ CONTIKI_CPU_DIRS = . net dev -CONTIKI_SOURCEFILES += mtarch.c rtimer-arch.c watchdog.c eeprom.c +CONTIKI_SOURCEFILES += rtimer-arch.c watchdog.c eeprom.c ### Compiler definitions CC ?= gcc diff --git a/arch/cpu/native/mtarch.c b/arch/cpu/native/mtarch.c deleted file mode 100644 index 397891efb..000000000 --- a/arch/cpu/native/mtarch.c +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (c) 2007, Swedish Institute of Computer Science. - * 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. - * - * This file is part of the Contiki operating system. - * - * Author: Oliver Schmidt - * - * - */ - -#include "sys/mt.h" - -#ifndef MTARCH_STACKSIZE -#define MTARCH_STACKSIZE 4096 -#endif /* MTARCH_STACKSIZE */ - -#if defined(_WIN32) || defined(__CYGWIN__) - -#define WIN32_LEAN_AND_MEAN -#include - -static void *main_fiber; - -#elif defined(__linux) - -#include -#include -#include - -struct mtarch_t { - char stack[MTARCH_STACKSIZE]; - ucontext_t context; -}; - -static ucontext_t main_context; -static ucontext_t *running_context; -#elif defined(__APPLE) -/* No support for OS-X at the moment as swapcontext, etc are deprecated */ - -#endif /* _WIN32 || __CYGWIN__ || __linux */ - -/*--------------------------------------------------------------------------*/ -void -mtarch_init(void) -{ -#if defined(_WIN32) || defined(__CYGWIN__) - - main_fiber = ConvertThreadToFiber(NULL); - -#endif /* _WIN32 || __CYGWIN__ */ -} -/*--------------------------------------------------------------------------*/ -void -mtarch_remove(void) -{ -#if defined(_WIN32) || defined(__CYGWIN__) - - ConvertFiberToThread(); - -#endif /* _WIN32 || __CYGWIN__ */ -} -/*--------------------------------------------------------------------------*/ -void -mtarch_start(struct mtarch_thread *thread, - void (* function)(void *data), - void *data) -{ -#if defined(_WIN32) || defined(__CYGWIN__) - - thread->mt_thread = CreateFiber(0, (LPFIBER_START_ROUTINE)function, data); - -#elif defined(__linux) - - thread->mt_thread = malloc(sizeof(struct mtarch_t)); - - getcontext(&((struct mtarch_t *)thread->mt_thread)->context); - - ((struct mtarch_t *)thread->mt_thread)->context.uc_link = NULL; - ((struct mtarch_t *)thread->mt_thread)->context.uc_stack.ss_sp = - ((struct mtarch_t *)thread->mt_thread)->stack; - ((struct mtarch_t *)thread->mt_thread)->context.uc_stack.ss_size = - sizeof(((struct mtarch_t *)thread->mt_thread)->stack); - - /* Some notes: - - If a CPU needs stronger alignment for the stack than malloc() - guarantees (like i.e. IA64) then makecontext() is supposed to - add that alignment internally. - - According to POSIX the arguments to function() are of type int - and there are in fact 64-bit implementations which support only - 32 bits per argument meaning that a pointer argument has to be - splitted into two arguments. - - Most implementations interpret context.uc_stack.ss_sp on entry - as the lowest stack address even if the CPU stack actually grows - downwards. Although this means that ss_sp does NOT represent the - CPU stack pointer this behaviour makes perfectly sense as it is - the only way to stay independent from the CPU architecture. But - Solaris prior to release 10 interprets ss_sp as highest stack - address thus requiring special handling. */ - makecontext(&((struct mtarch_t *)thread->mt_thread)->context, - (void (*)(void))function, 1, data); - -#endif /* _WIN32 || __CYGWIN__ || __linux */ -} -/*--------------------------------------------------------------------------*/ -void -mtarch_yield(void) -{ -#if defined(_WIN32) || defined(__CYGWIN__) - - SwitchToFiber(main_fiber); - -#elif defined(__linux) - - swapcontext(running_context, &main_context); - -#endif /* _WIN32 || __CYGWIN__ || __linux */ -} -/*--------------------------------------------------------------------------*/ -void -mtarch_exec(struct mtarch_thread *thread) -{ -#if defined(_WIN32) || defined(__CYGWIN__) - - SwitchToFiber(thread->mt_thread); - -#elif defined(__linux) - running_context = &((struct mtarch_t *)thread->mt_thread)->context; - swapcontext(&main_context, running_context); - running_context = NULL; - -#endif /* _WIN32 || __CYGWIN__ || __linux */ -} -/*--------------------------------------------------------------------------*/ -void -mtarch_stop(struct mtarch_thread *thread) -{ -#if defined(_WIN32) || defined(__CYGWIN__) - - DeleteFiber(thread->mt_thread); - -#elif defined(linux) || defined(__linux) - free(thread->mt_thread); - -#endif /* _WIN32 || __CYGWIN__ || __linux */ -} -/*--------------------------------------------------------------------------*/ -void -mtarch_pstart(void) -{ -} -/*--------------------------------------------------------------------------*/ -void -mtarch_pstop(void) -{ -} -/*--------------------------------------------------------------------------*/ diff --git a/arch/cpu/native/mtarch.h b/arch/cpu/native/mtarch.h deleted file mode 100644 index d006c1360..000000000 --- a/arch/cpu/native/mtarch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2007, Swedish Institute of Computer Science. - * 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. - * - * This file is part of the Contiki operating system. - * - * Author: Oliver Schmidt - * - */ - -#ifndef MTARCH_H_ -#define MTARCH_H_ - -struct mtarch_thread { - void *mt_thread; -}; - -#endif /* MTARCH_H_ */ diff --git a/arch/cpu/nrf52832/mtarch.h b/arch/cpu/nrf52832/mtarch.h deleted file mode 100644 index 4f696669d..000000000 --- a/arch/cpu/nrf52832/mtarch.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2010, Loughborough University - Computer Science - * 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. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 - * Stub header file for multi-threading. It doesn't do anything, it - * just exists so that mt.c can compile cleanly. - * - * This is based on the original mtarch.h for z80 by Takahide Matsutsuka - * - * \author - * George Oikonomou - - */ -#ifndef __MTARCH_H__ -#define __MTARCH_H__ - -struct mtarch_thread { - unsigned char *sp; -}; - -#endif /* __MTARCH_H__ */ diff --git a/arch/platform/cooja/sys/cooja_mt.c b/arch/platform/cooja/sys/cooja_mt.c index 3ccc5c169..ca0d79303 100644 --- a/arch/platform/cooja/sys/cooja_mt.c +++ b/arch/platform/cooja/sys/cooja_mt.c @@ -46,18 +46,6 @@ static struct cooja_mt_thread *current; -/*--------------------------------------------------------------------------*/ -void -cooja_mt_init(void) -{ - cooja_mtarch_init(); -} -/*--------------------------------------------------------------------------*/ -void -cooja_mt_remove(void) -{ - cooja_mtarch_remove(); -} /*--------------------------------------------------------------------------*/ void cooja_mt_start(struct cooja_mt_thread *thread, void (* function)(void *), void *data) @@ -82,14 +70,6 @@ cooja_mt_exec(struct cooja_mt_thread *thread) } /*--------------------------------------------------------------------------*/ void -cooja_mt_exit(void) -{ - current->state = MT_STATE_EXITED; - current = NULL; - cooja_mtarch_yield(); -} -/*--------------------------------------------------------------------------*/ -void cooja_mt_yield(void) { current->state = MT_STATE_READY; diff --git a/arch/platform/cooja/sys/cooja_mt.h b/arch/platform/cooja/sys/cooja_mt.h index 4707b1fff..f9138c6dd 100644 --- a/arch/platform/cooja/sys/cooja_mt.h +++ b/arch/platform/cooja/sys/cooja_mt.h @@ -49,25 +49,6 @@ */ struct cooja_mtarch_thread; -/** - * Initialize the architecture specific support functions for the - * multi-thread library. - * - * This function is implemented by the architecture specific functions - * for the multi-thread library and is called by the mt_init() - * function as part of the initialization of the library. The - * mtarch_init() function can be used for, e.g., starting preemtion - * timers or other architecture specific mechanisms required for the - * operation of the library. - */ -void cooja_mtarch_init(void); - -/** - * Uninstall library and clean up. - * - */ -void cooja_mtarch_remove(void); - /** * Setup the stack frame for a thread that is being started. * @@ -128,19 +109,6 @@ struct cooja_mt_thread { */ #define MT_OK 1 -/** - * Initializes the multithreading library. - * - */ -void cooja_mt_init(void); - -/** - * Uninstalls library and cleans up. - * - */ -void cooja_mt_remove(void); - - /** * Starts a multithreading thread. * @@ -201,51 +169,6 @@ void cooja_mt_exec(struct cooja_mt_thread *thread); */ void cooja_mt_yield(void); -/** - * Post an event to another process. - * - * This function is called by a running thread and will emit a signal - * to another Contiki process. This will cause the currently executing - * thread to yield. - * - * \param p The process receiving the signal, or PROCESS_BROADCAST - * for a broadcast event. - * - * \param ev The event to be posted. - * - * \param data A pointer to a message that is to be delivered together - * with the signal. - * - */ -/*void mt_post(struct process *p, process_event_t ev, process_data_t data);*/ - -/** - * Block and wait for an event to occur. - * - * This function can be called by a running thread in order to block - * and wait for an event. The function returns when an event has - * occured. The event number and the associated data are placed in the - * variables pointed to by the function arguments. - * - * \param ev A pointer to a process_event_t variable. The variable - * will be filled with the number event that woke the thread. - * - * \param data A pointer to a process_data_t variable. The variable - * will be filled with the data associated with the event that woke - * the thread. - * - */ -/*void mt_wait(process_event_t *ev, process_data_t *data);*/ - -/** - * Exit a thread. - * - * This function is called from within an executing thread in order to - * exit the thread. The function never returns. - * - */ -void cooja_mt_exit(void); - /** @} */ /** @} */ #endif /* MT_H_ */ diff --git a/arch/platform/cooja/sys/cooja_mtarch.c b/arch/platform/cooja/sys/cooja_mtarch.c index 8d73ad088..4a1f78360 100644 --- a/arch/platform/cooja/sys/cooja_mtarch.c +++ b/arch/platform/cooja/sys/cooja_mtarch.c @@ -72,11 +72,7 @@ struct frame { unsigned long retaddr2; unsigned long data; }; -/*--------------------------------------------------------------------------*/ -void -cooja_mtarch_init(void) -{ -} + /*--------------------------------------------------------------------------*/ void cooja_mtarch_start(struct cooja_mtarch_thread *t, @@ -187,35 +183,8 @@ cooja_mtarch_exec(struct cooja_mtarch_thread *t) } /*--------------------------------------------------------------------------*/ void -cooja_mtarch_remove(void) -{ -} -/*--------------------------------------------------------------------------*/ -void cooja_mtarch_yield(void) { cooja_sw(); } /*--------------------------------------------------------------------------*/ -void -cooja_mtarch_pstop(void) -{ -} -/*--------------------------------------------------------------------------*/ -void -cooja_mtarch_pstart(void) -{ -} -/*--------------------------------------------------------------------------*/ -int -cooja_mtarch_stack_usage(struct cooja_mt_thread *t) -{ - int i; - for(i = 0; i < COOJA_MTARCH_STACKSIZE; ++i) { - if(t->thread.stack[i] != i) { - return COOJA_MTARCH_STACKSIZE - i; - } - } - return -1; -} -/*--------------------------------------------------------------------------*/ diff --git a/arch/platform/cooja/sys/cooja_mtarch.h b/arch/platform/cooja/sys/cooja_mtarch.h index 084962e81..2a16c0ae4 100644 --- a/arch/platform/cooja/sys/cooja_mtarch.h +++ b/arch/platform/cooja/sys/cooja_mtarch.h @@ -46,7 +46,4 @@ struct cooja_mtarch_thread { struct cooja_mt_thread; -int cooja_mtarch_stack_usage(struct cooja_mt_thread *t); - #endif /* COOJA_MTARCH_H_ */ - diff --git a/arch/platform/jn516x/Makefile.jn516x b/arch/platform/jn516x/Makefile.jn516x index bf1560e31..8664f9f0a 100644 --- a/arch/platform/jn516x/Makefile.jn516x +++ b/arch/platform/jn516x/Makefile.jn516x @@ -82,7 +82,7 @@ OBJDUMP:=$(CROSS_COMPILE)-objdump ARCH = jn516x-ccm-star.c exceptions.c rtimer-arch.c rtimer-arch-slow.c \ slip_uart0.c clock.c micromac-radio.c \ - mtarch.c node-id.c watchdog.c slip.c sprintf.c + node-id.c watchdog.c slip.c sprintf.c # Default uart0 for printf and slip TARGET_WITH_UART0 ?= 1 TARGET_WITH_UART1 ?= 0 diff --git a/arch/platform/jn516x/dev/mtarch.c b/arch/platform/jn516x/dev/mtarch.c deleted file mode 100644 index c3c81457e..000000000 --- a/arch/platform/jn516x/dev/mtarch.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2008 - * Telecooperation Office (TecO), Universitaet Karlsruhe (TH), Germany. - * 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 Universitaet Karlsruhe (TH) 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 - * OWNER 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(s): Philipp Scholl - */ - -/* Copied from Philipp Scholl's (BSD) Contiki port to Jennic */ - -#include "mtarch.h" - -void -mtarch_init(void) -{ -} -void -mtarch_remove(void) -{ -} -void -mtarch_start(struct mtarch_thread *thread, - void (*function)(void *data), - void *data) -{ -} -void -mtarch_yield(void) -{ -} -void -mtarch_exec(struct mtarch_thread *thread) -{ -} -void -mtarch_stop(struct mtarch_thread *thread) -{ -} -void -mtarch_pstart(void) -{ -} -void -mtarch_pstop(void) -{ -} diff --git a/arch/platform/jn516x/dev/mtarch.h b/arch/platform/jn516x/dev/mtarch.h deleted file mode 100644 index 3c6292f1d..000000000 --- a/arch/platform/jn516x/dev/mtarch.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2008 - * Telecooperation Office (TecO), Universitaet Karlsruhe (TH), Germany. - * 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 Universitaet Karlsruhe (TH) 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 - * OWNER 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(s): Philipp Scholl - */ - -/* Copied from Philipp Scholl's (BSD) Contiki port to Jennic */ - -#ifndef __MTARCH_H__ -#define __MTARCH_H__ - -struct mtarch_thread { - void *mt_thread; -}; - -#endif /* __MTARCH_H__ */ diff --git a/examples/6tisch/etsi-plugtest-2017/project-conf.h b/examples/6tisch/etsi-plugtest-2017/project-conf.h index 7cb8158f0..971f9020d 100644 --- a/examples/6tisch/etsi-plugtest-2017/project-conf.h +++ b/examples/6tisch/etsi-plugtest-2017/project-conf.h @@ -101,12 +101,6 @@ #define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_6LORH -/*******************************************************/ -/********* Enable RPL non-storing mode *****************/ -/*******************************************************/ - -#define RPL_CONF_MOP RPL_MOP_NON_STORING /* Mode of operation*/ - /*******************************************************/ /************* Other system configuration **************/ /*******************************************************/ diff --git a/examples/6tisch/simple-node/project-conf.h b/examples/6tisch/simple-node/project-conf.h index a46792fea..f77e63706 100644 --- a/examples/6tisch/simple-node/project-conf.h +++ b/examples/6tisch/simple-node/project-conf.h @@ -40,12 +40,6 @@ #define WITH_SECURITY 0 #endif /* WITH_SECURITY */ -/*******************************************************/ -/********* Enable RPL non-storing mode *****************/ -/*******************************************************/ - -#define RPL_CONF_MOP RPL_MOP_NON_STORING /* Mode of operation*/ - /* USB serial takes space, free more space elsewhere */ #define SICSLOWPAN_CONF_FRAG 0 #define UIP_CONF_BUFFER_SIZE 160 diff --git a/examples/6tisch/sixtop/project-conf.h b/examples/6tisch/sixtop/project-conf.h index ff8b96ad7..45e0a2fd1 100755 --- a/examples/6tisch/sixtop/project-conf.h +++ b/examples/6tisch/sixtop/project-conf.h @@ -36,12 +36,6 @@ #define WITH_SECURITY 0 #endif /* WITH_SECURITY */ -/*******************************************************/ -/********* Enable RPL non-storing mode *****************/ -/*******************************************************/ -#define UIP_CONF_MAX_ROUTES 0 /* No need for routes */ -#define RPL_CONF_MOP RPL_MOP_NON_STORING /* Mode of operation*/ - /*******************************************************/ /********************* Enable TSCH *********************/ /*******************************************************/ diff --git a/os/net/ipv6/uip6.c b/os/net/ipv6/uip6.c index d3df05b7f..7a29c90bb 100644 --- a/os/net/ipv6/uip6.c +++ b/os/net/ipv6/uip6.c @@ -1230,7 +1230,7 @@ uip_process(uint8_t flag) } UIP_IP_BUF->ttl = UIP_IP_BUF->ttl - 1; - LOG_INFO("Forwarding packet to "); + LOG_INFO("Forwarding packet towards "); LOG_INFO_6ADDR(&UIP_IP_BUF->destipaddr); LOG_INFO_("\n"); UIP_STAT(++uip_stat.ip.forwarded); @@ -1364,6 +1364,31 @@ uip_process(uint8_t flag) if(UIP_ROUTING_BUF->seg_left > 0) { #if UIP_CONF_IPV6_RPL && RPL_WITH_NON_STORING if(rpl_ext_header_srh_update()) { + + /* With routing header, the detination address is us and will + * be swapped later to the next hop. Because of this, the MTU + * and TTL were not checked and updated yet. Do this now. */ + + /* Check MTU */ + if(uip_len > UIP_LINK_MTU) { + uip_icmp6_error_output(ICMP6_PACKET_TOO_BIG, 0, UIP_LINK_MTU); + UIP_STAT(++uip_stat.ip.drop); + goto send; + } + /* Check Hop Limit */ + if(UIP_IP_BUF->ttl <= 1) { + uip_icmp6_error_output(ICMP6_TIME_EXCEEDED, + ICMP6_TIME_EXCEED_TRANSIT, 0); + UIP_STAT(++uip_stat.ip.drop); + goto send; + } + UIP_IP_BUF->ttl = UIP_IP_BUF->ttl - 1; + + LOG_INFO("Forwarding packet to next hop "); + LOG_INFO_6ADDR(&UIP_IP_BUF->destipaddr); + LOG_INFO_("\n"); + UIP_STAT(++uip_stat.ip.forwarded); + goto send; /* Proceed to forwarding */ } #endif /* UIP_CONF_IPV6_RPL && RPL_WITH_NON_STORING */ diff --git a/os/net/rpl-classic/rpl-ns.c b/os/net/rpl-classic/rpl-ns.c index 523aab76c..dc2eb23e4 100644 --- a/os/net/rpl-classic/rpl-ns.c +++ b/os/net/rpl-classic/rpl-ns.c @@ -203,15 +203,11 @@ void rpl_ns_periodic(void) { rpl_ns_node_t *l; - /* First pass, decrement lifetime for all nodes with non-infinite lifetime */ - for(l = list_head(nodelist); l != NULL; l = list_item_next(l)) { - /* Don't touch infinite lifetime nodes */ - if(l->lifetime != 0xffffffff && l->lifetime > 0) { - l->lifetime--; - } - } - /* Second pass, for all expired nodes, deallocate them iff no child points to them */ - for(l = list_head(nodelist); l != NULL; l = list_item_next(l)) { + rpl_ns_node_t *next; + + /* First pass, for all expired nodes, deallocate them iff no child points to them */ + for(l = list_head(nodelist); l != NULL; l = next) { + next = list_item_next(l); if(l->lifetime == 0) { rpl_ns_node_t *l2; for(l2 = list_head(nodelist); l2 != NULL; l2 = list_item_next(l2)) { @@ -223,6 +219,9 @@ rpl_ns_periodic(void) list_remove(nodelist, l); memb_free(&nodememb, l); num_nodes--; + } else if(l->lifetime != 0xffffffff) { + /* Decrement lifetime for all nodes with non-infinite lifetime */ + l->lifetime--; } } } diff --git a/os/net/rpl-lite/rpl-ns.c b/os/net/rpl-lite/rpl-ns.c index 1bd72f368..0b31484b8 100644 --- a/os/net/rpl-lite/rpl-ns.c +++ b/os/net/rpl-lite/rpl-ns.c @@ -207,14 +207,8 @@ rpl_ns_periodic(unsigned seconds) { rpl_ns_node_t *l; rpl_ns_node_t *next; - /* First pass, decrement lifetime for all nodes with non-infinite lifetime */ - for(l = list_head(nodelist); l != NULL; l = list_item_next(l)) { - /* Don't touch infinite lifetime nodes */ - if(l->lifetime != RPL_ROUTE_INFINITE_LIFETIME) { - l->lifetime = l->lifetime > seconds ? l->lifetime - seconds : 0; - } - } - /* Second pass, for all expired nodes, deallocate them iff no child points to them */ + + /* First pass, for all expired nodes, deallocate them iff no child points to them */ for(l = list_head(nodelist); l != NULL; l = next) { next = list_item_next(l); if(l->lifetime == 0) { @@ -235,6 +229,8 @@ rpl_ns_periodic(unsigned seconds) list_remove(nodelist, l); memb_free(&nodememb, l); num_nodes--; + } else if(l->lifetime != RPL_ROUTE_INFINITE_LIFETIME) { + l->lifetime = l->lifetime > seconds ? l->lifetime - seconds : 0; } } } diff --git a/os/sys/mt.c b/os/sys/mt.c deleted file mode 100644 index d5bc10398..000000000 --- a/os/sys/mt.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * 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. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - */ - -/** - * \file - * Implementation of the archtecture agnostic parts of the preemptive - * multithreading library for Contiki. - * - * \author - * Adam Dunkels - * - */ - -#include "contiki.h" -#include "sys/mt.h" -#include "sys/cc.h" - -static struct mt_thread *current; - -/*--------------------------------------------------------------------------*/ -void -mt_init(void) -{ - mtarch_init(); -} -/*--------------------------------------------------------------------------*/ -void -mt_remove(void) -{ - mtarch_remove(); -} -/*--------------------------------------------------------------------------*/ -void -mt_start(struct mt_thread *thread, void (* function)(void *), void *data) -{ - /* Call the architecture dependant function to set up the processor - stack with the correct parameters. */ - mtarch_start(&thread->thread, function, data); - - thread->state = MT_STATE_STARTED; -} -/*--------------------------------------------------------------------------*/ -void -mt_exec(struct mt_thread *thread) -{ - if(thread->state == MT_STATE_STARTED) { - current = thread; - /* Switch context to the thread. The function call will not return - until the the thread has yielded, or is preempted. */ - mtarch_exec(&thread->thread); - } -} -/*--------------------------------------------------------------------------*/ -void -mt_yield(void) -{ - mtarch_pstop(); - /* This function is called from the running thread, and we call the - switch function in order to switch the thread to the main Contiki - program instead. For us, the switch function will not return - until the next time we are scheduled to run. */ - mtarch_yield(); -} -/*--------------------------------------------------------------------------*/ -void -mt_exit(void) -{ - mtarch_pstop(); - current->state = MT_STATE_EXITED; - mtarch_yield(); -} -/*--------------------------------------------------------------------------*/ -void -mt_stop(struct mt_thread *thread) -{ - mtarch_stop(&thread->thread); -} -/*--------------------------------------------------------------------------*/ diff --git a/os/sys/mt.h b/os/sys/mt.h deleted file mode 100644 index abe04d12e..000000000 --- a/os/sys/mt.h +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * 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. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - */ - -/** \addtogroup threads - * @{ - */ - -/** - * \defgroup mt Multi-threading library - * - * The event driven Contiki kernel does not provide multi-threading - * by itself - instead, preemptive multi-threading is implemented - * as a library that optionally can be linked with applications. This - * library consists of two parts: a platform independent part, which is - * the same for all platforms on which Contiki runs, and a platform - * specific part, which must be implemented specifically for the - * platform that the multi-threading library should run. - * @{ - * - * The Contiki multi-threading library requires some architecture - * specific support for setting up and switching stacks. This support - * requires four stack manipulation functions to be implemented: - * mtarch_start(), which sets up the stack frame for a new thread, - * mtarch_exec(), which switches in the stack of a thread, - * mtarch_yield(), which restores the kernel stack from a thread's - * stack and mtarch_stop(), which cleans up the stack of a thread. - * Additionally, two functions for controlling the preemption - * (if any) must be implemented: mtarch_pstart() and mtarch_pstop(). - * If no preemption is used, these functions can be implemented as - * empty functions. Finally, the function mtarch_init() is called by - * mt_init(), and can be used for initialization of timer interrupts, - * or any other mechanisms required for correct operation of the - * architecture specific support functions while mtarch_remove() is - * called by mt_remove() to clean up those resources. - * - */ - -/** - * \file - * Header file for the preemptive multitasking library for Contiki. - * \author - * Adam Dunkels - * - */ -#ifndef MT_H_ -#define MT_H_ - -#include "contiki.h" - -#define MT_STATE_STARTED 1 -#define MT_STATE_EXITED 2 - -/** - * An opaque structure that is used for holding the state of a thread. - * - * The structure should be defined in the "mtarch.h" file. This - * structure typically holds the entire stack for the thread. - */ -struct mtarch_thread; - -/** - * Initialize the architecture specific support functions for the - * multi-thread library. - * - * This function is implemented by the architecture specific functions - * for the multi-thread library and is called by the mt_init() - * function as part of the initialization of the library. The - * mtarch_init() function can be used for, e.g., starting preemption - * timers or other architecture specific mechanisms required for the - * operation of the library. - */ -void mtarch_init(void); - -/** - * Uninstall library and clean up. - * - */ -void mtarch_remove(void); - -/** - * Setup the stack frame for a thread that is being started. - * - * This function is called by the mt_start() function in order to set - * up the architecture specific stack of the thread to be started. - * - * \param thread A pointer to a struct mtarch_thread for the thread to - * be started. - * - * \param function A pointer to the function that the thread will - * start executing the first time it is scheduled to run. - * - * \param data A pointer to the argument that the function should be - * passed. - */ -void mtarch_start(struct mtarch_thread *thread, - void (* function)(void *data), - void *data); - -/** - * Start executing a thread. - * - * This function is called from mt_exec() and the purpose of the - * function is to start execution of the thread. The function should - * switch in the stack of the thread, and does not return until the - * thread has explicitly yielded (using mt_yield()) or until it is - * preempted. - * - * \param thread A pointer to a struct mtarch_thread for the thread to - * be executed. - * - */ -void mtarch_exec(struct mtarch_thread *thread); - -/** - * Yield the processor. - * - * This function is called by the mt_yield() function, which is called - * from the running thread in order to give up the processor. - * - */ -void mtarch_yield(void); - -/** - * Clean up the stack of a thread. - * - * This function is called by the mt_stop() function in order to clean - * up the architecture specific stack of the thread to be stopped. - * - * \note If the stack is wholly contained in struct mtarch_thread this - * function may very well be empty. - * - * \param thread A pointer to a struct mtarch_thread for the thread to - * be stopped. - * - */ -void mtarch_stop(struct mtarch_thread *thread); - -void mtarch_pstart(void); -void mtarch_pstop(void); - -/** @} */ - - -#include "mtarch.h" - -struct mt_thread { - int state; - struct mtarch_thread thread; -}; - -/** - * Initializes the multithreading library. - * - */ -void mt_init(void); - -/** - * Uninstalls library and cleans up. - * - */ -void mt_remove(void); - - -/** - * Starts a multithreading thread. - * - * \param thread Pointer to an mt_thread struct that must have been - * previously allocated by the caller. - * - * \param function A pointer to the entry function of the thread that is - * to be set up. - * - * \param data A pointer that will be passed to the entry function. - * - */ -void mt_start(struct mt_thread *thread, void (* function)(void *), void *data); - -/** - * Execute parts of a thread. - * - * This function is called by a Contiki process and runs a - * thread. The function does not return until the thread has yielded, - * or is preempted. - * - * \note The thread library must first be initialized with the mt_init() - * function. - * - * \param thread A pointer to a struct mt_thread block that must be - * allocated by the caller. - * - */ -void mt_exec(struct mt_thread *thread); - -/** - * Voluntarily give up the processor. - * - * This function is called by a running thread in order to give up - * control of the CPU. - * - */ -void mt_yield(void); - -/** - * Exit a thread. - * - * This function is called from within an executing thread in order to - * exit the thread. The function never returns. - * - */ -void mt_exit(void); - -/** - * Stop a thread. - * - * This function is called by a Contiki process in order to clean up a - * thread. The struct mt_thread block may then be discarded by the caller. - * - * \param thread A pointer to a struct mt_thread block that must be - * allocated by the caller. - * - */ -void mt_stop(struct mt_thread *thread); - -/** @} */ -#endif /* MT_H_ */ diff --git a/tests/14-rpl-lite/07-rpl-random-rearrangement.csc b/tests/14-rpl-lite/07-rpl-random-rearrangement.csc index cdb62c420..16ba26e20 100644 --- a/tests/14-rpl-lite/07-rpl-random-rearrangement.csc +++ b/tests/14-rpl-lite/07-rpl-random-rearrangement.csc @@ -544,7 +544,7 @@ make receiver-node.cooja TARGET=cooja } function getRandom(min, max) { - return Math.random() * (max - min) + min; + return r.nextFloat() * (max - min) + min; } // From: http://bost.ocks.org/mike/shuffle/ @@ -555,7 +555,7 @@ function shuffle(array) { while (m) { // Pick a remaining element… - i = Math.floor(Math.random() * m--); + i = Math.floor(r.nextFloat() * m--); // And swap it with the current element. t = array[m]; @@ -571,6 +571,7 @@ GENERATE_MSG(1200000, 'randomize-nodes'); GENERATE_MSG(2400000, 'randomize-nodes'); GENERATE_MSG(3600000, 'randomize-nodes'); +var r = new java.util.Random(sim.getRandomSeed()); var numForwarders = 20; var forwardIDStart = 4; packetsReceived = []; diff --git a/tests/14-rpl-lite/code/project-conf.h b/tests/14-rpl-lite/code/project-conf.h index 599ac1cbf..d6cd59471 100644 --- a/tests/14-rpl-lite/code/project-conf.h +++ b/tests/14-rpl-lite/code/project-conf.h @@ -27,5 +27,3 @@ * SUCH DAMAGE. */ #define TCPIP_CONF_ANNOTATE_TRANSMISSIONS 1 - -#define RPL_CONF_MOP RPL_MOP_NON_STORING diff --git a/tests/15-rpl-classic/07-rpl-random-rearrangement.csc b/tests/15-rpl-classic/07-rpl-random-rearrangement.csc index cdb62c420..16ba26e20 100644 --- a/tests/15-rpl-classic/07-rpl-random-rearrangement.csc +++ b/tests/15-rpl-classic/07-rpl-random-rearrangement.csc @@ -544,7 +544,7 @@ make receiver-node.cooja TARGET=cooja } function getRandom(min, max) { - return Math.random() * (max - min) + min; + return r.nextFloat() * (max - min) + min; } // From: http://bost.ocks.org/mike/shuffle/ @@ -555,7 +555,7 @@ function shuffle(array) { while (m) { // Pick a remaining element… - i = Math.floor(Math.random() * m--); + i = Math.floor(r.nextFloat() * m--); // And swap it with the current element. t = array[m]; @@ -571,6 +571,7 @@ GENERATE_MSG(1200000, 'randomize-nodes'); GENERATE_MSG(2400000, 'randomize-nodes'); GENERATE_MSG(3600000, 'randomize-nodes'); +var r = new java.util.Random(sim.getRandomSeed()); var numForwarders = 20; var forwardIDStart = 4; packetsReceived = []; diff --git a/tests/17-rpl-border-router/01-border-router-cooja.csc b/tests/17-rpl-border-router/01-border-router-cooja.csc new file mode 100644 index 000000000..a010d5ef2 --- /dev/null +++ b/tests/17-rpl-border-router/01-border-router-cooja.csc @@ -0,0 +1,252 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 1.0 + 123456 + 1000000 + + org.contikios.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + org.contikios.cooja.contikimote.ContikiMoteType + mtype295 + Cooja Mote Type #1 + [CONTIKI_DIR]/examples/rpl-border-router/border-router.c + make TARGET=cooja clean +make border-router.cooja TARGET=cooja + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.Battery + org.contikios.cooja.contikimote.interfaces.ContikiVib + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + org.contikios.cooja.contikimote.interfaces.ContikiRS232 + org.contikios.cooja.contikimote.interfaces.ContikiBeeper + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.contikimote.interfaces.ContikiIPAddress + org.contikios.cooja.contikimote.interfaces.ContikiRadio + org.contikios.cooja.contikimote.interfaces.ContikiButton + org.contikios.cooja.contikimote.interfaces.ContikiPIR + org.contikios.cooja.contikimote.interfaces.ContikiClock + org.contikios.cooja.contikimote.interfaces.ContikiLED + org.contikios.cooja.contikimote.interfaces.ContikiCFS + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + false + + + org.contikios.cooja.contikimote.ContikiMoteType + mtype686 + Cooja Mote Type #2 + [CONTIKI_DIR]/examples/hello-world/hello-world.c + make TARGET=cooja clean +make hello-world.cooja TARGET=cooja + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.Battery + org.contikios.cooja.contikimote.interfaces.ContikiVib + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + org.contikios.cooja.contikimote.interfaces.ContikiRS232 + org.contikios.cooja.contikimote.interfaces.ContikiBeeper + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.contikimote.interfaces.ContikiIPAddress + org.contikios.cooja.contikimote.interfaces.ContikiRadio + org.contikios.cooja.contikimote.interfaces.ContikiButton + org.contikios.cooja.contikimote.interfaces.ContikiPIR + org.contikios.cooja.contikimote.interfaces.ContikiClock + org.contikios.cooja.contikimote.interfaces.ContikiLED + org.contikios.cooja.contikimote.interfaces.ContikiCFS + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + false + + + + org.contikios.cooja.interfaces.Position + 54.36775767371176 + 24.409055040864118 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 1 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype295 + + + + org.contikios.cooja.interfaces.Position + 83.54989222799365 + 52.63050856506214 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 2 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.interfaces.Position + 108.91767775240822 + 78.59778809170032 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 3 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.interfaces.Position + 139.91021061864723 + 98.34190023350419 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 4 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.plugins.SimControl + 280 + 1 + 160 + 400 + 0 + + + org.contikios.cooja.plugins.Visualizer + + true + org.contikios.cooja.plugins.skins.UDGMVisualizerSkin + org.contikios.cooja.plugins.skins.IDVisualizerSkin + 1.9798610460263038 0.0 0.0 1.9798610460263038 -61.112037797038525 -1.2848438586294648 + + 400 + 4 + 400 + 1 + 1 + + + org.contikios.cooja.plugins.LogListener + + ID:4 + + + + 1404 + 2 + 240 + 400 + 160 + + + org.contikios.cooja.plugins.TimeLine + + 0 + 1 + 2 + 3 + + + + 500.0 + + 1804 + 6 + 166 + 0 + 753 + + + org.contikios.cooja.plugins.Notes + + Enter notes here + true + + 1124 + 5 + 160 + 680 + 0 + + + org.contikios.cooja.serialsocket.SerialSocketServer + 0 + + 60001 + true + + 362 + 3 + 116 + 13 + 414 + + + org.contikios.cooja.plugins.ScriptRunner + + + true + + 600 + 0 + 700 + 1037 + 40 + + diff --git a/tests/17-rpl-border-router/01-border-router-cooja.sh b/tests/17-rpl-border-router/01-border-router-cooja.sh new file mode 100755 index 000000000..6a781583d --- /dev/null +++ b/tests/17-rpl-border-router/01-border-router-cooja.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Contiki directory +CONTIKI=$1 + +# Simulation file +BASENAME=01-border-router-cooja + +bash test-border-router.sh $CONTIKI $BASENAME fd00::204:4:4:4 diff --git a/tests/17-rpl-border-router/02-border-router-cooja-tsch.csc b/tests/17-rpl-border-router/02-border-router-cooja-tsch.csc new file mode 100644 index 000000000..011da9df3 --- /dev/null +++ b/tests/17-rpl-border-router/02-border-router-cooja-tsch.csc @@ -0,0 +1,252 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 1.0 + 123456 + 1000000 + + org.contikios.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + org.contikios.cooja.contikimote.ContikiMoteType + mtype295 + Cooja Mote Type #1 + [CONTIKI_DIR]/examples/rpl-border-router/border-router.c + make TARGET=cooja clean +make border-router.cooja TARGET=cooja MAKE_MAC=MAKE_MAC_TSCH + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.Battery + org.contikios.cooja.contikimote.interfaces.ContikiVib + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + org.contikios.cooja.contikimote.interfaces.ContikiRS232 + org.contikios.cooja.contikimote.interfaces.ContikiBeeper + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.contikimote.interfaces.ContikiIPAddress + org.contikios.cooja.contikimote.interfaces.ContikiRadio + org.contikios.cooja.contikimote.interfaces.ContikiButton + org.contikios.cooja.contikimote.interfaces.ContikiPIR + org.contikios.cooja.contikimote.interfaces.ContikiClock + org.contikios.cooja.contikimote.interfaces.ContikiLED + org.contikios.cooja.contikimote.interfaces.ContikiCFS + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + false + + + org.contikios.cooja.contikimote.ContikiMoteType + mtype686 + Cooja Mote Type #2 + [CONTIKI_DIR]/examples/hello-world/hello-world.c + make TARGET=cooja clean +make hello-world.cooja TARGET=cooja MAKE_MAC=MAKE_MAC_TSCH + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.Battery + org.contikios.cooja.contikimote.interfaces.ContikiVib + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + org.contikios.cooja.contikimote.interfaces.ContikiRS232 + org.contikios.cooja.contikimote.interfaces.ContikiBeeper + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.contikimote.interfaces.ContikiIPAddress + org.contikios.cooja.contikimote.interfaces.ContikiRadio + org.contikios.cooja.contikimote.interfaces.ContikiButton + org.contikios.cooja.contikimote.interfaces.ContikiPIR + org.contikios.cooja.contikimote.interfaces.ContikiClock + org.contikios.cooja.contikimote.interfaces.ContikiLED + org.contikios.cooja.contikimote.interfaces.ContikiCFS + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + false + + + + org.contikios.cooja.interfaces.Position + 54.36775767371176 + 24.409055040864118 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 1 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype295 + + + + org.contikios.cooja.interfaces.Position + 83.54989222799365 + 52.63050856506214 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 2 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.interfaces.Position + 108.91767775240822 + 78.59778809170032 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 3 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.interfaces.Position + 139.91021061864723 + 98.34190023350419 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 4 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.plugins.SimControl + 280 + 1 + 160 + 400 + 0 + + + org.contikios.cooja.plugins.Visualizer + + true + org.contikios.cooja.plugins.skins.UDGMVisualizerSkin + org.contikios.cooja.plugins.skins.IDVisualizerSkin + 1.9798610460263038 0.0 0.0 1.9798610460263038 -61.112037797038525 -1.2848438586294648 + + 400 + 4 + 400 + 1 + 1 + + + org.contikios.cooja.plugins.LogListener + + ID:4 + + + + 1404 + 2 + 240 + 400 + 160 + + + org.contikios.cooja.plugins.TimeLine + + 0 + 1 + 2 + 3 + + + + 500.0 + + 1804 + 6 + 166 + 0 + 753 + + + org.contikios.cooja.plugins.Notes + + Enter notes here + true + + 1124 + 5 + 160 + 680 + 0 + + + org.contikios.cooja.serialsocket.SerialSocketServer + 0 + + 60001 + true + + 362 + 3 + 116 + 13 + 414 + + + org.contikios.cooja.plugins.ScriptRunner + + + true + + 600 + 0 + 700 + 1037 + 40 + + diff --git a/tests/17-rpl-border-router/02-border-router-cooja-tsch.sh b/tests/17-rpl-border-router/02-border-router-cooja-tsch.sh new file mode 100755 index 000000000..b91a8d5c7 --- /dev/null +++ b/tests/17-rpl-border-router/02-border-router-cooja-tsch.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Contiki directory +CONTIKI=$1 + +# Simulation file +BASENAME=02-border-router-cooja-tsch + +bash test-border-router.sh $CONTIKI $BASENAME fd00::204:4:4:4 diff --git a/tests/17-rpl-border-router/03-border-router-sky.csc b/tests/17-rpl-border-router/03-border-router-sky.csc new file mode 100644 index 000000000..d707dde17 --- /dev/null +++ b/tests/17-rpl-border-router/03-border-router-sky.csc @@ -0,0 +1,236 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 1.0 + 123456 + 1000000 + + org.contikios.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + org.contikios.cooja.mspmote.SkyMoteType + sky1 + Sky Mote Type #sky1 + [CONTIKI_DIR]/examples/rpl-border-router/border-router.c + make clean TARGET=sky +make border-router.sky TARGET=sky + [CONTIKI_DIR]/examples/rpl-border-router/border-router.sky + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.interfaces.IPAddress + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + org.contikios.cooja.mspmote.interfaces.MspClock + org.contikios.cooja.mspmote.interfaces.MspMoteID + org.contikios.cooja.mspmote.interfaces.SkyButton + org.contikios.cooja.mspmote.interfaces.SkyFlash + org.contikios.cooja.mspmote.interfaces.SkyCoffeeFilesystem + org.contikios.cooja.mspmote.interfaces.Msp802154Radio + org.contikios.cooja.mspmote.interfaces.MspSerial + org.contikios.cooja.mspmote.interfaces.SkyLED + org.contikios.cooja.mspmote.interfaces.MspDebugOutput + org.contikios.cooja.mspmote.interfaces.SkyTemperature + + + org.contikios.cooja.mspmote.SkyMoteType + sky2 + Sky Mote Type #sky2 + [CONTIKI_DIR]/examples/hello-world/hello-world.c + make clean TARGET=sky +make hello-world.sky TARGET=sky + [CONTIKI_DIR]/examples/hello-world/hello-world.sky + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.interfaces.IPAddress + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + org.contikios.cooja.mspmote.interfaces.MspClock + org.contikios.cooja.mspmote.interfaces.MspMoteID + org.contikios.cooja.mspmote.interfaces.SkyButton + org.contikios.cooja.mspmote.interfaces.SkyFlash + org.contikios.cooja.mspmote.interfaces.SkyCoffeeFilesystem + org.contikios.cooja.mspmote.interfaces.Msp802154Radio + org.contikios.cooja.mspmote.interfaces.MspSerial + org.contikios.cooja.mspmote.interfaces.SkyLED + org.contikios.cooja.mspmote.interfaces.MspDebugOutput + org.contikios.cooja.mspmote.interfaces.SkyTemperature + + + + + org.contikios.cooja.interfaces.Position + -24.750327773354453 + 17.688901393447438 + 0.0 + + + org.contikios.cooja.mspmote.interfaces.MspClock + 1.0 + + + org.contikios.cooja.mspmote.interfaces.MspMoteID + 1 + + sky1 + + + + + org.contikios.cooja.interfaces.Position + 1.091493067677618 + 40.943504236660225 + 0.0 + + + org.contikios.cooja.mspmote.interfaces.MspClock + 1.0 + + + org.contikios.cooja.mspmote.interfaces.MspMoteID + 2 + + sky2 + + + + + org.contikios.cooja.interfaces.Position + 22.647678967805337 + 61.6365018442491 + 0.0 + + + org.contikios.cooja.mspmote.interfaces.MspClock + 1.0 + + + org.contikios.cooja.mspmote.interfaces.MspMoteID + 3 + + sky2 + + + + + org.contikios.cooja.interfaces.Position + 44.02005813888037 + 93.02398317771755 + 0.0 + + + org.contikios.cooja.mspmote.interfaces.MspClock + 1.0 + + + org.contikios.cooja.mspmote.interfaces.MspMoteID + 4 + + sky2 + + + + org.contikios.cooja.plugins.SimControl + 280 + 1 + 160 + 400 + 0 + + + org.contikios.cooja.plugins.Visualizer + + true + org.contikios.cooja.plugins.skins.IDVisualizerSkin + org.contikios.cooja.plugins.skins.UDGMVisualizerSkin + 2.3610941331949244 0.0 0.0 2.3610941331949244 119.38219749746548 -4.52452305190821 + + 400 + 3 + 400 + 1 + 1 + + + org.contikios.cooja.plugins.LogListener + + + + + + 1404 + 6 + 240 + 400 + 160 + + + org.contikios.cooja.plugins.TimeLine + + 0 + 1 + 2 + 3 + + + + 500.0 + + 1804 + 5 + 166 + 0 + 742 + + + org.contikios.cooja.plugins.Notes + + Enter notes here + true + + 1124 + 4 + 160 + 680 + 0 + + + org.contikios.cooja.serialsocket.SerialSocketServer + 0 + + 60001 + true + + 362 + 2 + 116 + 30 + 403 + + + org.contikios.cooja.plugins.ScriptRunner + + + true + + 600 + 0 + 700 + 850 + 13 + + + diff --git a/tests/17-rpl-border-router/03-border-router-sky.sh b/tests/17-rpl-border-router/03-border-router-sky.sh new file mode 100755 index 000000000..798e0242b --- /dev/null +++ b/tests/17-rpl-border-router/03-border-router-sky.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Contiki directory +CONTIKI=$1 + +# Simulation file +BASENAME=03-border-router-sky + +bash test-border-router.sh $CONTIKI $BASENAME fd00::0212:7404:0004:0404 diff --git a/tests/17-rpl-border-router/04-border-router-traceroute.csc b/tests/17-rpl-border-router/04-border-router-traceroute.csc new file mode 100644 index 000000000..a010d5ef2 --- /dev/null +++ b/tests/17-rpl-border-router/04-border-router-traceroute.csc @@ -0,0 +1,252 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 1.0 + 123456 + 1000000 + + org.contikios.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + org.contikios.cooja.contikimote.ContikiMoteType + mtype295 + Cooja Mote Type #1 + [CONTIKI_DIR]/examples/rpl-border-router/border-router.c + make TARGET=cooja clean +make border-router.cooja TARGET=cooja + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.Battery + org.contikios.cooja.contikimote.interfaces.ContikiVib + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + org.contikios.cooja.contikimote.interfaces.ContikiRS232 + org.contikios.cooja.contikimote.interfaces.ContikiBeeper + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.contikimote.interfaces.ContikiIPAddress + org.contikios.cooja.contikimote.interfaces.ContikiRadio + org.contikios.cooja.contikimote.interfaces.ContikiButton + org.contikios.cooja.contikimote.interfaces.ContikiPIR + org.contikios.cooja.contikimote.interfaces.ContikiClock + org.contikios.cooja.contikimote.interfaces.ContikiLED + org.contikios.cooja.contikimote.interfaces.ContikiCFS + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + false + + + org.contikios.cooja.contikimote.ContikiMoteType + mtype686 + Cooja Mote Type #2 + [CONTIKI_DIR]/examples/hello-world/hello-world.c + make TARGET=cooja clean +make hello-world.cooja TARGET=cooja + org.contikios.cooja.interfaces.Position + org.contikios.cooja.interfaces.Battery + org.contikios.cooja.contikimote.interfaces.ContikiVib + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + org.contikios.cooja.contikimote.interfaces.ContikiRS232 + org.contikios.cooja.contikimote.interfaces.ContikiBeeper + org.contikios.cooja.interfaces.RimeAddress + org.contikios.cooja.contikimote.interfaces.ContikiIPAddress + org.contikios.cooja.contikimote.interfaces.ContikiRadio + org.contikios.cooja.contikimote.interfaces.ContikiButton + org.contikios.cooja.contikimote.interfaces.ContikiPIR + org.contikios.cooja.contikimote.interfaces.ContikiClock + org.contikios.cooja.contikimote.interfaces.ContikiLED + org.contikios.cooja.contikimote.interfaces.ContikiCFS + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + org.contikios.cooja.interfaces.Mote2MoteRelations + org.contikios.cooja.interfaces.MoteAttributes + false + + + + org.contikios.cooja.interfaces.Position + 54.36775767371176 + 24.409055040864118 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 1 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype295 + + + + org.contikios.cooja.interfaces.Position + 83.54989222799365 + 52.63050856506214 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 2 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.interfaces.Position + 108.91767775240822 + 78.59778809170032 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 3 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.interfaces.Position + 139.91021061864723 + 98.34190023350419 + 0.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiMoteID + 4 + + + org.contikios.cooja.contikimote.interfaces.ContikiRadio + 250.0 + + + org.contikios.cooja.contikimote.interfaces.ContikiEEPROM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + mtype686 + + + + org.contikios.cooja.plugins.SimControl + 280 + 1 + 160 + 400 + 0 + + + org.contikios.cooja.plugins.Visualizer + + true + org.contikios.cooja.plugins.skins.UDGMVisualizerSkin + org.contikios.cooja.plugins.skins.IDVisualizerSkin + 1.9798610460263038 0.0 0.0 1.9798610460263038 -61.112037797038525 -1.2848438586294648 + + 400 + 4 + 400 + 1 + 1 + + + org.contikios.cooja.plugins.LogListener + + ID:4 + + + + 1404 + 2 + 240 + 400 + 160 + + + org.contikios.cooja.plugins.TimeLine + + 0 + 1 + 2 + 3 + + + + 500.0 + + 1804 + 6 + 166 + 0 + 753 + + + org.contikios.cooja.plugins.Notes + + Enter notes here + true + + 1124 + 5 + 160 + 680 + 0 + + + org.contikios.cooja.serialsocket.SerialSocketServer + 0 + + 60001 + true + + 362 + 3 + 116 + 13 + 414 + + + org.contikios.cooja.plugins.ScriptRunner + + + true + + 600 + 0 + 700 + 1037 + 40 + + diff --git a/tests/17-rpl-border-router/04-border-router-traceroute.sh b/tests/17-rpl-border-router/04-border-router-traceroute.sh new file mode 100755 index 000000000..96278e7d5 --- /dev/null +++ b/tests/17-rpl-border-router/04-border-router-traceroute.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# Contiki directory +CONTIKI=$1 + +# Simulation file +BASENAME=04-border-router-traceroute + +# Destination IPv6 +IPADDR=fd00::204:4:4:4 +# The expected hop count +TARGETHOPS=4 + +# Start simulation +echo "Starting Cooja simulation $BASENAME.csc" +java -Xshare:on -jar $CONTIKI/tools/cooja/dist/cooja.jar -nogui=$BASENAME.csc -contiki=$CONTIKI > $BASENAME.coojalog & +JPID=$! +sleep 20 + +# Connect to the simlation +echo "Starting tunslip6" +make -C $CONTIKI/tools tunslip6 +make -C $CONTIKI/examples/rpl-border-router/ connect-router-cooja TARGET=zoul >> $BASENAME.tunsliplog 2>&1 & +MPID=$! +echo "Waiting for network formation" +sleep 5 + +# Do ping +echo "Running Traceroute" +traceroute6 $IPADDR -m 5 | tee $BASENAME.scriptlog +# Fetch traceroute6 status code (not $? because this is piped) +STATUS=${PIPESTATUS[0]} +HOPS=`wc $BASENAME.scriptlog -l | cut -f 1 -d ' '` + +echo "Closing simulation and tunslip6" +sleep 1 +kill -9 $JPID +kill -9 $MPID +sleep 1 +rm COOJA.testlog +rm COOJA.log + +if [ $STATUS -eq 0 ] && [ $HOPS -eq $TARGETHOPS ] ; then + printf "%-32s TEST OK\n" "$BASENAME" | tee $BASENAME.testlog; +else + # Verbose output when using CI + if [ "$CI" = "true" ]; then + echo "==== $BASENAME.coojalog ====" ; cat $BASENAME.coojalog; + echo "==== $BASENAME.tunsliplog ====" ; cat $BASENAME.tunsliplog; + echo "==== $BASENAME.scriptlog ====" ; cat $BASENAME.scriptlog; + else + echo "==== Check $BASENAME.coojalog, $BASENAME.tunsliplog, and $BASENAME.scriptlog for details ===="; + fi; + + printf "%-32s TEST FAIL\n" "$BASENAME" | tee $BASENAME.testlog; +fi + +# We do not want Make to stop -> Return 0 +# The Makefile will check if a log contains FAIL at the end + +exit 0 diff --git a/tests/17-rpl-border-router/Makefile b/tests/17-rpl-border-router/Makefile new file mode 100644 index 000000000..c46e5271d --- /dev/null +++ b/tests/17-rpl-border-router/Makefile @@ -0,0 +1 @@ +include ../Makefile.script-test diff --git a/tests/17-rpl-border-router/test-border-router.sh b/tests/17-rpl-border-router/test-border-router.sh new file mode 100755 index 000000000..db399ca70 --- /dev/null +++ b/tests/17-rpl-border-router/test-border-router.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# Contiki directory +CONTIKI=$1 + +# Simulation file +BASENAME=$2 + +# Destination IPv6 +IPADDR=$3 + +# Start simulation +echo "Starting Cooja simulation $BASENAME.csc" +java -Xshare:on -jar $CONTIKI/tools/cooja/dist/cooja.jar -nogui=$BASENAME.csc -contiki=$CONTIKI > $BASENAME.coojalog & +JPID=$! +sleep 20 + +# Connect to the simlation +echo "Starting tunslip6" +make -C $CONTIKI/tools tunslip6 +make -C $CONTIKI/examples/rpl-border-router/ connect-router-cooja TARGET=zoul >> $BASENAME.tunsliplog 2>&1 & +MPID=$! +echo "Waiting for network formation" +sleep 5 + +# Do ping +echo "Pinging" +ping6 $IPADDR -c 5 | tee $BASENAME.scriptlog +# Fetch ping6 status code (not $? because this is piped) +STATUS=${PIPESTATUS[0]} + +echo "Closing simulation and tunslip6" +sleep 1 +kill -9 $JPID +kill -9 $MPID +sleep 1 +rm COOJA.testlog +rm COOJA.log + +if [ $STATUS -eq 0 ] ; then + printf "%-32s TEST OK\n" "$BASENAME" | tee $BASENAME.testlog; +else + # Verbose output when using CI + if [ "$CI" = "true" ]; then + echo "==== $BASENAME.coojalog ====" ; cat $BASENAME.coojalog; + echo "==== $BASENAME.tunsliplog ====" ; cat $BASENAME.tunsliplog; + echo "==== $BASENAME.scriptlog ====" ; cat $BASENAME.scriptlog; + else + echo "==== Check $BASENAME.coojalog, $BASENAME.tunsliplog, and $BASENAME.scriptlog for details ===="; + fi; + + printf "%-32s TEST FAIL\n" "$BASENAME" | tee $BASENAME.testlog; +fi + +# We do not want Make to stop -> Return 0 +# The Makefile will check if a log contains FAIL at the end + +exit 0 diff --git a/tests/18-native-networking/01-native-ping.sh b/tests/18-native-networking/01-native-ping.sh new file mode 100755 index 000000000..fa7fe49e7 --- /dev/null +++ b/tests/18-native-networking/01-native-ping.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# Contiki directory +CONTIKI=$1 +# Test basename +BASENAME=01-native-ping + +IPADDR=fd00::302:304:506:708 + +# Starting Contiki-NG native node +echo "Starting native node" +make -C $CONTIKI/examples/hello-world +sudo $CONTIKI/examples/hello-world/hello-world.native > node.log 2> node.err & +CPID=$! +sleep 2 + +# Do ping +echo "Pinging" +ping6 $IPADDR -c 5 | tee $BASENAME.log +# Fetch ping6 status code (not $? because this is piped) +STATUS=${PIPESTATUS[0]} + +echo "Closing native node" +sleep 2 +pgrep hello-world | sudo xargs kill -9 + +if [ $STATUS -eq 0 ] ; then + cp $BASENAME.log $BASENAME.testlog + printf "%-32s TEST OK\n" "$BASENAME" | tee -a $BASENAME.testlog; +else + mv $BASENAME.log $BASENAME.faillog + + echo "" + echo "---- node.log" + cat node.log + + echo "" + echo "---- node.err" + cat node.err + + cp $BASENAME.log $BASENAME.faillog + printf "%-32s TEST FAIL\n" "$BASENAME" | tee -a $BASENAME.testlog; +fi + +rm node.log +rm node.err + +# We do not want Make to stop -> Return 0 +# The Makefile will check if a log contains FAIL at the end +exit 0 diff --git a/tests/18-native-networking/Makefile b/tests/18-native-networking/Makefile new file mode 100644 index 000000000..c46e5271d --- /dev/null +++ b/tests/18-native-networking/Makefile @@ -0,0 +1 @@ +include ../Makefile.script-test diff --git a/tests/Makefile.script-test b/tests/Makefile.script-test new file mode 100644 index 000000000..26d60737f --- /dev/null +++ b/tests/Makefile.script-test @@ -0,0 +1,25 @@ +TESTS=$(wildcard ??-*.sh) +TESTLOGS=$(sort $(patsubst %.sh,%.testlog,$(TESTS))) + +CONTIKI=../.. + +tests: $(TESTLOGS) + +summary: clean tests +ifeq ($(TESTS),) + @echo No tests > $@ +else + @cat $(TESTLOGS) > $@ +endif + +all: cooja clean tests + +%.testlog: %.sh cooja + @bash "$(basename $@).sh" "$(CONTIKI)" + +clean: + @rm -f *.*log report summary + +cooja: $(CONTIKI)/tools/cooja/dist/cooja.jar +$(CONTIKI)/tools/cooja/dist/cooja.jar: + (cd $(CONTIKI)/tools/cooja; ant jar) diff --git a/tools/sky/check-size b/tools/sky/check-size index fc0bb9429..99a8c6257 100755 --- a/tools/sky/check-size +++ b/tools/sky/check-size @@ -9,7 +9,6 @@ @sky = ( "battery-sensor", "button-sensor", "cfs-xmem", "clock", "contiki-sky-main", "ds2411", "flash", "msp430", - "mtarch", "i2c", "leds-arch", "light", "radio-sensor", "sht11", "simple-cc2420-arch", "simple-cc2420", "spi", "slip", "uart1", "watchdog", "xmem", "rtimer-arch" );