Changed the 'ibc' and 'uc' Rime modules into the more descriptive names 'broadcast' and 'unicast'
This commit is contained in:
parent
9d7c81d4ed
commit
63c620303a
@ -1,7 +1,7 @@
|
|||||||
CHAMELEON=chameleon.c channel.c chameleon-raw.c chameleon-bitopt.c
|
CHAMELEON=chameleon.c channel.c chameleon-raw.c chameleon-bitopt.c
|
||||||
|
|
||||||
CONTIKI_SOURCEFILES += rimebuf.c queuebuf.c rimeaddr.c ctimer.c rime.c timesynch.c \
|
CONTIKI_SOURCEFILES += rimebuf.c queuebuf.c rimeaddr.c ctimer.c rime.c timesynch.c \
|
||||||
rimestats.c ibc.c uc.c suc.c ruc.c sibc.c sabc.c abc.c nf.c \
|
rimestats.c broadcast.c unicast.c suc.c ruc.c sibc.c sabc.c abc.c nf.c \
|
||||||
mh.c rmh.c rucb.c polite.c ipolite.c neighbor-discovery.c \
|
mh.c rmh.c rucb.c polite.c ipolite.c neighbor-discovery.c \
|
||||||
mesh.c route.c route-discovery.c \
|
mesh.c route.c route-discovery.c \
|
||||||
collect.c neighbor.c \
|
collect.c neighbor.c \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* \addtogroup rimeibc
|
* \addtogroup rimebroadcast
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -33,12 +33,12 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: ibc.c,v 1.14 2008/02/25 02:14:34 adamdunkels Exp $
|
* $Id: broadcast.c,v 1.1 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file
|
* \file
|
||||||
* Identified best-effort local area broadcast (ibc)
|
* Identified best-effort local area broadcast (broadcast)
|
||||||
* \author
|
* \author
|
||||||
* Adam Dunkels <adam@sics.se>
|
* Adam Dunkels <adam@sics.se>
|
||||||
*/
|
*/
|
||||||
@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
static const struct rimebuf_attrlist attributes[] =
|
static const struct rimebuf_attrlist attributes[] =
|
||||||
{
|
{
|
||||||
IBC_ATTRIBUTES RIMEBUF_ATTR_LAST
|
BROADCAST_ATTRIBUTES RIMEBUF_ATTR_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
@ -64,37 +64,37 @@ static void
|
|||||||
recv_from_abc(struct abc_conn *bc)
|
recv_from_abc(struct abc_conn *bc)
|
||||||
{
|
{
|
||||||
rimeaddr_t sender;
|
rimeaddr_t sender;
|
||||||
struct ibc_conn *c = (struct ibc_conn *)bc;
|
struct broadcast_conn *c = (struct broadcast_conn *)bc;
|
||||||
|
|
||||||
rimeaddr_copy(&sender, rimebuf_addr(RIMEBUF_ADDR_SENDER));
|
rimeaddr_copy(&sender, rimebuf_addr(RIMEBUF_ADDR_SENDER));
|
||||||
|
|
||||||
PRINTF("%d.%d: ibc: from %d.%d\n",
|
PRINTF("%d.%d: broadcast: from %d.%d\n",
|
||||||
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
||||||
sender.u8[0], sender.u8[1]);
|
sender.u8[0], sender.u8[1]);
|
||||||
c->u->recv(c, &sender);
|
c->u->recv(c, &sender);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct abc_callbacks ibc = {recv_from_abc};
|
static const struct abc_callbacks broadcast = {recv_from_abc};
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
ibc_open(struct ibc_conn *c, uint16_t channel,
|
broadcast_open(struct broadcast_conn *c, uint16_t channel,
|
||||||
const struct ibc_callbacks *u)
|
const struct broadcast_callbacks *u)
|
||||||
{
|
{
|
||||||
abc_open(&c->c, channel, &ibc);
|
abc_open(&c->c, channel, &broadcast);
|
||||||
c->u = u;
|
c->u = u;
|
||||||
channel_set_attributes(channel, attributes);
|
channel_set_attributes(channel, attributes);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
ibc_close(struct ibc_conn *c)
|
broadcast_close(struct broadcast_conn *c)
|
||||||
{
|
{
|
||||||
abc_close(&c->c);
|
abc_close(&c->c);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
ibc_send(struct ibc_conn *c)
|
broadcast_send(struct broadcast_conn *c)
|
||||||
{
|
{
|
||||||
PRINTF("%d.%d: ibc_send\n",
|
PRINTF("%d.%d: broadcast_send\n",
|
||||||
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1]);
|
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1]);
|
||||||
rimebuf_set_addr(RIMEBUF_ADDR_SENDER, &rimeaddr_node_addr);
|
rimebuf_set_addr(RIMEBUF_ADDR_SENDER, &rimeaddr_node_addr);
|
||||||
return abc_send(&c->c);
|
return abc_send(&c->c);
|
@ -7,12 +7,12 @@
|
|||||||
* \defgroup rimeibc Identified best-effort local area broadcast
|
* \defgroup rimeibc Identified best-effort local area broadcast
|
||||||
* @{
|
* @{
|
||||||
*
|
*
|
||||||
* The ibc module sends packets to all local area neighbors with an a
|
* The broadcast module sends packets to all local area neighbors with an a
|
||||||
* header that identifies the sender.
|
* header that identifies the sender.
|
||||||
*
|
*
|
||||||
* \section channels Channels
|
* \section channels Channels
|
||||||
*
|
*
|
||||||
* The ibc module uses 1 channel.
|
* The broadcast module uses 1 channel.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -46,7 +46,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: ibc.h,v 1.11 2008/02/25 02:14:34 adamdunkels Exp $
|
* $Id: broadcast.h,v 1.1 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,77 +56,77 @@
|
|||||||
* Adam Dunkels <adam@sics.se>
|
* Adam Dunkels <adam@sics.se>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __IBC_H__
|
#ifndef __BROADCAST_H__
|
||||||
#define __IBC_H__
|
#define __BROADCAST_H__
|
||||||
|
|
||||||
#include "net/rime/abc.h"
|
#include "net/rime/abc.h"
|
||||||
#include "net/rime/rimeaddr.h"
|
#include "net/rime/rimeaddr.h"
|
||||||
|
|
||||||
struct ibc_conn;
|
struct broadcast_conn;
|
||||||
|
|
||||||
#define IBC_ATTRIBUTES { RIMEBUF_ADDR_SENDER, RIMEBUF_ADDRSIZE }, \
|
#define BROADCAST_ATTRIBUTES { RIMEBUF_ADDR_SENDER, RIMEBUF_ADDRSIZE }, \
|
||||||
ABC_ATTRIBUTES
|
ABC_ATTRIBUTES
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Callback structure for ibc
|
* \brief Callback structure for broadcast
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
struct ibc_callbacks {
|
struct broadcast_callbacks {
|
||||||
/** Called when a packet has been received by the ibc module. */
|
/** Called when a packet has been received by the broadcast module. */
|
||||||
void (* recv)(struct ibc_conn *ptr, rimeaddr_t *sender);
|
void (* recv)(struct broadcast_conn *ptr, rimeaddr_t *sender);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ibc_conn {
|
struct broadcast_conn {
|
||||||
struct abc_conn c;
|
struct abc_conn c;
|
||||||
const struct ibc_callbacks *u;
|
const struct broadcast_callbacks *u;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Set up an identified best-effort broadcast connection
|
* \brief Set up an identified best-effort broadcast connection
|
||||||
* \param c A pointer to a struct ibc_conn
|
* \param c A pointer to a struct broadcast_conn
|
||||||
* \param channel The channel on which the connection will operate
|
* \param channel The channel on which the connection will operate
|
||||||
* \param u A struct ibc_callbacks with function pointers to functions that will be called when a packet has been received
|
* \param u A struct broadcast_callbacks with function pointers to functions that will be called when a packet has been received
|
||||||
*
|
*
|
||||||
* This function sets up an ibc connection on the
|
* This function sets up a broadcast connection on the
|
||||||
* specified channel. The caller must have allocated the
|
* specified channel. The caller must have allocated the
|
||||||
* memory for the struct ibc_conn, usually by declaring it
|
* memory for the struct broadcast_conn, usually by declaring it
|
||||||
* as a static variable.
|
* as a static variable.
|
||||||
*
|
*
|
||||||
* The struct ibc_callbacks pointer must point to a structure
|
* The struct broadcast_callbacks pointer must point to a structure
|
||||||
* containing a pointer to a function that will be called
|
* containing a pointer to a function that will be called
|
||||||
* when a packet arrives on the channel.
|
* when a packet arrives on the channel.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void ibc_open(struct ibc_conn *c, uint16_t channel,
|
void broadcast_open(struct broadcast_conn *c, uint16_t channel,
|
||||||
const struct ibc_callbacks *u);
|
const struct broadcast_callbacks *u);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Close an ibc connection
|
* \brief Close a broadcast connection
|
||||||
* \param c A pointer to a struct ibc_conn
|
* \param c A pointer to a struct broadcast_conn
|
||||||
*
|
*
|
||||||
* This function closes an ibc connection that has
|
* This function closes a broadcast connection that has
|
||||||
* previously been opened with ibc_open().
|
* previously been opened with broadcast_open().
|
||||||
*
|
*
|
||||||
* This function typically is called as an exit handler.
|
* This function typically is called as an exit handler.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void ibc_close(struct ibc_conn *c);
|
void broadcast_close(struct broadcast_conn *c);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Send an identified best-effort broadcast packet
|
* \brief Send an identified best-effort broadcast packet
|
||||||
* \param c The ibc connection on which the packet should be sent
|
* \param c The broadcast connection on which the packet should be sent
|
||||||
* \retval Non-zero if the packet could be sent, zero otherwise
|
* \retval Non-zero if the packet could be sent, zero otherwise
|
||||||
*
|
*
|
||||||
* This function sends an identified best-effort broadcast
|
* This function sends an identified best-effort broadcast
|
||||||
* packet. The packet must be present in the rimebuf
|
* packet. The packet must be present in the rimebuf
|
||||||
* before this function is called.
|
* before this function is called.
|
||||||
*
|
*
|
||||||
* The parameter c must point to an ibc connection that
|
* The parameter c must point to a broadcast connection that
|
||||||
* must have previously been set up with ibc_open().
|
* must have previously been set up with broadcast_open().
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int ibc_send(struct ibc_conn *c);
|
int broadcast_send(struct broadcast_conn *c);
|
||||||
|
|
||||||
#endif /* __IBC_H__ */
|
#endif /* __BROADCAST_H__ */
|
||||||
/** @} */
|
/** @} */
|
||||||
/** @} */
|
/** @} */
|
@ -33,7 +33,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: ipolite.c,v 1.7 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: ipolite.c,v 1.8 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -63,9 +63,9 @@
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
recv(struct ibc_conn *ibc, rimeaddr_t *from)
|
recv(struct broadcast_conn *broadcast, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
struct ipolite_conn *c = (struct ipolite_conn *)ibc;
|
struct ipolite_conn *c = (struct ipolite_conn *)broadcast;
|
||||||
if(c->q != NULL &&
|
if(c->q != NULL &&
|
||||||
rimebuf_datalen() == queuebuf_datalen(c->q) &&
|
rimebuf_datalen() == queuebuf_datalen(c->q) &&
|
||||||
memcmp(rimebuf_dataptr(), queuebuf_dataptr(c->q),
|
memcmp(rimebuf_dataptr(), queuebuf_dataptr(c->q),
|
||||||
@ -97,27 +97,27 @@ send(void *ptr)
|
|||||||
queuebuf_to_rimebuf(c->q);
|
queuebuf_to_rimebuf(c->q);
|
||||||
queuebuf_free(c->q);
|
queuebuf_free(c->q);
|
||||||
c->q = NULL;
|
c->q = NULL;
|
||||||
ibc_send(&c->c);
|
broadcast_send(&c->c);
|
||||||
if(c->cb->sent) {
|
if(c->cb->sent) {
|
||||||
c->cb->sent(c);
|
c->cb->sent(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct ibc_callbacks ibc = { recv };
|
static const struct broadcast_callbacks broadcast = { recv };
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
ipolite_open(struct ipolite_conn *c, uint16_t channel,
|
ipolite_open(struct ipolite_conn *c, uint16_t channel,
|
||||||
const struct ipolite_callbacks *cb)
|
const struct ipolite_callbacks *cb)
|
||||||
{
|
{
|
||||||
ibc_open(&c->c, channel, &ibc);
|
broadcast_open(&c->c, channel, &broadcast);
|
||||||
c->cb = cb;
|
c->cb = cb;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
ipolite_close(struct ipolite_conn *c)
|
ipolite_close(struct ipolite_conn *c)
|
||||||
{
|
{
|
||||||
ibc_close(&c->c);
|
broadcast_close(&c->c);
|
||||||
ctimer_stop(&c->t);
|
ctimer_stop(&c->t);
|
||||||
if(c->q != NULL) {
|
if(c->q != NULL) {
|
||||||
queuebuf_free(c->q);
|
queuebuf_free(c->q);
|
||||||
@ -138,7 +138,7 @@ ipolite_send(struct ipolite_conn *c, clock_time_t interval, uint8_t hdrsize)
|
|||||||
if(interval == 0) {
|
if(interval == 0) {
|
||||||
PRINTF("%d.%d: ipolite_send: interval 0\n",
|
PRINTF("%d.%d: ipolite_send: interval 0\n",
|
||||||
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1]);
|
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1]);
|
||||||
ibc_send(&c->c);
|
broadcast_send(&c->c);
|
||||||
if(c->cb->sent) {
|
if(c->cb->sent) {
|
||||||
c->cb->sent(c);
|
c->cb->sent(c);
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: ipolite.h,v 1.3 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: ipolite.h,v 1.4 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,7 +59,7 @@
|
|||||||
#ifndef __IPOLITE_H__
|
#ifndef __IPOLITE_H__
|
||||||
#define __IPOLITE_H__
|
#define __IPOLITE_H__
|
||||||
|
|
||||||
#include "net/rime/ibc.h"
|
#include "net/rime/broadcast.h"
|
||||||
#include "net/rime/ctimer.h"
|
#include "net/rime/ctimer.h"
|
||||||
#include "net/rime/queuebuf.h"
|
#include "net/rime/queuebuf.h"
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ struct ipolite_callbacks {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ipolite_conn {
|
struct ipolite_conn {
|
||||||
struct ibc_conn c;
|
struct broadcast_conn c;
|
||||||
const struct ipolite_callbacks *cb;
|
const struct ipolite_callbacks *cb;
|
||||||
struct ctimer t;
|
struct ctimer t;
|
||||||
struct queuebuf *q;
|
struct queuebuf *q;
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: mh.c,v 1.10 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: mh.c,v 1.11 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,7 +67,7 @@ struct data_hdr {
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
data_packet_received(struct uc_conn *uc, rimeaddr_t *from)
|
data_packet_received(struct unicast_conn *uc, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
struct mh_conn *c = (struct mh_conn *)uc;
|
struct mh_conn *c = (struct mh_conn *)uc;
|
||||||
struct data_hdr msg;
|
struct data_hdr msg;
|
||||||
@ -98,25 +98,25 @@ data_packet_received(struct uc_conn *uc, rimeaddr_t *from)
|
|||||||
}
|
}
|
||||||
if(nexthop) {
|
if(nexthop) {
|
||||||
PRINTF("forwarding to %d.%d\n", nexthop->u8[0], nexthop->u8[1]);
|
PRINTF("forwarding to %d.%d\n", nexthop->u8[0], nexthop->u8[1]);
|
||||||
uc_send(&c->c, nexthop);
|
unicast_send(&c->c, nexthop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct uc_callbacks data_callbacks = { data_packet_received };
|
static const struct unicast_callbacks data_callbacks = { data_packet_received };
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
mh_open(struct mh_conn *c, uint16_t channel,
|
mh_open(struct mh_conn *c, uint16_t channel,
|
||||||
const struct mh_callbacks *callbacks)
|
const struct mh_callbacks *callbacks)
|
||||||
{
|
{
|
||||||
uc_open(&c->c, channel, &data_callbacks);
|
unicast_open(&c->c, channel, &data_callbacks);
|
||||||
c->cb = callbacks;
|
c->cb = callbacks;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
mh_close(struct mh_conn *c)
|
mh_close(struct mh_conn *c)
|
||||||
{
|
{
|
||||||
uc_close(&c->c);
|
unicast_close(&c->c);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
@ -142,7 +142,7 @@ mh_send(struct mh_conn *c, rimeaddr_t *to)
|
|||||||
rimeaddr_copy(&hdr->dest, to);
|
rimeaddr_copy(&hdr->dest, to);
|
||||||
rimeaddr_copy(&hdr->originator, &rimeaddr_node_addr);
|
rimeaddr_copy(&hdr->originator, &rimeaddr_node_addr);
|
||||||
hdr->hops = 1;
|
hdr->hops = 1;
|
||||||
uc_send(&c->c, nexthop);
|
unicast_send(&c->c, nexthop);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: mh.h,v 1.6 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: mh.h,v 1.7 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,7 +61,7 @@
|
|||||||
#ifndef __MH_H__
|
#ifndef __MH_H__
|
||||||
#define __MH_H__
|
#define __MH_H__
|
||||||
|
|
||||||
#include "net/rime/uc.h"
|
#include "net/rime/unicast.h"
|
||||||
#include "net/rime/rimeaddr.h"
|
#include "net/rime/rimeaddr.h"
|
||||||
|
|
||||||
struct mh_conn;
|
struct mh_conn;
|
||||||
@ -79,7 +79,7 @@ struct mh_callbacks {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct mh_conn {
|
struct mh_conn {
|
||||||
struct uc_conn c;
|
struct unicast_conn c;
|
||||||
const struct mh_callbacks *cb;
|
const struct mh_callbacks *cb;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: neighbor-discovery.c,v 1.5 2008/02/25 02:14:34 adamdunkels Exp $
|
* $Id: neighbor-discovery.c,v 1.6 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -71,9 +71,9 @@ struct adv_msg {
|
|||||||
|
|
||||||
#define MAX_HOPLIM 10
|
#define MAX_HOPLIM 10
|
||||||
|
|
||||||
#define MAX_INTERVAL CLOCK_SECOND * 60
|
/*#define MAX_INTERVAL CLOCK_SECOND * 60
|
||||||
#define MIN_INTERVAL CLOCK_SECOND * 10
|
#define MIN_INTERVAL CLOCK_SECOND * 10
|
||||||
#define NEW_VAL_INTERVAL CLOCK_SECOND * 2
|
#define NEW_VAL_INTERVAL CLOCK_SECOND * 2*/
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
@ -125,12 +125,12 @@ send_timer(void *ptr)
|
|||||||
{
|
{
|
||||||
struct neighbor_discovery_conn *tc = ptr;
|
struct neighbor_discovery_conn *tc = ptr;
|
||||||
|
|
||||||
send_adv(tc, MAX_INTERVAL);
|
send_adv(tc, tc->max_interval);
|
||||||
/* ctimer_set(&tc->t,
|
/* ctimer_set(&tc->t,
|
||||||
MIN_INTERVAL + random_rand() % (MAX_INTERVAL - MIN_INTERVAL),
|
MIN_INTERVAL + random_rand() % (MAX_INTERVAL - MIN_INTERVAL),
|
||||||
send_timer, tc);*/
|
send_timer, tc);*/
|
||||||
ctimer_set(&tc->t,
|
ctimer_set(&tc->t,
|
||||||
MAX_INTERVAL,
|
tc->max_interval,
|
||||||
send_timer, tc);
|
send_timer, tc);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -141,11 +141,17 @@ static const struct ipolite_callbacks ipolite_callbacks =
|
|||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
neighbor_discovery_open(struct neighbor_discovery_conn *c, uint16_t channel,
|
neighbor_discovery_open(struct neighbor_discovery_conn *c, uint16_t channel,
|
||||||
const struct neighbor_discovery_callbacks *cb)
|
clock_time_t initial,
|
||||||
|
clock_time_t min,
|
||||||
|
clock_time_t max,
|
||||||
|
const struct neighbor_discovery_callbacks *cb)
|
||||||
{
|
{
|
||||||
/* ibc_open(&c->c, channel, &ibc_callbacks);*/
|
/* ibc_open(&c->c, channel, &ibc_callbacks);*/
|
||||||
ipolite_open(&c->c, channel, &ipolite_callbacks);
|
ipolite_open(&c->c, channel, &ipolite_callbacks);
|
||||||
c->u = cb;
|
c->u = cb;
|
||||||
|
c->initial_interval = initial;
|
||||||
|
c->min_interval = min;
|
||||||
|
c->max_interval = max;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
@ -161,12 +167,12 @@ neighbor_discovery_start(struct neighbor_discovery_conn *c, uint16_t val)
|
|||||||
{
|
{
|
||||||
if(val < c->val) {
|
if(val < c->val) {
|
||||||
c->val = val;
|
c->val = val;
|
||||||
send_adv(c, NEW_VAL_INTERVAL);
|
send_adv(c, c->initial_interval);
|
||||||
ctimer_set(&c->t, NEW_VAL_INTERVAL, send_timer, c);
|
ctimer_set(&c->t, c->initial_interval, send_timer, c);
|
||||||
} else {
|
} else {
|
||||||
c->val = val;
|
c->val = val;
|
||||||
send_adv(c, MIN_INTERVAL);
|
send_adv(c, c->min_interval);
|
||||||
ctimer_set(&c->t, MIN_INTERVAL, send_timer, c);
|
ctimer_set(&c->t, c->min_interval, send_timer, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: neighbor-discovery.h,v 1.4 2008/02/03 21:12:44 adamdunkels Exp $
|
* $Id: neighbor-discovery.h,v 1.5 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,7 +60,7 @@
|
|||||||
#ifndef __NEIGHBOR_DISCOVERY_H__
|
#ifndef __NEIGHBOR_DISCOVERY_H__
|
||||||
#define __NEIGHBOR_DISCOVERY_H__
|
#define __NEIGHBOR_DISCOVERY_H__
|
||||||
|
|
||||||
#include "net/rime/ibc.h"
|
#include "net/rime/broadcast.h"
|
||||||
#include "net/rime/ipolite.h"
|
#include "net/rime/ipolite.h"
|
||||||
|
|
||||||
struct neighbor_discovery_conn;
|
struct neighbor_discovery_conn;
|
||||||
@ -72,15 +72,19 @@ struct neighbor_discovery_callbacks {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct neighbor_discovery_conn {
|
struct neighbor_discovery_conn {
|
||||||
/* struct ibc_conn c;*/
|
/* struct broadcast_conn c;*/
|
||||||
struct ipolite_conn c;
|
struct ipolite_conn c;
|
||||||
const struct neighbor_discovery_callbacks *u;
|
const struct neighbor_discovery_callbacks *u;
|
||||||
struct ctimer t;
|
struct ctimer t;
|
||||||
|
clock_time_t initial_interval, min_interval, max_interval;
|
||||||
uint16_t val;
|
uint16_t val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void neighbor_discovery_open(struct neighbor_discovery_conn *c,
|
void neighbor_discovery_open(struct neighbor_discovery_conn *c,
|
||||||
uint16_t channel,
|
uint16_t channel,
|
||||||
|
clock_time_t initial,
|
||||||
|
clock_time_t min,
|
||||||
|
clock_time_t max,
|
||||||
const struct neighbor_discovery_callbacks *u);
|
const struct neighbor_discovery_callbacks *u);
|
||||||
void neighbor_discovery_close(struct neighbor_discovery_conn *c);
|
void neighbor_discovery_close(struct neighbor_discovery_conn *c);
|
||||||
|
|
||||||
|
@ -33,7 +33,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.9 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: route-discovery.c,v 1.10 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -112,7 +112,7 @@ send_rrep(struct route_discovery_conn *c, rimeaddr_t *dest)
|
|||||||
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
||||||
dest->u8[0],dest->u8[1],
|
dest->u8[0],dest->u8[1],
|
||||||
rt->nexthop.u8[0],rt->nexthop.u8[1]);
|
rt->nexthop.u8[0],rt->nexthop.u8[1]);
|
||||||
uc_send(&c->rrepconn, &rt->nexthop);
|
unicast_send(&c->rrepconn, &rt->nexthop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -137,7 +137,7 @@ insert_route(rimeaddr_t *originator, rimeaddr_t *last_hop, uint8_t hops)
|
|||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
rrep_packet_received(struct uc_conn *uc, rimeaddr_t *from)
|
rrep_packet_received(struct unicast_conn *uc, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
struct rrep_hdr *msg = rimebuf_dataptr();
|
struct rrep_hdr *msg = rimebuf_dataptr();
|
||||||
struct route_entry *rt;
|
struct route_entry *rt;
|
||||||
@ -166,7 +166,7 @@ rrep_packet_received(struct uc_conn *uc, rimeaddr_t *from)
|
|||||||
if(rt != NULL) {
|
if(rt != NULL) {
|
||||||
PRINTF("forwarding to %d\n", rt->nexthop.u16[0]);
|
PRINTF("forwarding to %d\n", rt->nexthop.u16[0]);
|
||||||
msg->hops++;
|
msg->hops++;
|
||||||
uc_send(&c->rrepconn, &rt->nexthop);
|
unicast_send(&c->rrepconn, &rt->nexthop);
|
||||||
} else {
|
} else {
|
||||||
PRINTF("%d: no route to %d\n", rimeaddr_node_addr.u16[0], msg->dest.u16[0]);
|
PRINTF("%d: no route to %d\n", rimeaddr_node_addr.u16[0], msg->dest.u16[0]);
|
||||||
}
|
}
|
||||||
@ -218,7 +218,7 @@ rreq_packet_received(struct nf_conn *nf, rimeaddr_t *from,
|
|||||||
return 0; /* Don't forward packet. */
|
return 0; /* Don't forward packet. */
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct uc_callbacks rrep_callbacks = {rrep_packet_received};
|
static const struct unicast_callbacks rrep_callbacks = {rrep_packet_received};
|
||||||
static const struct nf_callbacks rreq_callbacks = {rreq_packet_received, NULL, NULL};
|
static const struct nf_callbacks rreq_callbacks = {rreq_packet_received, NULL, NULL};
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
@ -228,14 +228,14 @@ route_discovery_open(struct route_discovery_conn *c,
|
|||||||
const struct route_discovery_callbacks *callbacks)
|
const struct route_discovery_callbacks *callbacks)
|
||||||
{
|
{
|
||||||
nf_open(&c->rreqconn, time, channels + 0, &rreq_callbacks);
|
nf_open(&c->rreqconn, time, channels + 0, &rreq_callbacks);
|
||||||
uc_open(&c->rrepconn, channels + 1, &rrep_callbacks);
|
unicast_open(&c->rrepconn, channels + 1, &rrep_callbacks);
|
||||||
c->cb = callbacks;
|
c->cb = callbacks;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
route_discovery_close(struct route_discovery_conn *c)
|
route_discovery_close(struct route_discovery_conn *c)
|
||||||
{
|
{
|
||||||
uc_close(&c->rrepconn);
|
unicast_close(&c->rrepconn);
|
||||||
nf_close(&c->rreqconn);
|
nf_close(&c->rreqconn);
|
||||||
ctimer_stop(&c->t);
|
ctimer_stop(&c->t);
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,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.5 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: route-discovery.h,v 1.6 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,7 +58,7 @@
|
|||||||
#ifndef __ROUTE_DISCOVERY_H__
|
#ifndef __ROUTE_DISCOVERY_H__
|
||||||
#define __ROUTE_DISCOVERY_H__
|
#define __ROUTE_DISCOVERY_H__
|
||||||
|
|
||||||
#include "net/rime/uc.h"
|
#include "net/rime/unicast.h"
|
||||||
#include "net/rime/nf.h"
|
#include "net/rime/nf.h"
|
||||||
|
|
||||||
struct route_discovery_conn;
|
struct route_discovery_conn;
|
||||||
@ -72,7 +72,7 @@ struct route_discovery_callbacks {
|
|||||||
|
|
||||||
struct route_discovery_conn {
|
struct route_discovery_conn {
|
||||||
struct nf_conn rreqconn;
|
struct nf_conn rreqconn;
|
||||||
struct uc_conn rrepconn;
|
struct unicast_conn rrepconn;
|
||||||
struct ctimer t;
|
struct ctimer t;
|
||||||
rimeaddr_t last_rreq_originator;
|
rimeaddr_t last_rreq_originator;
|
||||||
uint16_t last_rreq_id;
|
uint16_t last_rreq_id;
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: sabc.h,v 1.8 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: sabc.h,v 1.9 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,7 +61,7 @@
|
|||||||
#ifndef __SABC_H__
|
#ifndef __SABC_H__
|
||||||
#define __SABC_H__
|
#define __SABC_H__
|
||||||
|
|
||||||
#include "net/rime/uc.h"
|
#include "net/rime/abc.h"
|
||||||
#include "net/rime/ctimer.h"
|
#include "net/rime/ctimer.h"
|
||||||
#include "net/rime/queuebuf.h"
|
#include "net/rime/queuebuf.h"
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: sibc.c,v 1.7 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: sibc.c,v 1.8 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -49,29 +49,29 @@
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
recv_from_ibc(struct ibc_conn *ibc, rimeaddr_t *from)
|
recv_from_broadcast(struct broadcast_conn *ibc, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
register struct sibc_conn *c = (struct sibc_conn *)ibc;
|
register struct sibc_conn *c = (struct sibc_conn *)ibc;
|
||||||
/* DEBUGF(3, "sibc: recv_from_ibc from %d\n", from_id);*/
|
/* DEBUGF(3, "sibc: recv_from_broadcast from %d\n", from_id);*/
|
||||||
if(c->u->recv != NULL) {
|
if(c->u->recv != NULL) {
|
||||||
c->u->recv(c, from);
|
c->u->recv(c, from);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct ibc_callbacks sibc = {recv_from_ibc};
|
static const struct broadcast_callbacks sibc = {recv_from_broadcast};
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
sibc_open(struct sibc_conn *c, uint16_t channel,
|
sibc_open(struct sibc_conn *c, uint16_t channel,
|
||||||
const struct sibc_callbacks *u)
|
const struct sibc_callbacks *u)
|
||||||
{
|
{
|
||||||
ibc_open(&c->c, channel, &sibc);
|
broadcast_open(&c->c, channel, &sibc);
|
||||||
c->u = u;
|
c->u = u;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
sibc_close(struct sibc_conn *c)
|
sibc_close(struct sibc_conn *c)
|
||||||
{
|
{
|
||||||
ibc_close(&c->c);
|
broadcast_close(&c->c);
|
||||||
ctimer_stop(&c->t);
|
ctimer_stop(&c->t);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -82,7 +82,7 @@ send(void *ptr)
|
|||||||
|
|
||||||
/* DEBUGF(3, "sibc: send()\n");*/
|
/* DEBUGF(3, "sibc: send()\n");*/
|
||||||
queuebuf_to_rimebuf(c->buf);
|
queuebuf_to_rimebuf(c->buf);
|
||||||
ibc_send(&c->c);
|
broadcast_send(&c->c);
|
||||||
ctimer_reset(&c->t);
|
ctimer_reset(&c->t);
|
||||||
if(c->u->sent != NULL) {
|
if(c->u->sent != NULL) {
|
||||||
c->u->sent(c);
|
c->u->sent(c);
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: sibc.h,v 1.7 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: sibc.h,v 1.8 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,7 +61,7 @@
|
|||||||
#ifndef __SIBC_H__
|
#ifndef __SIBC_H__
|
||||||
#define __SIBC_H__
|
#define __SIBC_H__
|
||||||
|
|
||||||
#include "net/rime/uc.h"
|
#include "net/rime/broadcast.h"
|
||||||
#include "net/rime/ctimer.h"
|
#include "net/rime/ctimer.h"
|
||||||
#include "net/rime/queuebuf.h"
|
#include "net/rime/queuebuf.h"
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ struct sibc_callbacks {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct sibc_conn {
|
struct sibc_conn {
|
||||||
struct ibc_conn c;
|
struct broadcast_conn c;
|
||||||
struct ctimer t;
|
struct ctimer t;
|
||||||
struct queuebuf *buf;
|
struct queuebuf *buf;
|
||||||
const struct sibc_callbacks *u;
|
const struct sibc_callbacks *u;
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: suc.c,v 1.12 2008/02/24 22:05:27 adamdunkels Exp $
|
* $Id: suc.c,v 1.13 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
recv_from_uc(struct uc_conn *uc, rimeaddr_t *from)
|
recv_from_uc(struct unicast_conn *uc, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
register struct suc_conn *c = (struct suc_conn *)uc;
|
register struct suc_conn *c = (struct suc_conn *)uc;
|
||||||
PRINTF("%d.%d: suc: recv_from_uc from %d.%d\n",
|
PRINTF("%d.%d: suc: recv_from_uc from %d.%d\n",
|
||||||
@ -68,20 +68,20 @@ recv_from_uc(struct uc_conn *uc, rimeaddr_t *from)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct uc_callbacks suc = {recv_from_uc};
|
static const struct unicast_callbacks suc = {recv_from_uc};
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
suc_open(struct suc_conn *c, uint16_t channel,
|
suc_open(struct suc_conn *c, uint16_t channel,
|
||||||
const struct suc_callbacks *u)
|
const struct suc_callbacks *u)
|
||||||
{
|
{
|
||||||
uc_open(&c->c, channel, &suc);
|
unicast_open(&c->c, channel, &suc);
|
||||||
c->u = u;
|
c->u = u;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
suc_close(struct suc_conn *c)
|
suc_close(struct suc_conn *c)
|
||||||
{
|
{
|
||||||
uc_close(&c->c);
|
unicast_close(&c->c);
|
||||||
ctimer_stop(&c->t);
|
ctimer_stop(&c->t);
|
||||||
if(c->buf != NULL) {
|
if(c->buf != NULL) {
|
||||||
queuebuf_free(c->buf);
|
queuebuf_free(c->buf);
|
||||||
@ -103,7 +103,7 @@ send(void *ptr)
|
|||||||
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
||||||
c->receiver.u8[0], c->receiver.u8[1]);
|
c->receiver.u8[0], c->receiver.u8[1]);
|
||||||
queuebuf_to_rimebuf(c->buf);
|
queuebuf_to_rimebuf(c->buf);
|
||||||
uc_send(&c->c, &c->receiver);
|
unicast_send(&c->c, &c->receiver);
|
||||||
suc_set_timer(c, CLOCK_SECOND);
|
suc_set_timer(c, CLOCK_SECOND);
|
||||||
if(c->u->sent != NULL) {
|
if(c->u->sent != NULL) {
|
||||||
c->u->sent(c);
|
c->u->sent(c);
|
||||||
@ -133,7 +133,7 @@ suc_send_stubborn(struct suc_conn *c, rimeaddr_t *receiver,
|
|||||||
PRINTF("%d.%d: suc_send_stubborn to %d.%d\n",
|
PRINTF("%d.%d: suc_send_stubborn to %d.%d\n",
|
||||||
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
||||||
c->receiver.u8[0],c->receiver.u8[1]);
|
c->receiver.u8[0],c->receiver.u8[1]);
|
||||||
uc_send(&c->c, &c->receiver);
|
unicast_send(&c->c, &c->receiver);
|
||||||
if(c->u->sent != NULL) {
|
if(c->u->sent != NULL) {
|
||||||
c->u->sent(c);
|
c->u->sent(c);
|
||||||
}
|
}
|
||||||
@ -148,7 +148,7 @@ suc_send(struct suc_conn *c, rimeaddr_t *receiver)
|
|||||||
PRINTF("%d.%d: suc_send to %d.%d\n",
|
PRINTF("%d.%d: suc_send to %d.%d\n",
|
||||||
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
||||||
receiver->u8[0], receiver->u8[1]);
|
receiver->u8[0], receiver->u8[1]);
|
||||||
return uc_send(&c->c, receiver);
|
return unicast_send(&c->c, receiver);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: suc.h,v 1.11 2008/02/25 02:14:35 adamdunkels Exp $
|
* $Id: suc.h,v 1.12 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,13 +58,13 @@
|
|||||||
#ifndef __SUC_H__
|
#ifndef __SUC_H__
|
||||||
#define __SUC_H__
|
#define __SUC_H__
|
||||||
|
|
||||||
#include "net/rime/uc.h"
|
#include "net/rime/unicast.h"
|
||||||
#include "net/rime/ctimer.h"
|
#include "net/rime/ctimer.h"
|
||||||
#include "net/rime/queuebuf.h"
|
#include "net/rime/queuebuf.h"
|
||||||
|
|
||||||
struct suc_conn;
|
struct suc_conn;
|
||||||
|
|
||||||
#define SUC_ATTRIBUTES UC_ATTRIBUTES
|
#define SUC_ATTRIBUTES UNICAST_ATTRIBUTES
|
||||||
|
|
||||||
struct suc_callbacks {
|
struct suc_callbacks {
|
||||||
void (* recv)(struct suc_conn *c, rimeaddr_t *from);
|
void (* recv)(struct suc_conn *c, rimeaddr_t *from);
|
||||||
@ -72,7 +72,7 @@ struct suc_callbacks {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct suc_conn {
|
struct suc_conn {
|
||||||
struct uc_conn c;
|
struct unicast_conn c;
|
||||||
struct ctimer t;
|
struct ctimer t;
|
||||||
struct queuebuf *buf;
|
struct queuebuf *buf;
|
||||||
const struct suc_callbacks *u;
|
const struct suc_callbacks *u;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: uc.c,v 1.14 2008/02/25 02:14:35 adamdunkels Exp $
|
* $Id: unicast.c,v 1.1 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,12 +45,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "net/rime.h"
|
#include "net/rime.h"
|
||||||
#include "net/rime/uc.h"
|
#include "net/rime/unicast.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
static const struct rimebuf_attrlist attributes[] =
|
static const struct rimebuf_attrlist attributes[] =
|
||||||
{
|
{
|
||||||
UC_ATTRIBUTES
|
UNICAST_ATTRIBUTES
|
||||||
RIMEBUF_ATTR_LAST
|
RIMEBUF_ATTR_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -64,11 +64,11 @@ static const struct rimebuf_attrlist attributes[] =
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
recv_from_ibc(struct ibc_conn *ibc, rimeaddr_t *from)
|
recv_from_broadcast(struct broadcast_conn *broadcast, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
struct uc_conn *c = (struct uc_conn *)ibc;
|
struct unicast_conn *c = (struct unicast_conn *)broadcast;
|
||||||
|
|
||||||
PRINTF("%d.%d: uc: recv_from_ibc, receiver %d.%d\n",
|
PRINTF("%d.%d: uc: recv_from_broadcast, receiver %d.%d\n",
|
||||||
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
||||||
rimebuf_addr(RIMEBUF_ADDR_RECEIVER)->u8[0],
|
rimebuf_addr(RIMEBUF_ADDR_RECEIVER)->u8[0],
|
||||||
rimebuf_addr(RIMEBUF_ADDR_RECEIVER)->u8[1]);
|
rimebuf_addr(RIMEBUF_ADDR_RECEIVER)->u8[1]);
|
||||||
@ -77,31 +77,31 @@ recv_from_ibc(struct ibc_conn *ibc, rimeaddr_t *from)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct ibc_callbacks uc = {recv_from_ibc};
|
static const struct broadcast_callbacks uc = {recv_from_broadcast};
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
uc_open(struct uc_conn *c, uint16_t channel,
|
unicast_open(struct unicast_conn *c, uint16_t channel,
|
||||||
const struct uc_callbacks *u)
|
const struct unicast_callbacks *u)
|
||||||
{
|
{
|
||||||
ibc_open(&c->c, channel, &uc);
|
broadcast_open(&c->c, channel, &uc);
|
||||||
c->u = u;
|
c->u = u;
|
||||||
channel_set_attributes(channel, attributes);
|
channel_set_attributes(channel, attributes);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
uc_close(struct uc_conn *c)
|
unicast_close(struct unicast_conn *c)
|
||||||
{
|
{
|
||||||
ibc_close(&c->c);
|
broadcast_close(&c->c);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
uc_send(struct uc_conn *c, const rimeaddr_t *receiver)
|
unicast_send(struct unicast_conn *c, const rimeaddr_t *receiver)
|
||||||
{
|
{
|
||||||
PRINTF("%d.%d: uc_send to %d.%d\n",
|
PRINTF("%d.%d: unicast_send to %d.%d\n",
|
||||||
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
|
||||||
receiver->u8[0], receiver->u8[1]);
|
receiver->u8[0], receiver->u8[1]);
|
||||||
rimebuf_set_addr(RIMEBUF_ADDR_RECEIVER, receiver);
|
rimebuf_set_addr(RIMEBUF_ADDR_RECEIVER, receiver);
|
||||||
return ibc_send(&c->c);
|
return broadcast_send(&c->c);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/** @} */
|
/** @} */
|
@ -45,7 +45,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: uc.h,v 1.8 2008/02/25 02:14:35 adamdunkels Exp $
|
* $Id: unicast.h,v 1.1 2008/06/26 11:19:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -55,31 +55,31 @@
|
|||||||
* Adam Dunkels <adam@sics.se>
|
* Adam Dunkels <adam@sics.se>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __UC_H__
|
#ifndef __UNICAST_H__
|
||||||
#define __UC_H__
|
#define __UNICAST_H__
|
||||||
|
|
||||||
#include "net/rime/ibc.h"
|
#include "net/rime/broadcast.h"
|
||||||
|
|
||||||
struct uc_conn;
|
struct unicast_conn;
|
||||||
|
|
||||||
#define UC_ATTRIBUTES { RIMEBUF_ADDR_RECEIVER, RIMEBUF_ADDRSIZE }, \
|
#define UNICAST_ATTRIBUTES { RIMEBUF_ADDR_RECEIVER, RIMEBUF_ADDRSIZE }, \
|
||||||
IBC_ATTRIBUTES
|
BROADCAST_ATTRIBUTES
|
||||||
|
|
||||||
struct uc_callbacks {
|
struct unicast_callbacks {
|
||||||
void (* recv)(struct uc_conn *c, rimeaddr_t *from);
|
void (* recv)(struct unicast_conn *c, rimeaddr_t *from);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct uc_conn {
|
struct unicast_conn {
|
||||||
struct ibc_conn c;
|
struct broadcast_conn c;
|
||||||
const struct uc_callbacks *u;
|
const struct unicast_callbacks *u;
|
||||||
};
|
};
|
||||||
|
|
||||||
void uc_open(struct uc_conn *c, uint16_t channel,
|
void unicast_open(struct unicast_conn *c, uint16_t channel,
|
||||||
const struct uc_callbacks *u);
|
const struct unicast_callbacks *u);
|
||||||
void uc_close(struct uc_conn *c);
|
void unicast_close(struct unicast_conn *c);
|
||||||
|
|
||||||
int uc_send(struct uc_conn *c, const rimeaddr_t *receiver);
|
int unicast_send(struct unicast_conn *c, const rimeaddr_t *receiver);
|
||||||
|
|
||||||
#endif /* __UC_H__ */
|
#endif /* __UNICAST_H__ */
|
||||||
/** @} */
|
/** @} */
|
||||||
/** @} */
|
/** @} */
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: uip-over-mesh.c,v 1.8 2008/05/14 19:20:28 adamdunkels Exp $
|
* $Id: uip-over-mesh.c,v 1.9 2008/06/26 11:19:40 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,7 +50,7 @@
|
|||||||
static struct queuebuf *queued_packet;
|
static struct queuebuf *queued_packet;
|
||||||
static rimeaddr_t queued_receiver;
|
static rimeaddr_t queued_receiver;
|
||||||
static struct route_discovery_conn route_discovery;
|
static struct route_discovery_conn route_discovery;
|
||||||
static struct uc_conn dataconn;
|
static struct unicast_conn dataconn;
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
@ -68,7 +68,7 @@ static uip_ipaddr_t netaddr, netmask;
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
recv_data(struct uc_conn *c, rimeaddr_t *from)
|
recv_data(struct unicast_conn *c, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
uip_len = rimebuf_copyto(&uip_buf[UIP_LLH_LEN]);
|
uip_len = rimebuf_copyto(&uip_buf[UIP_LLH_LEN]);
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ send_data(rimeaddr_t *next)
|
|||||||
PRINTF("uip-over-mesh: %d.%d: send_data with len %d\n",
|
PRINTF("uip-over-mesh: %d.%d: send_data with len %d\n",
|
||||||
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
rimeaddr_node_addr.u8[0], rimeaddr_node_addr.u8[1],
|
||||||
rimebuf_totlen());
|
rimebuf_totlen());
|
||||||
uc_send(&dataconn, next);
|
unicast_send(&dataconn, next);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
@ -118,7 +118,7 @@ timedout(struct route_discovery_conn *c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const struct uc_callbacks data_callbacks = { recv_data };
|
static const struct unicast_callbacks data_callbacks = { recv_data };
|
||||||
static const struct route_discovery_callbacks rdc = { new_route, timedout };
|
static const struct route_discovery_callbacks rdc = { new_route, timedout };
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
@ -130,7 +130,7 @@ uip_over_mesh_init(u16_t channels)
|
|||||||
uip_hostaddr.u8[0], uip_hostaddr.u8[1],
|
uip_hostaddr.u8[0], uip_hostaddr.u8[1],
|
||||||
uip_hostaddr.u8[2], uip_hostaddr.u8[3]);
|
uip_hostaddr.u8[2], uip_hostaddr.u8[3]);
|
||||||
|
|
||||||
uc_open(&dataconn, channels, &data_callbacks);
|
unicast_open(&dataconn, channels, &data_callbacks);
|
||||||
route_discovery_open(&route_discovery, CLOCK_SECOND / 4,
|
route_discovery_open(&route_discovery, CLOCK_SECOND / 4,
|
||||||
channels + 1, &rdc);
|
channels + 1, &rdc);
|
||||||
/* tcpip_set_forwarding(1);*/
|
/* tcpip_set_forwarding(1);*/
|
||||||
|
@ -4,6 +4,6 @@ TARGET=netsim
|
|||||||
endif
|
endif
|
||||||
all: example-abc example-mesh example-collect example-trickle example-polite \
|
all: example-abc example-mesh example-collect example-trickle example-polite \
|
||||||
example-rudolph0 example-rudolph1 example-rudolph2 example-rucb \
|
example-rudolph0 example-rudolph1 example-rudolph2 example-rucb \
|
||||||
example-ruc example-uc
|
example-ruc example-unicast
|
||||||
|
|
||||||
include $(CONTIKI)/Makefile.include
|
include $(CONTIKI)/Makefile.include
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: example-uc.c,v 1.1 2008/01/25 18:00:51 adamdunkels Exp $
|
* $Id: example-unicast.c,v 1.1 2008/06/26 11:20:22 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,25 +48,25 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
PROCESS(test_uc_process, "uc test");
|
PROCESS(example_unicast_process, "Example unicast");
|
||||||
AUTOSTART_PROCESSES(&test_uc_process);
|
AUTOSTART_PROCESSES(&example_unicast_process);
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
recv_uc(struct uc_conn *c, rimeaddr_t *from)
|
recv_uc(struct unicast_conn *c, rimeaddr_t *from)
|
||||||
{
|
{
|
||||||
printf("uc message received from %d.%d\n",
|
printf("unicast message received from %d.%d\n",
|
||||||
from->u8[0], from->u8[1]);
|
from->u8[0], from->u8[1]);
|
||||||
}
|
}
|
||||||
static const struct uc_callbacks uc_callbacks = {recv_uc};
|
static const struct unicast_callbacks unicast_callbacks = {recv_uc};
|
||||||
static struct uc_conn uc;
|
static struct unicast_conn uc;
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
PROCESS_THREAD(test_uc_process, ev, data)
|
PROCESS_THREAD(example_unicast_process, ev, data)
|
||||||
{
|
{
|
||||||
PROCESS_EXITHANDLER(uc_close(&uc);)
|
PROCESS_EXITHANDLER(unicast_close(&uc);)
|
||||||
|
|
||||||
PROCESS_BEGIN();
|
PROCESS_BEGIN();
|
||||||
|
|
||||||
uc_open(&uc, 128, &uc_callbacks);
|
unicast_open(&uc, 128, &unicast_callbacks);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
static struct etimer et;
|
static struct etimer et;
|
||||||
@ -79,7 +79,7 @@ PROCESS_THREAD(test_uc_process, ev, data)
|
|||||||
rimebuf_copyfrom("Hello", 5);
|
rimebuf_copyfrom("Hello", 5);
|
||||||
addr.u8[0] = 41;
|
addr.u8[0] = 41;
|
||||||
addr.u8[1] = 41;
|
addr.u8[1] = 41;
|
||||||
uc_send(&uc, &addr);
|
unicast_send(&uc, &addr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user