diff --git a/Makefile b/Makefile index 3f34ef7104..43a4333cf1 100644 --- a/Makefile +++ b/Makefile @@ -131,7 +131,7 @@ endif # .PHONY: clean clean: - @make -C $(NUTTX_SRC) -r $(MQUIET) clean + @make -C $(NUTTX_SRC) -r $(MQUIET) distclean @make -C $(ROMFS_SRC) -r $(MQUIET) clean .PHONY: distclean diff --git a/apps/px4/px4io/driver/px4io.cpp b/apps/px4/px4io/driver/px4io.cpp index fafec77f90..a5def874d8 100644 --- a/apps/px4/px4io/driver/px4io.cpp +++ b/apps/px4/px4io/driver/px4io.cpp @@ -65,7 +65,7 @@ #include #include -#include "../protocol.h" +#include "px4io/protocol.h" #include "uploader.h" class PX4IO; diff --git a/apps/px4/px4io/protocol.h b/apps/px4/px4io/protocol.h deleted file mode 100644 index c186c5b862..0000000000 --- a/apps/px4/px4io/protocol.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2012 PX4 Development Team. 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 PX4 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 OWNER 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. - * - ****************************************************************************/ - -/** - * @file PX4FMU <-> PX4IO messaging protocol. - * - * This initial version of the protocol is very simple; each side transmits a - * complete update with each frame. This avoids the sending of many small - * messages and the corresponding complexity involved. - */ - -/* - * XXX MUST BE KEPT IN SYNC WITH THE VERSION IN PX4FMU UNTIL - * TREES ARE MERGED. - */ - -#define PX4IO_OUTPUT_CHANNELS 8 -#define PX4IO_INPUT_CHANNELS 12 -#define PX4IO_RELAY_CHANNELS 2 - -#pragma pack(push,1) - -/* command from FMU to IO */ -struct px4io_command { - uint16_t f2i_magic; -#define F2I_MAGIC 0x636d - - uint16_t servo_command[PX4IO_OUTPUT_CHANNELS]; - bool relay_state[PX4IO_RELAY_CHANNELS]; - bool arm_ok; -}; - -/* report from IO to FMU */ -struct px4io_report { - uint16_t i2f_magic; -#define I2F_MAGIC 0x7570 - - uint16_t rc_channel[PX4IO_INPUT_CHANNELS]; - bool armed; - uint8_t channel_count; -} __attribute__((packed)); - -#pragma pack(pop) diff --git a/apps/px4io/Makefile b/apps/px4io/Makefile index 06be90a0ce..9b63d3ac80 100644 --- a/apps/px4io/Makefile +++ b/apps/px4io/Makefile @@ -35,4 +35,15 @@ # Build the px4io application. # +# +# Note that we pull a couple of specific files from the systemlib, since +# we can't support it all. +# +CSRCS = comms.c \ + mixer.c \ + px4io.c \ + safety.c \ + ../systemlib/hx_stream.c \ + ../systemlib/perf_counter.c + include $(APPDIR)/mk/app.mk diff --git a/apps/px4io/protocol.h b/apps/px4io/protocol.h index 92558a61df..96e0ca3500 100644 --- a/apps/px4io/protocol.h +++ b/apps/px4io/protocol.h @@ -48,6 +48,8 @@ #define PX4IO_INPUT_CHANNELS 12 #define PX4IO_RELAY_CHANNELS 2 +#pragma pack(push, 1) + /* command from FMU to IO */ struct px4io_command { uint16_t f2i_magic; @@ -56,7 +58,7 @@ struct px4io_command { uint16_t servo_command[PX4IO_OUTPUT_CHANNELS]; bool relay_state[PX4IO_RELAY_CHANNELS]; bool arm_ok; -} __attribute__((packed)); +}; /* report from IO to FMU */ struct px4io_report { @@ -66,4 +68,6 @@ struct px4io_report { uint16_t rc_channel[PX4IO_INPUT_CHANNELS]; bool armed; uint8_t channel_count; -} __attribute__((packed)); +}; + +#pragma pack(pop) \ No newline at end of file diff --git a/apps/systemlib/err.c b/apps/systemlib/err.c index 8f76aabe9b..9692f03dd9 100644 --- a/apps/systemlib/err.c +++ b/apps/systemlib/err.c @@ -38,7 +38,8 @@ * the same names. */ -#include +#include + #include #include #include @@ -47,17 +48,31 @@ #define NOCODE 1000 /* larger than maximum errno */ +#if CONFIG_NFILE_STREAMS > 0 +# include +#elif defined(CONFIG_ARCH_LOWPUTC) +# include +extern int lib_lowvprintf(const char *fmt, va_list ap); +#else +# warning Cannot output without one of CONFIG_NFILE_STREAMS or CONFIG_ARCH_LOWPUTC +#endif + const char * getprogname(void) { +#if CONFIG_TASK_NAME_SIZE > 0 _TCB *thisproc = sched_self(); return thisproc->name; +#else + return "app"; +#endif } static void warnerr_core(int errcode, const char *fmt, va_list args) { +#if CONFIG_NFILE_STREAMS > 0 fprintf(stderr, "%s: ", getprogname()); vfprintf(stderr, fmt, args); @@ -67,6 +82,17 @@ warnerr_core(int errcode, const char *fmt, va_list args) if (errcode < NOCODE) fprintf(stderr, ": %s", strerror(errcode)); fprintf(stderr, "\n"); +#elif CONFIG_ARCH_LOWPUTC + lib_lowprintf("%s: ", getprogname()); + lib_lowvprintf(fmt, args); + + /* convenience as many parts of NuttX use negative errno */ + if (errcode < 0) + errcode = -errcode; + if (errcode < NOCODE) + lib_lowprintf(": %s", strerror(errcode)); + lib_lowprintf("\n"); +#endif } void diff --git a/nuttx/configs/px4io/io/appconfig b/nuttx/configs/px4io/io/appconfig index 94176c6dcf..fbe8307a70 100644 --- a/nuttx/configs/px4io/io/appconfig +++ b/nuttx/configs/px4io/io/appconfig @@ -1,8 +1,6 @@ ############################################################################ -# configs/stm3210e-eval/nsh/appconfig # -# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt +# Copyright (C) 2012 PX4 Development Team. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -14,7 +12,7 @@ # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. -# 3. Neither the name NuttX nor the names of its contributors may be +# 3. Neither the name PX4 nor the names of its contributors may be # used to endorse or promote products derived from this software # without specific prior written permission. # @@ -33,7 +31,4 @@ # ############################################################################ -# Path to px4io app containing the user_start entry point - CONFIGURED_APPS += px4io -CONFIGURED_APPS += systemlib