From 2a0351afb4f3a1666d17da809af4a0e89ff5ffe9 Mon Sep 17 00:00:00 2001 From: nvt-se Date: Mon, 17 Dec 2007 13:33:09 +0000 Subject: [PATCH] improved uip support and cleaned up the source. --- platform/msb430/Makefile.msb430 | 2 +- platform/msb430/contiki-msb430-main.c | 54 +-------------------- platform/msb430/dev/cc1020-uip.c | 68 +++++++++++++++++++++++++++ platform/msb430/dev/cc1020-uip.h | 39 +++++++++++++++ platform/msb430/init-net-uip.c | 8 +++- 5 files changed, 116 insertions(+), 55 deletions(-) create mode 100644 platform/msb430/dev/cc1020-uip.c create mode 100644 platform/msb430/dev/cc1020-uip.h diff --git a/platform/msb430/Makefile.msb430 b/platform/msb430/Makefile.msb430 index ae517334a..ca077036c 100644 --- a/platform/msb430/Makefile.msb430 +++ b/platform/msb430/Makefile.msb430 @@ -2,7 +2,7 @@ SENSORS = sensors.c irq.c sht11.c #SD = sd.c sd_cache.c sd_erase.c sd_info.c MSB = dma.c infomem.c node-id.c \ msb430-uart1.c rs232.c msb430-slip-arch.c \ - cc1020.c adc.c + cc1020.c cc1020-uip.c adc.c init-net-rime.c CONTIKI_TARGET_DIRS = . dev dev/sd apps net loader ifndef CONTIKI_TARGET_MAIN diff --git a/platform/msb430/contiki-msb430-main.c b/platform/msb430/contiki-msb430-main.c index 87e7c061a..da25ac791 100644 --- a/platform/msb430/contiki-msb430-main.c +++ b/platform/msb430/contiki-msb430-main.c @@ -43,45 +43,13 @@ #include #include +#include "contiki.h" #include "contiki-msb430.h" -#include "sys/procinit.h" -#include "sys/autostart.h" - -#include "dev/adc.h" -#include "dev/dma.h" -#include "dev/sht11.h" - -#include "net/mac/nullmac.h" -#include "net/mac/xmac.h" - -#include "dev/slip.h" - extern volatile bool uart_edge; SENSORS(NULL); -#if WITH_UIP -static struct uip_fw_netif slipif = -{UIP_FW_NETIF(192,168,1,2, 255,255,255,255, slip_send)}; -#else -int -putchar(int c) -{ - rs232_send(c); - return c; -} -#endif /* WITH_UIP */ - -static void -set_rime_addr(void) -{ - rimeaddr_t addr; - - addr.u16[0] = node_id; - rimeaddr_set_node_addr(&addr); -} - static void msb_ports_init(void) { @@ -130,32 +98,14 @@ main(void) /* System services */ process_start(&etimer_process, NULL); - //process_start(&sensors_process, NULL); cc1020_init(cc1020_config_19200); - // network configuration node_id_restore(); - -#if WITH_UIP - uip_init(); - uip_sethostaddr(&slipif.ipaddr); - uip_setnetmask(&slipif.netmask); - uip_fw_default(&slipif); /* Point2point, no default router. */ - tcpip_set_forwarding(0); -#endif /* WITH_UIP */ - nullmac_init(&cc1020_driver); - rime_init(&nullmac_driver); - set_rime_addr(); + init_net(); energest_init(); - -#if WITH_UIP - process_start(&tcpip_process, NULL); - process_start(&uip_fw_process, NULL); /* Start IP output */ - process_start(&slip_process, NULL); -#endif /* WITH_UIP */ #if PROFILE_CONF_ON profile_init(); diff --git a/platform/msb430/dev/cc1020-uip.c b/platform/msb430/dev/cc1020-uip.c new file mode 100644 index 000000000..683e84222 --- /dev/null +++ b/platform/msb430/dev/cc1020-uip.c @@ -0,0 +1,68 @@ +/* + * 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: cc1020-uip.c,v 1.1 2007/12/17 13:33:09 nvt-se Exp $ + */ + +/** + * \file + * Chipcon CC1020 glue driver for uIP + * \author + * Nicolas Tsiftes + */ + +#include "contiki.h" +#include "cc1020.h" +#include "cc1020-uip.h" +#include "net/uip.h" +#include "net/hc.h" + +static void +receiver(const struct radio_driver *d) +{ + uip_len = cc1020_read(&uip_buf[UIP_LLH_LEN], UIP_BUFSIZE - UIP_LLH_LEN); + if(uip_len > 0) { + uip_len = hc_inflate(&uip_buf[UIP_LLH_LEN], uip_len); + tcpip_input(); + } +} + +void +cc1020_uip_init(void) +{ + cc1020_set_receiver(&receiver); +} + +uint8_t +cc1020_uip_send(void) +{ + uip_len = hc_compress(&uip_buf[UIP_LLH_LEN], uip_len); + return cc1020_send(&uip_buf[UIP_LLH_LEN], uip_len); +} diff --git a/platform/msb430/dev/cc1020-uip.h b/platform/msb430/dev/cc1020-uip.h new file mode 100644 index 000000000..0d5e8b59f --- /dev/null +++ b/platform/msb430/dev/cc1020-uip.h @@ -0,0 +1,39 @@ +/* + * 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: cc1020-uip.h,v 1.1 2007/12/17 13:33:09 nvt-se Exp $ + */ +#ifndef CC1020_UIP_H +#define CC1020_UIP_H + +void cc1020_uip_init(void); +uint8_t cc1020_uip_send(void); + +#endif /* !CC1020_UIP_H */ diff --git a/platform/msb430/init-net-uip.c b/platform/msb430/init-net-uip.c index e9bf86613..7689696d6 100644 --- a/platform/msb430/init-net-uip.c +++ b/platform/msb430/init-net-uip.c @@ -38,6 +38,8 @@ */ #include "contiki.h" +#include "contiki-net.h" +#include "node-id.h" #include "dev/slip.h" #include "dev/cc1020-uip.h" @@ -50,6 +52,8 @@ static struct uip_fw_netif wsnif = void init_net(void) { + uip_ipaddr_t hostaddr; + uip_init(); uip_fw_init(); @@ -58,8 +62,8 @@ init_net(void) cc1020_uip_init(); if (node_id > 0) { - uip_sethostaddr(&slipif.ipaddr); - uip_setnetmask(&slipif.netmask); + uip_ipaddr(&hostaddr, 172, 16, 1, node_id); + uip_sethostaddr(&hostaddr); } uip_fw_register(&slipif);