diff --git a/examples/ipv6/slip-radio/Makefile b/examples/ipv6/slip-radio/Makefile index e4176d5e1..5456466ab 100644 --- a/examples/ipv6/slip-radio/Makefile +++ b/examples/ipv6/slip-radio/Makefile @@ -19,5 +19,11 @@ 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 +ifeq ($(TARGET),econotag) + PROJECT_SOURCEFILES += slip-radio-mc1322x.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 965311e04..4a2950c59 100644 --- a/examples/ipv6/slip-radio/project-conf.h +++ b/examples/ipv6/slip-radio/project-conf.h @@ -48,6 +48,11 @@ #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 +#elif CONTIKI_TARGET_ECONOTAG +#define CMD_CONF_HANDLERS slip_radio_cmd_handler,cmd_handler_mc1322x #else #define CMD_CONF_HANDLERS slip_radio_cmd_handler #endif diff --git a/examples/ipv6/slip-radio/slip-radio-mc1322x.c b/examples/ipv6/slip-radio/slip-radio-mc1322x.c new file mode 100644 index 000000000..da518b11c --- /dev/null +++ b/examples/ipv6/slip-radio/slip-radio-mc1322x.c @@ -0,0 +1,61 @@ +/* + * 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 MC1322x radio chip. + */ + +#include "contiki.h" +#include "mc1322x.h" +#include "cmd.h" +#include + +int +cmd_handler_mc1322x(const uint8_t *data, int len) +{ + if(data[0] == '!') { + if(data[1] == 'C') { + printf("mc1322x_cmd: setting channel: %d\n", data[2]); + set_channel(data[2]-11); + return 1; + } + } else if(data[0] == '?') { + if(data[1] == 'C') { + uint8_t buf[4]; + printf("mc1322x_cmd: getting channel: %d\n", data[2]); + buf[0] = '!'; + buf[1] = 'C'; + //Not implemented in MACA driver + buf[2] = 0; + cmd_send(buf, 3); + return 1; + } + } + return 0; +} 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..42ec17628 100644 --- a/examples/ipv6/slip-radio/slip-radio.c +++ b/examples/ipv6/slip-radio/slip-radio.c @@ -59,7 +59,15 @@ uint8_t packet_ids[16]; int packet_pos; static int slip_radio_cmd_handler(const uint8_t *data, int len); + +#if CONTIKI_TARGET_NOOLIBERRY +int cmd_handler_rf230(const uint8_t *data, int len); +#elif CONTIKI_TARGET_ECONOTAG +int cmd_handler_mc1322x(const uint8_t *data, int len); +#else /* Leave CC2420 as default */ int cmd_handler_cc2420(const uint8_t *data, int len); +#endif /* CONTIKI_TARGET */ + /*---------------------------------------------------------------------------*/ #ifdef CMD_CONF_HANDLERS CMD_HANDLERS(CMD_CONF_HANDLERS);