Timeouts configurable at run-time
This commit is contained in:
parent
e12086c980
commit
f69268b4ab
7 changed files with 37 additions and 19 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
/**
|
||||||
|
* \addtogroup rime-mesh
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007, Swedish Institute of Computer Science.
|
* Copyright (c) 2007, Swedish Institute of Computer Science.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
@ -28,7 +33,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* 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)
|
const struct mesh_callbacks *callbacks)
|
||||||
{
|
{
|
||||||
mh_open(&c->mh, channels, &data_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);
|
&route_discovery_callbacks);
|
||||||
c->cb = callbacks;
|
c->cb = callbacks;
|
||||||
}
|
}
|
||||||
|
@ -146,3 +153,4 @@ mesh_send(struct mesh_conn *c, rimeaddr_t *to)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** @} */
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* 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;
|
return NULL;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
neighbor_set_lifetime(int seconds)
|
||||||
|
{
|
||||||
|
max_time = seconds;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* 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_find(rimeaddr_t *addr);
|
||||||
struct neighbor *neighbor_best(void);
|
struct neighbor *neighbor_best(void);
|
||||||
|
void neighbor_set_lifetime(int seconds);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __NEIGHBOR_H__ */
|
#endif /* __NEIGHBOR_H__ */
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* 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 "lib/rand.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define QUEUE_TIME CLOCK_SECOND / 4
|
|
||||||
|
|
||||||
#define HOPS_MAX 16
|
#define HOPS_MAX 16
|
||||||
|
|
||||||
struct nf_hdr {
|
struct nf_hdr {
|
||||||
|
@ -70,7 +68,7 @@ static void send(void *ptr);
|
||||||
static void
|
static void
|
||||||
set_timer(struct nf_conn *c)
|
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
|
static void
|
||||||
|
@ -88,7 +86,7 @@ send(void *ptr)
|
||||||
c->buf = NULL;
|
c->buf = NULL;
|
||||||
PRINTF("%d.%d: nf send to uibc\n",
|
PRINTF("%d.%d: nf send to uibc\n",
|
||||||
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1]);
|
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) {
|
if(c->u->sent != NULL) {
|
||||||
c->u->sent(c);
|
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};
|
static const struct uibc_callbacks nf = {recv_from_uibc, NULL, NULL};
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
nf_open(struct nf_conn *c, u16_t channel,
|
nf_open(struct nf_conn *c, clock_time_t queue_time,
|
||||||
const struct nf_callbacks *u)
|
u16_t channel, const struct nf_callbacks *u)
|
||||||
{
|
{
|
||||||
uibc_open(&c->c, channel, &nf);
|
uibc_open(&c->c, channel, &nf);
|
||||||
c->u = u;
|
c->u = u;
|
||||||
|
c->queue_time = queue_time;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* 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 uibc_conn c;
|
||||||
struct ctimer t;
|
struct ctimer t;
|
||||||
struct queuebuf *buf;
|
struct queuebuf *buf;
|
||||||
|
clock_time_t queue_time;
|
||||||
u8_t packets_received;
|
u8_t packets_received;
|
||||||
u8_t last_originator_seqno;
|
u8_t last_originator_seqno;
|
||||||
rimeaddr_t last_originator;
|
rimeaddr_t last_originator;
|
||||||
const struct nf_callbacks *u;
|
const struct nf_callbacks *u;
|
||||||
};
|
};
|
||||||
|
|
||||||
void nf_open(struct nf_conn *c, u16_t channel,
|
void nf_open(struct nf_conn *c, clock_time_t queue_time,
|
||||||
const struct nf_callbacks *u);
|
u16_t channel, const struct nf_callbacks *u);
|
||||||
void nf_close(struct nf_conn *c);
|
void nf_close(struct nf_conn *c);
|
||||||
|
|
||||||
int nf_send(struct nf_conn *c);
|
int nf_send(struct nf_conn *c);
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* 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};
|
static const struct nf_callbacks rreq_callbacks = {rreq_packet_received, NULL};
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
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)
|
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);
|
uc_open(&c->rrepconn, channels + 1, &rrep_callbacks);
|
||||||
c->cb = callbacks;
|
c->cb = callbacks;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* 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;
|
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);
|
const struct route_discovery_callbacks *callbacks);
|
||||||
void route_discovery_discover(struct route_discovery_conn *c, rimeaddr_t *dest,
|
void route_discovery_discover(struct route_discovery_conn *c, rimeaddr_t *dest,
|
||||||
clock_time_t timeout);
|
clock_time_t timeout);
|
||||||
|
|
Loading…
Reference in a new issue