diff --git a/src/ncp/Makefile.am b/src/ncp/Makefile.am index f26339370..e9aa0d90f 100644 --- a/src/ncp/Makefile.am +++ b/src/ncp/Makefile.am @@ -28,85 +28,87 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am -EXTRA_DIST = \ - PROTOCOL.md \ +EXTRA_DIST = \ + PROTOCOL.md \ $(NULL) # Pull in the sources that comprise the OpenThread NCP library. -lib_LIBRARIES = \ - libopenthread-ncp-mtd.a \ - libopenthread-ncp-ftd.a \ +lib_LIBRARIES = \ + libopenthread-ncp-mtd.a \ + libopenthread-ncp-ftd.a \ $(NULL) -COMMON_CPPFLAGS = \ - -I$(top_srcdir)/include \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/core \ - -I$(top_srcdir)/third_party \ - -D_GNU_SOURCE \ - $(OPENTHREAD_TARGET_DEFINES) \ +COMMON_CPPFLAGS = \ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/core \ + -I$(top_srcdir)/third_party \ + -D_GNU_SOURCE \ + '-DSPINEL_PLATFORM_HEADER="spinel_platform.h"' \ + $(OPENTHREAD_TARGET_DEFINES) \ $(NULL) -COMMON_CXXFLAGS = \ - -I$(top_srcdir)/include \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/core \ - -I$(top_srcdir)/third_party \ - -D_GNU_SOURCE \ - $(OPENTHREAD_TARGET_DEFINES) \ +COMMON_CXXFLAGS = \ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/core \ + -I$(top_srcdir)/third_party \ + -D_GNU_SOURCE \ + $(OPENTHREAD_TARGET_DEFINES) \ $(NULL) -libopenthread_ncp_mtd_a_CPPFLAGS = \ - -DOPENTHREAD_MTD=1 \ - $(COMMON_CXXFLAGS) \ +libopenthread_ncp_mtd_a_CPPFLAGS = \ + -DOPENTHREAD_MTD=1 \ + $(COMMON_CXXFLAGS) \ $(NULL) -libopenthread_ncp_ftd_a_CPPFLAGS = \ - -DOPENTHREAD_FTD=1 \ - $(COMMON_CXXFLAGS) \ +libopenthread_ncp_ftd_a_CPPFLAGS = \ + -DOPENTHREAD_FTD=1 \ + $(COMMON_CXXFLAGS) \ $(NULL) -COMMON_SOURCES = \ - ncp_base.cpp \ - ncp_base.hpp \ - ncp_buffer.cpp \ - ncp_buffer.hpp \ - spinel.c \ - spinel.h \ - ncp_spi.cpp \ - ncp_spi.hpp \ - hdlc.cpp \ - hdlc.hpp \ - ncp_uart.cpp \ - ncp_uart.hpp \ +COMMON_SOURCES = \ + ncp_base.cpp \ + ncp_base.hpp \ + ncp_buffer.cpp \ + ncp_buffer.hpp \ + spinel.c \ + spinel.h \ + spinel_platform.h \ + ncp_spi.cpp \ + ncp_spi.hpp \ + hdlc.cpp \ + hdlc.hpp \ + ncp_uart.cpp \ + ncp_uart.hpp \ $(NULL) -libopenthread_ncp_mtd_a_SOURCES = \ - $(COMMON_SOURCES) \ +libopenthread_ncp_mtd_a_SOURCES = \ + $(COMMON_SOURCES) \ $(NULL) -libopenthread_ncp_ftd_a_SOURCES = \ - $(COMMON_SOURCES) \ +libopenthread_ncp_ftd_a_SOURCES = \ + $(COMMON_SOURCES) \ $(NULL) -include_HEADERS = \ +include_HEADERS = \ $(NULL) if OPENTHREAD_BUILD_TESTS -noinst_PROGRAMS = spinel-test -spinel_test_SOURCES = spinel.c -spinel_test_CFLAGS = -DSPINEL_SELF_TEST=1 -D_GNU_SOURCE -I$(top_srcdir)/src/core +noinst_PROGRAMS = spinel-test +spinel_test_SOURCES = spinel.c +spinel_test_CFLAGS = -DSPINEL_SELF_TEST=1 -D_GNU_SOURCE -I$(top_srcdir)/src/core -TESTS = spinel-test +TESTS = spinel-test install-headers: install-includeHEADERS if OPENTHREAD_BUILD_COVERAGE -CLEANFILES = $(wildcard *.gcda *.gcno) +CLEANFILES = $(wildcard *.gcda *.gcno) endif # OPENTHREAD_BUILD_COVERAGE endif # OPENTHREAD_BUILD_TESTS diff --git a/src/ncp/spinel.c b/src/ncp/spinel.c index ecdb42ac6..7fea3ff2f 100644 --- a/src/ncp/spinel.c +++ b/src/ncp/spinel.c @@ -43,20 +43,20 @@ // MARK: - // MARK: Headers -#ifdef OPENTHREAD_CONFIG_FILE -#include OPENTHREAD_CONFIG_FILE -#else -#include -#endif - #include "spinel.h" #include +#include + +#ifndef SPINEL_PLATFORM_HEADER +/* These are all already included in the spinel platform header + * if SPINEL_PLATFORM_HEADER was defined. + */ #include #include -#include "utils/wrap_string.h" -#include -#include "utils/wrap_stdbool.h" +#include +#endif // #ifndef SPINEL_PLATFORM_HEADER + // ---------------------------------------------------------------------------- // MARK: - diff --git a/src/ncp/spinel.h b/src/ncp/spinel.h index 9195b3a56..4a2a46934 100644 --- a/src/ncp/spinel.h +++ b/src/ncp/spinel.h @@ -28,9 +28,13 @@ #ifndef SPINEL_HEADER_INCLUDED #define SPINEL_HEADER_INCLUDED 1 +#ifdef SPINEL_PLATFORM_HEADER +#include SPINEL_PLATFORM_HEADER +#else // ifdef SPINEL_PLATFORM_HEADER #include -#include "utils/wrap_stdbool.h" -#include "utils/wrap_stdint.h" +#include +#include +#endif // else SPINEL_PLATFORM_HEADER // ---------------------------------------------------------------------------- diff --git a/src/ncp/spinel_platform.h b/src/ncp/spinel_platform.h new file mode 100644 index 000000000..151908ff2 --- /dev/null +++ b/src/ncp/spinel_platform.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017, The OpenThread Authors. + * 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 SPINEL_PLATFORM_OPENTHREAD_H_ +#define SPINEL_PLATFORM_OPENTHREAD_H_ + +/** + * This is the platform header file used for spinel on + * OpenThread. + * + * To make spinel code more portable, all header file + * `#include`s are defined in a platform specific header + * file "spinel_platform.h" which is then included from + * "spinel.h". + * + * This file should include the following header files (or + * their equivalent on the platform): + * + * #include + * #include + * #include + * #include + * #include + * #include + * + */ + +#ifdef OPENTHREAD_CONFIG_FILE +#include OPENTHREAD_CONFIG_FILE +#else +#include +#endif + +#include +#include "utils/wrap_stdbool.h" +#include "utils/wrap_stdint.h" +#include +#include +#include "utils/wrap_string.h" + +#endif // SPINEL_PLATFORM_OPENTHREAD_H_