From ba1dc7105f0e32a576c384809a0e309d0699dbe0 Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Tue, 13 Mar 2007 13:02:33 +0000 Subject: [PATCH] Rime driver running over UDP --- core/net/rime/abc-udp.c | 31 ++++++------------------ core/net/rime/abc-udp.h | 53 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 core/net/rime/abc-udp.h diff --git a/core/net/rime/abc-udp.c b/core/net/rime/abc-udp.c index bcb95bbd1..89a64abdd 100644 --- a/core/net/rime/abc-udp.c +++ b/core/net/rime/abc-udp.c @@ -28,12 +28,12 @@ * * This file is part of the Contiki operating system. * - * $Id: abc-udp.c,v 1.1 2007/02/28 16:38:51 adamdunkels Exp $ + * $Id: abc-udp.c,v 1.2 2007/03/13 13:02:33 adamdunkels Exp $ */ /** * \file - * Implementation of the Rime module Anonymous BroadCast (abc) using UDP local broadcast packets. + * A Rime driver that uses UDP local broadcasts. * \author * Adam Dunkels */ @@ -41,48 +41,31 @@ #include "net/rime.h" #define PORT 8096 - -static u8_t started; +static struct uip_udp_conn *c; /*---------------------------------------------------------------------------*/ PROCESS(abc_udp_process, "abc_udp"); PROCESS_THREAD(abc_udp_process, ev, data) { struct abc_conn *c; + c = uip_udp_new(HTONS(PORT), NULL); PROCESS_BEGIN(); while(1) { PROCESS_WAIT_EVENT_UNTIL(ev == tcpip_event && uip_newdata()); DEBUGF(0, "%d: abc_udp_process: new data %p\n", node_id, data); - c = data; rimebuf_copyfrom(uip_appdata, uip_datalen()); - c->u->recv(c); + abc_input_packet(); } PROCESS_END(); } /*---------------------------------------------------------------------------*/ void -abc_setup(struct abc_conn *c, u16_t channel, - const struct abc_ulayer *u) +abc_arch_send(u8_t *buf, int len) { - if(!started) { - process_start(&abc_udp_process, NULL); - started = 1; - } - PROCESS_CONTEXT_BEGIN(&abc_udp_process); - c->c = udp_broadcast_new(HTONS(PORT + channel), c); - PROCESS_CONTEXT_END(&abc_udp_process); - c->u = u; -} -/*---------------------------------------------------------------------------*/ -int -abc_send(struct abc_conn *c) -{ - DEBUGF(0, "%d: abc_send\n", node_id); - uip_len = rimebuf_copyto(uip_buf); - uip_udp_packet_send(c->c, uip_buf, uip_len); + uip_udp_packet_send(c, uip_buf, uip_len); return 1; } /*---------------------------------------------------------------------------*/ diff --git a/core/net/rime/abc-udp.h b/core/net/rime/abc-udp.h new file mode 100644 index 000000000..6cc501c0d --- /dev/null +++ b/core/net/rime/abc-udp.h @@ -0,0 +1,53 @@ +/* + * 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. + * + * $Id: abc-udp.h,v 1.1 2007/03/13 13:02:33 adamdunkels Exp $ + */ + +/** + * \addtogroup rime + * @{ + */ + +/** + * \file + * Header file for a Rime driver that uses UDP local broadcasts. + * \author + * Adam Dunkels + */ + +#ifndef __ABC_UDP_H__ +#define __ABC_UDP_H__ + +PROCESS_NAME(abc_udp_process); + +#endif /* __ABC_UDP_H__ */ + +/** @} */