diff --git a/examples/osd/sensniff/Makefile b/examples/osd/sensniff/Makefile new file mode 100755 index 000000000..37889a44f --- /dev/null +++ b/examples/osd/sensniff/Makefile @@ -0,0 +1,41 @@ +EXE=sensniff +all: $(EXE) + +CONTIKI = ../../.. + +CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\" + +PROJECT_SOURCEFILES += sensniff-rdc.c netstack.c +PROJECTDIRS += pool $(TARGET) + +ifeq ($(TARGET),) + -include Makefile.target + ifeq ($(TARGET),) + TARGET=srf06-cc26xx + $(info TARGET not defined, using target $(TARGET)) + endif +endif + +CONTIKI_WITH_IPV6 = 1 + +include $(CONTIKI)/Makefile.include + +PYTHON ?= python +SENSNIFF = $(CONTIKI)/tools/sensniff/sensniff.py + +ifeq ($(BAUDRATE),) + BAUDRATE = 460800 +endif + +SENSNIFF_FLAGS += -b $(BAUDRATE) + +ifneq ($(PORT),) + SENSNIFF_FLAGS += -d $(PORT) +endif + +sniff: +ifeq ($(wildcard $(SENSNIFF)), ) + $(error Could not find the sensniff script. Did you run 'git submodule update --init' ?") +else + $(PYTHON) $(SENSNIFF) $(SENSNIFF_FLAGS) +endif diff --git a/examples/osd/sensniff/README.md b/examples/osd/sensniff/README.md new file mode 100644 index 000000000..821f3d425 --- /dev/null +++ b/examples/osd/sensniff/README.md @@ -0,0 +1,103 @@ +sensniff Contiki Project +======================== +This example can be used to create an IEEE 802.15.4 wireless sniffer firmware, +meant to be used in parallel with +[sensniff](https://github.com/g-oikonomou/sensniff). + +Running +======= +* Build this example and program your device +* Connect your device to a host +* Run sensniff on your host +* Fire up wireshark and enjoy. + +You can run sensniff manually, or you can simply run `make sniff` from within +this directory. If you choose the latter option, you may have to specify the +port where you device is connected by using the PORT variable. For example, if +your device is connected to `/dev/ttyUSB1` then you should run +`make PORT=/dev/ttyUSB1 sniff`. + +Strt sensniff +'make sniff TARGET=osd-merkur-256 BAUDRATE=38400' + +Start Wireshark +'wireshark -k -i /tmp/sensniff' + +Make sure your device's UART baud rate matches the `-b` argument passed to +sensniff. I strongly recommend using at least 460800. This comment does not +apply if your device is using native USB. + +Subsequently, make absolutely certain that your device is tuned to the same RF +channel as the network you are trying to sniff. You can change sniffing channel +through sensniff's text interface. + +More details in sensniff's README. + +Adding support for more platforms +================================= +Firstly, this example will try to turn off frame filtering and automatic h/w +ACKs by calling `NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, 0)`. If your +radio does not support this, then implementing this is your first step towards +running this example on your board. + +Secondly, in order to be able to switch channels and retrieve current/min/max +RF channel supported from sensniff's text interface, your device's radio driver +must also support: + + NETSTACK_RADIO.get_value(RADIO_PARAM_CHANNEL, ...) + NETSTACK_RADIO.set_value(RADIO_PARAM_CHANNEL, ...) + NETSTACK_RADIO.get_value(RADIO_CONST_CHANNEL_MIN, ...) + NETSTACK_RADIO.get_value(RADIO_CONST_CHANNEL_MAX, ...) + +The following radios have been tested: + +* CC13xx/CC26xx in PROP and IEEE modes +* CC2538 +* CC2530/CC2531 +* CC1200 +* RF233 + +Once you have the radio sorted out, you also need to configure character I/O. +The firmware captures wireless frames and streams them over a serial line to +the host where your device is connected. This can be achieved over UART or over +CDC-ACM. The example makes zero assumptions about your hardware's capability, +you have to configure thnigs explicitly. + +* Firstly, create a directory named the same as your platform. Crate a header +file therein called `target-conf.h`. This will get included automatically. +* Then look at the header files under `pool`, perhaps your device's CPU is +already supported. If that's the case, then within your `target-conf.h` you +simply need to add a line like this: + + #define SENSNIFF_IO_DRIVER_H "pool/cc2538-io.h" + +choosing the header that corresponds to your device's CPU. Just look for any of +the platforms already supported to see how you can configure things in a more +fine-grained fashion (e.g. to select UART instance, switch between UART/USB +etc). + +* If your CPU is not already supported, then you need to create an additional +header file. In that header file, you will need to define the following three: + + #define sensniff_io_byte_out() + #define sensniff_io_flush() + #define sensniff_io_set_input() + +Those should map to functions implemented by your device's peripheral driver, +e.g. your UART driver. `_byte_out()` and `set_input()` are required, but +`_flush()` is optional and is only really helpful in case of drivers/hardware +that support buffered I/O (as is the case for some Contiki's USB drivers). Once +you have provided those defines, then simple go back to your `target-conf.h` +and: + + #define SENSNIFF_IO_DRIVER_H "header-with-my-own-defines.h" + +* The build system will also try to include `platform/Makefile.platform`. You +can create this Makefile if you want to extend the build system e.g. by adding +source files to the build, or by specifying Make variables. A common reason why +you may wish to do so would be to specify your device's baudrate. In doing so, +`make sniff` will pass the correct value as the argument to `-b`. You do not +have to create this file if you don't need to do so. + +That should be it! + diff --git a/examples/osd/sensniff/avr-rss2/avr-rss2-io.h b/examples/osd/sensniff/avr-rss2/avr-rss2-io.h new file mode 100644 index 000000000..b92467511 --- /dev/null +++ b/examples/osd/sensniff/avr-rss2/avr-rss2-io.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef AVR_RSS2_IO_H_ +#define AVR_RSS2_IO_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/rs232.h" + +#define sensniff_io_byte_out(b) rs232_send(0, b) +#define sensniff_io_flush() +#define sensniff_io_set_input(b) rs232_set_input(RS232_PORT_0, b) +/*---------------------------------------------------------------------------*/ +#endif /* AVR_RSS2_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/avr-rss2/target-conf.h b/examples/osd/sensniff/avr-rss2/target-conf.h new file mode 100644 index 000000000..c524b7c6e --- /dev/null +++ b/examples/osd/sensniff/avr-rss2/target-conf.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "avr-rss2/avr-rss2-io.h" +#define RS232_BAUDRATE USART_BAUD_500000 +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/cc2530dk/target-conf.h b/examples/osd/sensniff/cc2530dk/target-conf.h new file mode 100644 index 000000000..69e405390 --- /dev/null +++ b/examples/osd/sensniff/cc2530dk/target-conf.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +/* Change to 0 to build for the SmartRF + cc2530 EM */ +#define MODELS_CONF_CC2531_USB_STICK 1 +/*---------------------------------------------------------------------------*/ +/* Don't change below this line */ +#define ADC_SENSOR_CONF_ON 0 +#define LPM_CONF_MODE 0 +#define UART0_CONF_HIGH_SPEED 1 +#define UART0_RTSCTS 1 +#define UART0_CONF_WITH_INPUT 1 +#define USB_SERIAL_CONF_BUFFERED 1 +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "pool/cc2530-cc2531-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/cc2538dk/target-conf.h b/examples/osd/sensniff/cc2538dk/target-conf.h new file mode 100644 index 000000000..f498bb00b --- /dev/null +++ b/examples/osd/sensniff/cc2538dk/target-conf.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +/* + * Selection of Sensniff I/O Interface. + * Define CC2538_IO_CONF_USB as 0 to use UART as sensniff's interface. + * This will default to using UART0, unless you also define + * CC2538_IO_CONF_USE_UART_1 as 1. + * + * Don't forget to also set a correct baud rate (460800 or higher) by defining + * the corresponding UART0_CONF_BAUD_RATE or UART1_CONF_BAUD_RATE + */ +#define CC2538_IO_CONF_USB 1 +#define CC2538_IO_CONF_USE_UART1 0 +/*---------------------------------------------------------------------------*/ +#if CC2538_IO_CONF_USB +#define USB_SERIAL_CONF_ENABLE 1 +#else +#define UART0_CONF_BAUD_RATE 460800 +#endif +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "pool/cc2538-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/ev-aducrf101mkxz/ev-aducrf101mkxz-io.h b/examples/osd/sensniff/ev-aducrf101mkxz/ev-aducrf101mkxz-io.h new file mode 100644 index 000000000..883e5e598 --- /dev/null +++ b/examples/osd/sensniff/ev-aducrf101mkxz/ev-aducrf101mkxz-io.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef EV_ADUCRF101MKXZ_IO_H_ +#define EV_ADUCRF101MKXZ_IO_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/uart.h" +/*---------------------------------------------------------------------------*/ +#define sensniff_io_byte_out(b) uart_put(b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) uart_set_input(f) +/*---------------------------------------------------------------------------*/ +#endif /* EV_ADUCRF101MKXZ_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/ev-aducrf101mkxz/target-conf.h b/examples/osd/sensniff/ev-aducrf101mkxz/target-conf.h new file mode 100644 index 000000000..bd3e518d7 --- /dev/null +++ b/examples/osd/sensniff/ev-aducrf101mkxz/target-conf.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "ev-aducrf101mkxz/ev-aducrf101mkxz-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/jn516x/jn516x-io.h b/examples/osd/sensniff/jn516x/jn516x-io.h new file mode 100644 index 000000000..d38ae91eb --- /dev/null +++ b/examples/osd/sensniff/jn516x/jn516x-io.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef JN516X_IO_H_ +#define JN516X_IO_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/uart0.h" +#include "dev/uart1.h" +/*---------------------------------------------------------------------------*/ +#ifdef JN516X_IO_CONF_USE_UART1 +#define JN516X_IO_USE_UART1 JN516X_IO_CONF_USE_UART1 +#else +#define JN516X_IO_USE_UART1 0 +#endif +/*---------------------------------------------------------------------------*/ +#if JN516X_IO_USE_UART1 +#define sensniff_io_byte_out(b) uart1_writeb(b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) uart1_set_input(f) +#else +#define sensniff_io_byte_out(b) uart0_writeb(b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) uart0_set_input(f) +#endif +/*---------------------------------------------------------------------------*/ +#endif /* JN516X_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/jn516x/target-conf.h b/examples/osd/sensniff/jn516x/target-conf.h new file mode 100644 index 000000000..8f30be7b2 --- /dev/null +++ b/examples/osd/sensniff/jn516x/target-conf.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "jn516x/jn516x-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/netstack.c b/examples/osd/sensniff/netstack.c new file mode 100644 index 000000000..14068ce77 --- /dev/null +++ b/examples/osd/sensniff/netstack.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010, Loughborough University - 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. + */ +/*---------------------------------------------------------------------------*/ +#include "netstack.h" +/*---------------------------------------------------------------------------*/ +void +netstack_init(void) +{ + NETSTACK_RADIO.init(); + NETSTACK_RDC.init(); +} +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/openmote-cc2538/target-conf.h b/examples/osd/sensniff/openmote-cc2538/target-conf.h new file mode 100644 index 000000000..c4591eacb --- /dev/null +++ b/examples/osd/sensniff/openmote-cc2538/target-conf.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +/* + * Selection of Sensniff I/O Interface. + * Define CC2538_IO_CONF_USB as 0 to use UART as sensniff's interface. + * This will default to using UART0, unless you also define + * CC2538_IO_CONF_USE_UART1 as 1. + * + * Don't forget to also set a correct baud rate (460800 or higher) by defining + * the corresponding UART0_CONF_BAUD_RATE or UART1_CONF_BAUD_RATE + */ +#define CC2538_IO_CONF_USB 0 +#define CC2538_IO_CONF_USE_UART1 0 +/*---------------------------------------------------------------------------*/ +#if CC2538_IO_CONF_USB +#define USB_SERIAL_CONF_ENABLE 1 +#else +#define UART0_CONF_BAUD_RATE 460800 +#endif +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "pool/cc2538-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/osd-merkur-256/osd-merkur-io.h b/examples/osd/sensniff/osd-merkur-256/osd-merkur-io.h new file mode 100644 index 000000000..b92467511 --- /dev/null +++ b/examples/osd/sensniff/osd-merkur-256/osd-merkur-io.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef AVR_RSS2_IO_H_ +#define AVR_RSS2_IO_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/rs232.h" + +#define sensniff_io_byte_out(b) rs232_send(0, b) +#define sensniff_io_flush() +#define sensniff_io_set_input(b) rs232_set_input(RS232_PORT_0, b) +/*---------------------------------------------------------------------------*/ +#endif /* AVR_RSS2_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/osd-merkur-256/target-conf.h b/examples/osd/sensniff/osd-merkur-256/target-conf.h new file mode 100644 index 000000000..f309ce439 --- /dev/null +++ b/examples/osd/sensniff/osd-merkur-256/target-conf.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "osd-merkur-256/osd-merkur-io.h" +//#define RS232_BAUDRATE USART_BAUD_500000 +#define RS232_BAUDRATE USART_BAUD_38400 +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/pool/cc13xx-cc26xx-io.h b/examples/osd/sensniff/pool/cc13xx-cc26xx-io.h new file mode 100644 index 000000000..556fd669a --- /dev/null +++ b/examples/osd/sensniff/pool/cc13xx-cc26xx-io.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef CC13XX_CC26XX_IO_H_ +#define CC13XX_CC26XX_IO_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/cc26xx-uart.h" +/*---------------------------------------------------------------------------*/ +#define sensniff_io_byte_out(b) cc26xx_uart_write_byte(b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) cc26xx_uart_set_input(f) +/*---------------------------------------------------------------------------*/ +#endif /* CC13XX_CC26XX_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/pool/cc2530-cc2531-io.h b/examples/osd/sensniff/pool/cc2530-cc2531-io.h new file mode 100644 index 000000000..08ecc289d --- /dev/null +++ b/examples/osd/sensniff/pool/cc2530-cc2531-io.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef CC2530_CC2531_IO_H_ +#define CC2530_CC2531_IO_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/io-arch.h" +/*---------------------------------------------------------------------------*/ +#define sensniff_io_byte_out(b) io_arch_writeb(b) +#define sensniff_io_flush() io_arch_flush() +#define sensniff_io_set_input(f) io_arch_set_input(f) +/*---------------------------------------------------------------------------*/ +#endif /* CC2530_CC2531_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/pool/cc2538-io.h b/examples/osd/sensniff/pool/cc2538-io.h new file mode 100644 index 000000000..ee82ce0a4 --- /dev/null +++ b/examples/osd/sensniff/pool/cc2538-io.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/uart.h" +#include "usb/usb-serial.h" +/*---------------------------------------------------------------------------*/ +#ifndef CC2538_IO_H_ +#define CC2538_IO_H_ +/*---------------------------------------------------------------------------*/ +/* + * Select whether to use native USB as sensniff's I/O interface. + * If defined as 0, UART will be used. Set to 1 to use USB. + */ +#ifdef CC2538_IO_CONF_USB +#define CC2538_IO_USB CC2538_IO_CONF_USB +#else +#define CC2538_IO_USB 0 +#endif +/*---------------------------------------------------------------------------*/ +/* + * UART instance selection. Set to 1 to use UART1. + * Ignored unless CC2538_IO_USB is 0. + */ +#ifdef CC2538_IO_CONF_USE_UART1 +#define CC2538_IO_USE_UART1 CC2538_IO_CONF_USE_UART1 +#else +#define CC2538_IO_USE_UART1 0 +#endif +/*---------------------------------------------------------------------------*/ +#if CC2538_IO_USB +#define sensniff_io_byte_out(b) usb_serial_writeb(b) +#define sensniff_io_flush() usb_serial_flush() +#define sensniff_io_set_input(f) usb_serial_set_input(f) +#else +#if CC2538_IO_USE_UART1 +#define sensniff_io_byte_out(b) uart_write_byte(1, b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) uart_set_input(1, f) +#else +#define sensniff_io_byte_out(b) uart_write_byte(0, b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) uart_set_input(0, f) +#endif /* CC2538_IO_USE_UART_1 */ +#endif /* CC2538_IO_USB */ +/*---------------------------------------------------------------------------*/ +#endif /* CC2538_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/pool/msp430-io.h b/examples/osd/sensniff/pool/msp430-io.h new file mode 100644 index 000000000..a4fefc641 --- /dev/null +++ b/examples/osd/sensniff/pool/msp430-io.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef MSP430_IO_H_ +#define MSP430_IO_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" +#include "dev/uart0.h" +#include "dev/uart1.h" +/*---------------------------------------------------------------------------*/ +#ifdef MSP430_IO_CONF_USE_UART1 +#define MSP430_IO_USE_UART1 MSP430_IO_CONF_USE_UART1 +#else +#define MSP430_IO_USE_UART1 0 +#endif +/*---------------------------------------------------------------------------*/ +#if MSP430_IO_USE_UART1 +#define sensniff_io_byte_out(b) uart1_writeb(b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) uart1_set_input(f) +#else +#define sensniff_io_byte_out(b) uart0_writeb(b) +#define sensniff_io_flush() +#define sensniff_io_set_input(f) uart0_set_input(f) +#endif +/*---------------------------------------------------------------------------*/ +#endif /* MSP430_IO_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/project-conf.h b/examples/osd/sensniff/project-conf.h new file mode 100644 index 000000000..4d703fc43 --- /dev/null +++ b/examples/osd/sensniff/project-conf.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef PROJECT_CONF_H_ +#define PROJECT_CONF_H_ +/*---------------------------------------------------------------------------*/ +#undef NETSTACK_CONF_RDC +#define NETSTACK_CONF_RDC sensniff_rdc_driver +/*---------------------------------------------------------------------------*/ +/* Include platform-specific header */ +#include "target-conf.h" +/*---------------------------------------------------------------------------*/ +#endif /* PROJECT_CONF_H_ */ diff --git a/examples/osd/sensniff/sensniff-rdc.c b/examples/osd/sensniff/sensniff-rdc.c new file mode 100644 index 000000000..3a5eef428 --- /dev/null +++ b/examples/osd/sensniff/sensniff-rdc.c @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * Copyright (c) 2012-2013, Centre National de la Recherche Scientifique. + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +/* + * Author: George Oikonomou + * Loosely based on the example contributed by Etienne Duble (CNRS / LIG), as + * part of the work done for the ANR ARESA2 project. + */ +/*---------------------------------------------------------------------------*/ +#include "net/mac/mac.h" +#include "net/mac/rdc.h" +#include "net/netstack.h" +#include "sensniff.h" +/*---------------------------------------------------------------------------*/ +static void +send(mac_callback_t sent, void *ptr) +{ +} +/*---------------------------------------------------------------------------*/ +static void +send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *list) +{ +} +/*---------------------------------------------------------------------------*/ +static void +input(void) +{ + sensniff_output_frame(); +} +/*---------------------------------------------------------------------------*/ +static int +on(void) +{ + NETSTACK_RADIO.on(); + return 1; +} +/*---------------------------------------------------------------------------*/ +static int +off(int keep_radio_on) +{ + return keep_radio_on; +} +/*---------------------------------------------------------------------------*/ +static unsigned short +cca(void) +{ + return 0; +} +/*---------------------------------------------------------------------------*/ +static void +init(void) +{ + on(); +} +/*---------------------------------------------------------------------------*/ +const struct rdc_driver sensniff_rdc_driver = { + "sensniff-rdc", + init, + send, + send_list, + input, + on, + off, + cca, +}; +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/sensniff.c b/examples/osd/sensniff/sensniff.c new file mode 100644 index 000000000..5901b7e02 --- /dev/null +++ b/examples/osd/sensniff/sensniff.c @@ -0,0 +1,349 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#include "contiki.h" +#include "sensniff.h" +#include "dev/radio.h" +#include "net/netstack.h" +#include "net/packetbuf.h" +#include "sys/process.h" +#include "sys/ctimer.h" +#include "lib/ringbuf.h" + +#include SENSNIFF_IO_DRIVER_H + +#include +#include +#include +/*---------------------------------------------------------------------------*/ +#define DEBUG 1 +#if DEBUG +#define PRINTF(...) printf(__VA_ARGS__) +#else +#define PRINTF(...) +#endif +/*---------------------------------------------------------------------------*/ +PROCESS(sensniff_process, "sensniff process"); +AUTOSTART_PROCESSES(&sensniff_process); +/*---------------------------------------------------------------------------*/ +/* Timeout handling for incoming characters. */ +#define TIMEOUT (CLOCK_SECOND >> 1) +static struct ctimer ct; +/*---------------------------------------------------------------------------*/ +#define STATE_WAITING_FOR_MAGIC 0x00 +#define STATE_WAITING_FOR_VERSION 0x01 +#define STATE_WAITING_FOR_CMD 0x02 +#define STATE_WAITING_FOR_LEN_1 0x03 +#define STATE_WAITING_FOR_LEN_2 0x04 +#define STATE_WAITING_FOR_DATA 0x05 + +static uint8_t state; +static uint8_t in_ct; +/*---------------------------------------------------------------------------*/ +#define CMD_FRAME 0x00 +#define CMD_CHANNEL 0x01 +#define CMD_CHANNEL_MIN 0x02 +#define CMD_CHANNEL_MAX 0x03 +#define CMD_ERR_NOT_SUPPORTED 0x7F +#define CMD_GET_CHANNEL 0x81 +#define CMD_GET_CHANNEL_MIN 0x82 +#define CMD_GET_CHANNEL_MAX 0x83 +#define CMD_SET_CHANNEL 0x84 +/*---------------------------------------------------------------------------*/ +#define PROTOCOL_VERSION 2 +/*---------------------------------------------------------------------------*/ +#define BUFSIZE 32 + +static struct ringbuf rxbuf; + +typedef struct cmd_in_s { + uint8_t cmd; + uint16_t len; + uint8_t data; +} cmd_in_t; + +static cmd_in_t command; + +uint8_t cmd_buf[BUFSIZE]; +/*---------------------------------------------------------------------------*/ +static const uint8_t magic[] = { 0xC1, 0x1F, 0xFE, 0x72 }; +/*---------------------------------------------------------------------------*/ +static void +reset_state(void *byte) +{ + state = STATE_WAITING_FOR_MAGIC; + in_ct = 0; + memset(&command, 0, sizeof(command)); +} +/*---------------------------------------------------------------------------*/ +static void +send_header(uint8_t cmd, uint16_t len) +{ + uint16_t i; + + /* Send the magic */ + for(i = 0; i < 4; i++) { + sensniff_io_byte_out(magic[i]); + } + + /* Send the protocol version */ + sensniff_io_byte_out(PROTOCOL_VERSION); + + /* Send the command byte */ + sensniff_io_byte_out(cmd); + + /* Send the length, network endianness */ + sensniff_io_byte_out(len >> 8); + sensniff_io_byte_out(len & 0xFF); +} +/*---------------------------------------------------------------------------*/ +static void +send_error(void) +{ + send_header(CMD_ERR_NOT_SUPPORTED, 0); + + sensniff_io_flush(); +} +/*---------------------------------------------------------------------------*/ +static void +send_channel(void) +{ + radio_value_t chan; + + if(NETSTACK_RADIO.get_value(RADIO_PARAM_CHANNEL, &chan) == + RADIO_RESULT_OK) { + send_header(CMD_CHANNEL, 1); + sensniff_io_byte_out(chan & 0xFF); + sensniff_io_flush(); + return; + } + + send_error(); +} +/*---------------------------------------------------------------------------*/ +static void +set_channel(uint8_t channel) +{ + if(NETSTACK_RADIO.set_value(RADIO_PARAM_CHANNEL, channel) == + RADIO_RESULT_OK) { + send_channel(); + return; + } + + send_error(); +} +/*---------------------------------------------------------------------------*/ +static void +send_channel_min(void) +{ + radio_value_t chan; + + if(NETSTACK_RADIO.get_value(RADIO_CONST_CHANNEL_MIN, &chan) == + RADIO_RESULT_OK) { + send_header(CMD_CHANNEL_MIN, 1); + sensniff_io_byte_out(chan & 0xFF); + sensniff_io_flush(); + return; + } + + send_error(); +} +/*---------------------------------------------------------------------------*/ +static void +send_channel_max(void) +{ + radio_value_t chan; + + if(NETSTACK_RADIO.get_value(RADIO_CONST_CHANNEL_MAX, &chan) == + RADIO_RESULT_OK) { + send_header(CMD_CHANNEL_MAX, 1); + sensniff_io_byte_out(chan & 0xFF); + sensniff_io_flush(); + return; + } + + send_error(); +} +/*---------------------------------------------------------------------------*/ +static int +char_in(unsigned char c) +{ + /* Bump the timeout counter */ + ctimer_set(&ct, TIMEOUT, reset_state, NULL); + + /* Add the character to our ringbuf and poll the consumer process. */ + ringbuf_put(&rxbuf, c); + + process_poll(&sensniff_process); + return 1; +} +/*---------------------------------------------------------------------------*/ +void +sensniff_output_frame() +{ + int i; + uint8_t len = packetbuf_datalen() & 0xFF; + + send_header(CMD_FRAME, len + 2); + + for(i = 0; i < len; i++) { + sensniff_io_byte_out(((uint8_t *)packetbuf_dataptr())[i]); + } + + sensniff_io_byte_out(packetbuf_attr(PACKETBUF_ATTR_RSSI) & 0xFF); + sensniff_io_byte_out(0x80 | + (packetbuf_attr(PACKETBUF_ATTR_LINK_QUALITY) & 0xFF)); + + sensniff_io_flush(); +} +/*---------------------------------------------------------------------------*/ +static void +execute_command(void) +{ + switch(command.cmd) { + case CMD_GET_CHANNEL: + send_channel(); + break; + case CMD_GET_CHANNEL_MIN: + send_channel_min(); + break; + case CMD_GET_CHANNEL_MAX: + send_channel_max(); + break; + case CMD_SET_CHANNEL: + set_channel(command.data); + break; + default: + send_error(); + break; + } +} +/*---------------------------------------------------------------------------*/ +static void +process_incoming_data(void) +{ + int c = 0; + uint8_t byte_in; + + c = ringbuf_get(&rxbuf); + + while(c != -1) { + byte_in = (uint8_t)c; + switch(state) { + case STATE_WAITING_FOR_MAGIC: + if(byte_in == magic[in_ct]) { + in_ct++; + if(in_ct == sizeof(magic)) { + state = STATE_WAITING_FOR_VERSION; + in_ct = 0; + } + } else { + reset_state(&byte_in); + } + break; + case STATE_WAITING_FOR_VERSION: + if(byte_in == PROTOCOL_VERSION) { + state = STATE_WAITING_FOR_CMD; + } else { + reset_state(&byte_in); + } + break; + case STATE_WAITING_FOR_CMD: + command.cmd = byte_in; + + if(command.cmd == CMD_GET_CHANNEL || + command.cmd == CMD_GET_CHANNEL_MIN || + command.cmd == CMD_GET_CHANNEL_MAX) { + execute_command(); + reset_state(&byte_in); + } else { + state = STATE_WAITING_FOR_LEN_1; + } + break; + case STATE_WAITING_FOR_LEN_1: + command.len = byte_in << 8; + state = STATE_WAITING_FOR_LEN_2; + break; + case STATE_WAITING_FOR_LEN_2: + command.len |= byte_in; + if(command.len == 1) { + state = STATE_WAITING_FOR_DATA; + } else { + reset_state(&byte_in); + } + break; + case STATE_WAITING_FOR_DATA: + command.data = byte_in; + execute_command(); + reset_state(&byte_in); + break; + default: + break; + } + c = ringbuf_get(&rxbuf); + } +} +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(sensniff_process, ev, data) +{ + PROCESS_BEGIN(); + PRINTF("sensniff: setting RF in promiscuous mode\n"); + /* Turn off RF frame filtering and H/W ACKs */ + if(NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, 0) != RADIO_RESULT_OK) { + PRINTF("sensniff: Error setting RF in promiscuous mode\n"); + PROCESS_EXIT(); + } + + /* Initialise the ring buffer */ + PRINTF("Initialise the ring buffer\n"); + ringbuf_init(&rxbuf, cmd_buf, sizeof(cmd_buf)); + + /* Initialise the state machine */ + PRINTF("Initialise the state machine\n"); + reset_state(NULL); + + /* Register for char inputs with the character I/O peripheral */ + PRINTF("Register for char inputs with the character I/O peripheral\n"); + sensniff_io_set_input(&char_in); + + PRINTF("loop\n"); + while(1) { + PROCESS_YIELD(); + PRINTF("POLL\n"); + if(ev == PROCESS_EVENT_POLL) { + PRINTF("process_incoming_data\n"); + process_incoming_data(); + } + } + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/sensniff.h b/examples/osd/sensniff/sensniff.h new file mode 100644 index 000000000..cbddcb8ca --- /dev/null +++ b/examples/osd/sensniff/sensniff.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef SENSNIFF_H_ +#define SENSNIFF_H_ +/*---------------------------------------------------------------------------*/ +#include "contiki-conf.h" + +#include +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_ERROR 0xFF +#define SENSNIFF_OK 0x00 +/*---------------------------------------------------------------------------*/ +void sensniff_output_frame(void); +/*---------------------------------------------------------------------------*/ +#endif /* SENSNIFF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/srf06-cc26xx/target-conf.h b/examples/osd/sensniff/srf06-cc26xx/target-conf.h new file mode 100644 index 000000000..4d9deffda --- /dev/null +++ b/examples/osd/sensniff/srf06-cc26xx/target-conf.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +#define CC26XX_UART_CONF_BAUD_RATE 460800 +#define RF_BLE_CONF_ENABLED 0 +#define ROM_BOOTLOADER_ENABLE 1 +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "pool/cc13xx-cc26xx-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/z1/target-conf.h b/examples/osd/sensniff/z1/target-conf.h new file mode 100644 index 000000000..6e3db2b48 --- /dev/null +++ b/examples/osd/sensniff/z1/target-conf.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +#define MSP430_IO_CONF_USE_UART1 0 +#define UART0_CONF_BAUD_RATE 460800 +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "pool/msp430-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/osd/sensniff/zoul/target-conf.h b/examples/osd/sensniff/zoul/target-conf.h new file mode 100644 index 000000000..9f978b4c7 --- /dev/null +++ b/examples/osd/sensniff/zoul/target-conf.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2016, George Oikonomou - http://www.spd.gr + * 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 copyright holder 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef TARGET_CONF_H_ +#define TARGET_CONF_H_ +/*---------------------------------------------------------------------------*/ +/* Set to 1 for a sub-ghz sniffer with the CC1200 */ +#ifndef ZOUL_CONF_SUB_GHZ_SNIFFER +#define ZOUL_CONF_SUB_GHZ_SNIFFER 0 +#endif +/*---------------------------------------------------------------------------*/ +#if ZOUL_CONF_SUB_GHZ_SNIFFER +#define NETSTACK_CONF_RADIO cc1200_driver + +/* + * You will need to configure the defines below to match the configuration of + * your sub-ghz network. + */ +#define CC1200_CONF_RF_CFG cc1200_802154g_863_870_fsk_50kbps +#define CC1200_CONF_USE_GPIO2 0 +#define CC1200_CONF_USE_RX_WATCHDOG 0 +#define CC1200_CONF_802154G 0 +#define CC1200_CONF_802154G_CRC16 0 +#define CC1200_CONF_802154G_WHITENING 0 +#define ANTENNA_SW_SELECT_DEF_CONF ANTENNA_SW_SELECT_SUBGHZ +#endif +/*---------------------------------------------------------------------------*/ +/* + * Selection of Sensniff I/O Interface. + * Define CC2538_IO_CONF_USB as 0 to use UART0 as sensniff's interface. + */ +#define CC2538_IO_CONF_USB 0 +/*---------------------------------------------------------------------------*/ +#if CC2538_IO_CONF_USB +#define USB_SERIAL_CONF_ENABLE 1 +#else +#define UART0_CONF_BAUD_RATE 460800 +#endif +/*---------------------------------------------------------------------------*/ +#define SENSNIFF_IO_DRIVER_H "pool/cc2538-io.h" +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/