From 2e55bb5151046fa585b56f87a4dbd2287f83d4b7 Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Fri, 6 Feb 2009 10:12:52 +0000 Subject: [PATCH] Removed the blink process to make the code simpler, added randomness to the transmission intervals --- examples/rime/example-collect.c | 46 +++++++-------------------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/examples/rime/example-collect.c b/examples/rime/example-collect.c index 656f37add..d8ea7291b 100644 --- a/examples/rime/example-collect.c +++ b/examples/rime/example-collect.c @@ -28,17 +28,18 @@ * * This file is part of the Contiki operating system. * - * $Id: example-collect.c,v 1.2 2008/02/24 22:15:46 adamdunkels Exp $ + * $Id: example-collect.c,v 1.3 2009/02/06 10:12:52 adamdunkels Exp $ */ /** * \file - * A brief description of what this file is. + * Example of how the collect primitive works. * \author * Adam Dunkels */ #include "contiki.h" +#include "lib/rand.h" #include "net/rime.h" #include "net/rime/collect.h" #include "net/rime/neighbor.h" @@ -51,42 +52,10 @@ static struct collect_conn tc; /*---------------------------------------------------------------------------*/ PROCESS(example_collect_process, "Test collect process"); -PROCESS(depth_blink_process, "Depth indicator"); -AUTOSTART_PROCESSES(&example_collect_process, &depth_blink_process); -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(depth_blink_process, ev, data) -{ - static struct etimer et; - static int count; - - PROCESS_BEGIN(); - - while(1) { - etimer_set(&et, CLOCK_SECOND * 1); - PROCESS_WAIT_UNTIL(etimer_expired(&et)); - count = collect_depth(&tc); - if(count == COLLECT_MAX_DEPTH) { - leds_on(LEDS_RED); - } else { - leds_off(LEDS_RED); - count /= NEIGHBOR_ETX_SCALE; - while(count > 0) { - leds_on(LEDS_RED); - etimer_set(&et, CLOCK_SECOND / 16); - PROCESS_WAIT_UNTIL(etimer_expired(&et)); - leds_off(LEDS_RED); - etimer_set(&et, CLOCK_SECOND / 4); - PROCESS_WAIT_UNTIL(etimer_expired(&et)); - --count; - } - } - } - - PROCESS_END(); -} +AUTOSTART_PROCESSES(&example_collect_process); /*---------------------------------------------------------------------------*/ static void -recv(rimeaddr_t *originator, uint8_t seqno, uint8_t hops) +recv(const rimeaddr_t *originator, uint8_t seqno, uint8_t hops) { printf("Sink got message from %d.%d, seqno %d, hops %d: len %d '%s'\n", originator->u8[0], originator->u8[1], @@ -107,7 +76,10 @@ PROCESS_THREAD(example_collect_process, ev, data) while(1) { static struct etimer et; - etimer_set(&et, CLOCK_SECOND * 10); + /* Send a packet every 16 seconds; first wait 8 seconds, than a + random time between 0 and 8 seconds. */ + + etimer_set(&et, CLOCK_SECOND * 8 + rand() % (CLOCK_SECOND * 8)); PROCESS_WAIT_EVENT(); if(etimer_expired(&et)) {