From f69268b4ab6c8c1202bd5eb7703b32c1a033ad29 Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Sun, 25 Mar 2007 12:06:28 +0000 Subject: [PATCH] Timeouts configurable at run-time --- core/net/rime/mesh.c | 12 ++++++++++-- core/net/rime/neighbor.c | 8 +++++++- core/net/rime/neighbor.h | 3 ++- core/net/rime/nf.c | 13 ++++++------- core/net/rime/nf.h | 7 ++++--- core/net/rime/route-discovery.c | 8 +++++--- core/net/rime/route-discovery.h | 5 +++-- 7 files changed, 37 insertions(+), 19 deletions(-) diff --git a/core/net/rime/mesh.c b/core/net/rime/mesh.c index 5b8d5989a..6f5eaf31c 100644 --- a/core/net/rime/mesh.c +++ b/core/net/rime/mesh.c @@ -1,3 +1,8 @@ +/** + * \addtogroup rime-mesh + * @{ + */ + /* * Copyright (c) 2007, Swedish Institute of Computer Science. * All rights reserved. @@ -28,7 +33,7 @@ * * This file is part of the Contiki operating system. * - * $Id: mesh.c,v 1.5 2007/03/22 17:34:16 adamdunkels Exp $ + * $Id: mesh.c,v 1.6 2007/03/25 12:06:57 adamdunkels Exp $ */ /** @@ -111,7 +116,9 @@ mesh_open(struct mesh_conn *c, u16_t channels, const struct mesh_callbacks *callbacks) { mh_open(&c->mh, channels, &data_callbacks); - route_discovery_open(&c->route_discovery_conn, channels + 1, + route_discovery_open(&c->route_discovery_conn, + CLOCK_SECOND / 2, + channels + 1, &route_discovery_callbacks); c->cb = callbacks; } @@ -146,3 +153,4 @@ mesh_send(struct mesh_conn *c, rimeaddr_t *to) return 1; } /*---------------------------------------------------------------------------*/ +/** @} */ diff --git a/core/net/rime/neighbor.c b/core/net/rime/neighbor.c index 8dab8683c..f6f1ff603 100644 --- a/core/net/rime/neighbor.c +++ b/core/net/rime/neighbor.c @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: neighbor.c,v 1.6 2007/03/24 13:57:04 oliverschmidt Exp $ + * $Id: neighbor.c,v 1.7 2007/03/25 12:06:28 adamdunkels Exp $ */ /** @@ -215,3 +215,9 @@ neighbor_best(void) return NULL; } /*---------------------------------------------------------------------------*/ +void +neighbor_set_lifetime(int seconds) +{ + max_time = seconds; +} +/*---------------------------------------------------------------------------*/ diff --git a/core/net/rime/neighbor.h b/core/net/rime/neighbor.h index e7003f016..d27379549 100644 --- a/core/net/rime/neighbor.h +++ b/core/net/rime/neighbor.h @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: neighbor.h,v 1.3 2007/03/22 17:34:43 adamdunkels Exp $ + * $Id: neighbor.h,v 1.4 2007/03/25 12:06:28 adamdunkels Exp $ */ /** @@ -60,6 +60,7 @@ void neighbor_remove(rimeaddr_t *addr); struct neighbor *neighbor_find(rimeaddr_t *addr); struct neighbor *neighbor_best(void); +void neighbor_set_lifetime(int seconds); #endif /* __NEIGHBOR_H__ */ diff --git a/core/net/rime/nf.c b/core/net/rime/nf.c index 603d92baa..d544e2b66 100644 --- a/core/net/rime/nf.c +++ b/core/net/rime/nf.c @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: nf.c,v 1.9 2007/03/23 10:46:35 adamdunkels Exp $ + * $Id: nf.c,v 1.10 2007/03/25 12:06:28 adamdunkels Exp $ */ /** @@ -43,8 +43,6 @@ #include "lib/rand.h" #include -#define QUEUE_TIME CLOCK_SECOND / 4 - #define HOPS_MAX 16 struct nf_hdr { @@ -70,7 +68,7 @@ static void send(void *ptr); static void set_timer(struct nf_conn *c) { - ctimer_set(&c->t, QUEUE_TIME, send, c); + ctimer_set(&c->t, c->queue_time, send, c); } /*---------------------------------------------------------------------------*/ static void @@ -88,7 +86,7 @@ send(void *ptr) c->buf = NULL; PRINTF("%d.%d: nf send to uibc\n", rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1]); - uibc_send(&c->c, QUEUE_TIME); + uibc_send(&c->c, c->queue_time); if(c->u->sent != NULL) { c->u->sent(c); } @@ -164,11 +162,12 @@ recv_from_uibc(struct uibc_conn *uibc, rimeaddr_t *from) static const struct uibc_callbacks nf = {recv_from_uibc, NULL, NULL}; /*---------------------------------------------------------------------------*/ void -nf_open(struct nf_conn *c, u16_t channel, - const struct nf_callbacks *u) +nf_open(struct nf_conn *c, clock_time_t queue_time, + u16_t channel, const struct nf_callbacks *u) { uibc_open(&c->c, channel, &nf); c->u = u; + c->queue_time = queue_time; } /*---------------------------------------------------------------------------*/ void diff --git a/core/net/rime/nf.h b/core/net/rime/nf.h index 1c5fd6f0c..332affca9 100644 --- a/core/net/rime/nf.h +++ b/core/net/rime/nf.h @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: nf.h,v 1.7 2007/03/21 23:21:54 adamdunkels Exp $ + * $Id: nf.h,v 1.8 2007/03/25 12:06:28 adamdunkels Exp $ */ /** @@ -58,14 +58,15 @@ struct nf_conn { struct uibc_conn c; struct ctimer t; struct queuebuf *buf; + clock_time_t queue_time; u8_t packets_received; u8_t last_originator_seqno; rimeaddr_t last_originator; const struct nf_callbacks *u; }; -void nf_open(struct nf_conn *c, u16_t channel, - const struct nf_callbacks *u); +void nf_open(struct nf_conn *c, clock_time_t queue_time, + u16_t channel, const struct nf_callbacks *u); void nf_close(struct nf_conn *c); int nf_send(struct nf_conn *c); diff --git a/core/net/rime/route-discovery.c b/core/net/rime/route-discovery.c index 556913adf..d498ab458 100644 --- a/core/net/rime/route-discovery.c +++ b/core/net/rime/route-discovery.c @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: route-discovery.c,v 1.1 2007/03/22 17:34:16 adamdunkels Exp $ + * $Id: route-discovery.c,v 1.2 2007/03/25 12:06:28 adamdunkels Exp $ */ /** @@ -207,10 +207,12 @@ static const struct uc_callbacks rrep_callbacks = {rrep_packet_received}; static const struct nf_callbacks rreq_callbacks = {rreq_packet_received, NULL}; /*---------------------------------------------------------------------------*/ void -route_discovery_open(struct route_discovery_conn *c, u16_t channels, +route_discovery_open(struct route_discovery_conn *c, + clock_time time, + u16_t channels, const struct route_discovery_callbacks *callbacks) { - nf_open(&c->rreqconn, channels + 0, &rreq_callbacks); + nf_open(&c->rreqconn, time, channels + 0, &rreq_callbacks); uc_open(&c->rrepconn, channels + 1, &rrep_callbacks); c->cb = callbacks; } diff --git a/core/net/rime/route-discovery.h b/core/net/rime/route-discovery.h index 6b20fd7e3..476db093e 100644 --- a/core/net/rime/route-discovery.h +++ b/core/net/rime/route-discovery.h @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: route-discovery.h,v 1.1 2007/03/22 17:34:16 adamdunkels Exp $ + * $Id: route-discovery.h,v 1.2 2007/03/25 12:06:28 adamdunkels Exp $ */ /** @@ -63,7 +63,8 @@ struct route_discovery_conn { const struct route_discovery_callbacks *cb; }; -void route_discovery_open(struct route_discovery_conn *c, u16_t channels, +void route_discovery_open(struct route_discovery_conn *c, clock_time_t time, + u16_t channels, const struct route_discovery_callbacks *callbacks); void route_discovery_discover(struct route_discovery_conn *c, rimeaddr_t *dest, clock_time_t timeout);