From e05ab215579c2234058f8eccadc664313015b13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Dawans?= Date: Sat, 16 Feb 2013 00:17:17 +0100 Subject: [PATCH] SLIP-radio support for the Nooliberry (RF230 radio) --- examples/ipv6/slip-radio/Makefile | 3 + examples/ipv6/slip-radio/project-conf.h | 3 + examples/ipv6/slip-radio/slip-radio-rf230.c | 72 +++++++++++++++++++++ examples/ipv6/slip-radio/slip-radio.c | 6 ++ 4 files changed, 84 insertions(+) create mode 100644 examples/ipv6/slip-radio/slip-radio-rf230.c diff --git a/examples/ipv6/slip-radio/Makefile b/examples/ipv6/slip-radio/Makefile index f7a755961..79e40ef08 100644 --- a/examples/ipv6/slip-radio/Makefile +++ b/examples/ipv6/slip-radio/Makefile @@ -16,5 +16,8 @@ PROJECT_SOURCEFILES += slip-net.c no-framer.c ifeq ($(TARGET),sky) PROJECT_SOURCEFILES += slip-radio-cc2420.c slip-radio-sky-sensors.c endif +ifeq ($(TARGET),nooliberry) + PROJECT_SOURCEFILES += slip-radio-rf230.c +endif include $(CONTIKI)/Makefile.include diff --git a/examples/ipv6/slip-radio/project-conf.h b/examples/ipv6/slip-radio/project-conf.h index 89ce426d1..7b85082b6 100644 --- a/examples/ipv6/slip-radio/project-conf.h +++ b/examples/ipv6/slip-radio/project-conf.h @@ -48,6 +48,9 @@ #ifdef CONTIKI_TARGET_SKY #define CMD_CONF_HANDLERS slip_radio_cmd_handler,cmd_handler_cc2420 #define SLIP_RADIO_CONF_SENSORS slip_radio_sky_sensors +/* add the cmd_handler_rf230 if TARGET_NOOLIBERRY. Other RF230 platforms can be added */ +#elif CONTIKI_TARGET_NOOLIBERRY +#define CMD_CONF_HANDLERS slip_radio_cmd_handler,cmd_handler_rf230 #else #define CMD_CONF_HANDLERS slip_radio_cmd_handler #endif diff --git a/examples/ipv6/slip-radio/slip-radio-rf230.c b/examples/ipv6/slip-radio/slip-radio-rf230.c new file mode 100644 index 000000000..1f254386d --- /dev/null +++ b/examples/ipv6/slip-radio/slip-radio-rf230.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2011, 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. + * + * Sets up some commands for the RF230 radio. + */ + +#include "contiki.h" +#include "cmd.h" + +#include "radio/rf230/radio.h" +#include "radio/rf230bb/rf230bb.h" + + +#define DEBUG 0 +#if DEBUG +#include +#define PRINTF(FORMAT,args...) printf_P(PSTR(FORMAT),##args) +#define PRINTSHORT(FORMAT,args...) printf_P(PSTR(FORMAT),##args) +#else +#define PRINTF(...) +#define PRINTSHORT(...) +#endif + +int +cmd_handler_rf230(const uint8_t *data, int len) +{ + if(data[0] == '!') { + if(data[1] == 'C') { + PRINTF("CMD: Setting channel: %d\n", data[2]); + rf230_set_channel(data[2]); + return 1; + } + } else if(data[0] == '?') { + if(data[1] == 'C') { + uint8_t buf[4]; + PRINTF("CMD: Getting channel: %d\n", data[2]); + buf[0] = '!'; + buf[1] = 'C'; + buf[2] = rf230_get_channel(); + cmd_send(buf, 3); + return 1; + } + } + return 0; +} diff --git a/examples/ipv6/slip-radio/slip-radio.c b/examples/ipv6/slip-radio/slip-radio.c index a580d1efe..879d1cfb5 100644 --- a/examples/ipv6/slip-radio/slip-radio.c +++ b/examples/ipv6/slip-radio/slip-radio.c @@ -59,7 +59,13 @@ uint8_t packet_ids[16]; int packet_pos; static int slip_radio_cmd_handler(const uint8_t *data, int len); + +#ifdef CONTIKI_TARGET_SKY int cmd_handler_cc2420(const uint8_t *data, int len); +#elif CONTIKI_TARGET_NOOLIBERRY +int cmd_handler_rf230(const uint8_t *data, int len); +#endif /* CONTIKI_TARGET */ + /*---------------------------------------------------------------------------*/ #ifdef CMD_CONF_HANDLERS CMD_HANDLERS(CMD_CONF_HANDLERS);