diff --git a/platform/cooja/Makefile.cooja b/platform/cooja/Makefile.cooja index e13199f10..6b90547f0 100644 --- a/platform/cooja/Makefile.cooja +++ b/platform/cooja/Makefile.cooja @@ -1,4 +1,4 @@ -# $Id: Makefile.cooja,v 1.37 2010/03/09 08:12:55 fros4943 Exp $ +# $Id: Makefile.cooja,v 1.38 2010/03/10 12:15:52 fros4943 Exp $ ## The COOJA Simulator Contiki platform Makefile ## @@ -58,9 +58,11 @@ COOJA_INTFS = beep.c button-sensor.c ip.c leds-arch.c moteid.c \ COOJA_CORE = random.c sensors.c leds.c symbols.c +COOJA_NET = uip-driver.c + # (COOJA_SOURCEFILES contains additional sources set from simulator) CONTIKI_TARGET_SOURCEFILES = \ -$(COOJA_BASE) $(COOJA_INTFS) $(COOJA_CORE) $(COOJA_SOURCEFILES) +$(COOJA_BASE) $(COOJA_INTFS) $(COOJA_CORE) $(COOJA_NET) $(COOJA_SOURCEFILES) CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES) @@ -74,6 +76,13 @@ CC = gcc CFLAGSNO = $(EXTRA_CC_ARGS) -Wall -g -I/usr/local/include CFLAGS = $(CFLAGSNO) +ifdef UIP_CONF_IPV6 + CFLAGS += -DWITH_UIP6=1 +endif +ifdef WITH_UIP + CFLAGS += -DWITH_UIP=1 +endif + REDEF_PRINTF=1 # Redefine functions to enable printf()s inside Cooja ### Define custom targets diff --git a/platform/cooja/net/uip-driver.c b/platform/cooja/net/uip-driver.c new file mode 100644 index 000000000..1bbf619fc --- /dev/null +++ b/platform/cooja/net/uip-driver.c @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2010, 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. + * + * $Id: uip-driver.c,v 1.1 2010/03/10 12:15:52 fros4943 Exp $ + */ + +/** + * \file + * A brief description of what this file is + * \author + * Niclas Finne + * Joakim Eriksson + */ + +#include "net/netstack.h" +#include "net/uip.h" +#include "net/tcpip.h" +#include "net/hc.h" +#include "net/rime/packetbuf.h" +#include "net/uip-driver.h" +#include + +/*--------------------------------------------------------------------*/ +uint8_t +uip_driver_send(void) +{ + packetbuf_copyfrom(&uip_buf[UIP_LLH_LEN], uip_len); + + /* XXX we should provide a callback function that is called when the + packet is sent. For now, we just supply a NULL pointer. */ + NETSTACK_MAC.send(NULL, NULL); + return 1; +} +/*--------------------------------------------------------------------*/ +static void +init(void) +{ + /* + * Set out output function as the function to be called from uIP to + * send a packet. + */ + tcpip_set_outputfunc(uip_driver_send); +} +/*--------------------------------------------------------------------*/ +static void +input(void) +{ + if(packetbuf_datalen() > 0 && + packetbuf_datalen() <= UIP_BUFSIZE - UIP_LLH_LEN) { + memcpy(&uip_buf[UIP_LLH_LEN], packetbuf_dataptr(), packetbuf_datalen()); + uip_len = packetbuf_datalen(); + tcpip_input(); + } +} +/*--------------------------------------------------------------------*/ +const struct network_driver uip_driver = { + "uip", + init, + input +}; +/*--------------------------------------------------------------------*/ diff --git a/platform/cooja/net/uip-driver.h b/platform/cooja/net/uip-driver.h new file mode 100644 index 000000000..a9f7e016c --- /dev/null +++ b/platform/cooja/net/uip-driver.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2010, 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. + * + * $Id: uip-driver.h,v 1.1 2010/03/10 12:15:52 fros4943 Exp $ + */ + +/** + * \file + * A brief description of what this file is + * \author + * Niclas Finne + * Joakim Eriksson + */ + +#ifndef __UIP_DRIVER_H__ +#define __UIP_DRIVER_H__ + +#include "net/netstack.h" + +uint8_t uip_driver_send(void); + +extern const struct network_driver uip_driver; + +#endif /* __UIP_DRIVER_H__ */