diff --git a/examples/rpl-border-router/Makefile b/examples/rpl-border-router/Makefile index 2f02a031e2f479651efb8b06a072be80b965846f..d20bec220d66bc4b868c0504a6c8df99825b0e67 100644 --- a/examples/rpl-border-router/Makefile +++ b/examples/rpl-border-router/Makefile @@ -3,6 +3,15 @@ all: $(CONTIKI_PROJECT) CONTIKI=../.. +ifeq ($(TARGET),) + -include Makefile.target +endif + +### Optionally, the target can add its own Makefile, to do things like e.g. +### add more source files to the build or define make variables. +-include $(TARGET)/Makefile.$(TARGET) + +PROJECTDIRS += $(TARGET) PROJECT_SOURCEFILES += slip-bridge.c httpd-simple.c ifeq ($(PREFIX),) diff --git a/examples/rpl-border-router/project-conf.h b/examples/rpl-border-router/project-conf.h index 32703ce4531b66f17845d1e75e89728e94818e2e..b67d39e5643e98669cdb006badabec37dd29569a 100644 --- a/examples/rpl-border-router/project-conf.h +++ b/examples/rpl-border-router/project-conf.h @@ -30,7 +30,12 @@ #ifndef PROJECT_ROUTER_CONF_H_ #define PROJECT_ROUTER_CONF_H_ - +/*---------------------------------------------------------------------------*/ +/* Include target-specific header */ +#ifdef TARGET_CONF_PATH +#include TARGET_CONF_PATH +#endif /* TARGET_CONF_PATH */ +/*---------------------------------------------------------------------------*/ #ifndef UIP_FALLBACK_INTERFACE #define UIP_FALLBACK_INTERFACE rpl_interface #endif diff --git a/examples/rpl-border-router/sky/Makefile.sky b/examples/rpl-border-router/sky/Makefile.sky new file mode 100644 index 0000000000000000000000000000000000000000..c3d097481e048de9f0dc7efa3c0c1bb06bfe2d67 --- /dev/null +++ b/examples/rpl-border-router/sky/Makefile.sky @@ -0,0 +1,3 @@ +PROJECT_SOURCEFILES += slip-bridge-putchar.c + +CFLAGS += -DTARGET_CONF_PATH=\"target-conf.h\" diff --git a/examples/rpl-border-router/sky/slip-bridge-putchar.c b/examples/rpl-border-router/sky/slip-bridge-putchar.c new file mode 100644 index 0000000000000000000000000000000000000000..f7f501ba1951b610dbbff90f93422b1e4a35c4ab --- /dev/null +++ b/examples/rpl-border-router/sky/slip-bridge-putchar.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ +/*---------------------------------------------------------------------------*/ +#include "contiki.h" +#include "dev/slip.h" + +#include <string.h> +/*---------------------------------------------------------------------------*/ +#define SLIP_END 0300 +#undef putchar +/*---------------------------------------------------------------------------*/ +int +putchar(int c) +{ + static char debug_frame = 0; + + if(!debug_frame) { /* Start of debug output */ + slip_arch_writeb(SLIP_END); + slip_arch_writeb('\r'); /* Type debug line == '\r' */ + debug_frame = 1; + } + + /* Need to also print '\n' because for example COOJA will not show + any output before line end */ + slip_arch_writeb((char)c); + + /* + * Line buffered output, a newline marks the end of debug output and + * implicitly flushes debug output. + */ + if(c == '\n') { + slip_arch_writeb(SLIP_END); + debug_frame = 0; + } + return c; +} +/*---------------------------------------------------------------------------*/ diff --git a/examples/rpl-border-router/sky/target-conf.h b/examples/rpl-border-router/sky/target-conf.h new file mode 100644 index 0000000000000000000000000000000000000000..3b0b0fcd4dda89a1bde80e52c15e8be9595ae2e6 --- /dev/null +++ b/examples/rpl-border-router/sky/target-conf.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2017, 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 QUEUEBUF_CONF_NUM 4 +#define UIP_CONF_BUFFER_SIZE 140 +/*---------------------------------------------------------------------------*/ +#endif /* TARGET_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/examples/rpl-border-router/slip-bridge.c b/examples/rpl-border-router/slip-bridge.c index a975b22d8df4bf8de21d95e026f4f111f47b63fa..abf95dfa8d96bf675bb5ae2b1cdd6f97f4d993b7 100644 --- a/examples/rpl-border-router/slip-bridge.c +++ b/examples/rpl-border-router/slip-bridge.c @@ -118,36 +118,6 @@ output(void) return 0; } /*---------------------------------------------------------------------------*/ -#if !SLIP_BRIDGE_CONF_NO_PUTCHAR -#undef putchar -int -putchar(int c) -{ -#define SLIP_END 0300 - static char debug_frame = 0; - - if(!debug_frame) { /* Start of debug output */ - slip_arch_writeb(SLIP_END); - slip_arch_writeb('\r'); /* Type debug line == '\r' */ - debug_frame = 1; - } - - /* Need to also print '\n' because for example COOJA will not show - any output before line end */ - slip_arch_writeb((char)c); - - /* - * Line buffered output, a newline marks the end of debug output and - * implicitly flushes debug output. - */ - if(c == '\n') { - slip_arch_writeb(SLIP_END); - debug_frame = 0; - } - return c; -} -#endif -/*---------------------------------------------------------------------------*/ const struct uip_fallback_interface rpl_interface = { init, output };