diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2012-08-19 08:38:14 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2012-08-19 08:38:14 +0200 |
commit | dcf71d5f69e11335d91d749d740a0c9fafb05586 (patch) | |
tree | e7f68f848b49e82cbbccd430209df38197942cc3 | |
parent | 23ae096911226d35cff6a4ec124297c3d5313303 (diff) | |
parent | 84777544114d3d185a2fee0d30e3187c7f6ab27e (diff) | |
download | px4-firmware-dcf71d5f69e11335d91d749d740a0c9fafb05586.tar.gz px4-firmware-dcf71d5f69e11335d91d749d740a0c9fafb05586.tar.bz2 px4-firmware-dcf71d5f69e11335d91d749d740a0c9fafb05586.zip |
Merge branch 'master' of github.com:PX4/Firmware
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | apps/px4/px4io/driver/px4io.cpp | 2 | ||||
-rw-r--r-- | apps/px4/px4io/protocol.h | 73 | ||||
-rw-r--r-- | apps/px4io/Makefile | 11 | ||||
-rw-r--r-- | apps/px4io/protocol.h | 8 | ||||
-rw-r--r-- | apps/systemlib/err.c | 28 | ||||
-rw-r--r-- | nuttx/configs/px4io/io/appconfig | 9 |
7 files changed, 48 insertions, 85 deletions
@@ -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 fafec77f9..a5def874d 100644 --- a/apps/px4/px4io/driver/px4io.cpp +++ b/apps/px4/px4io/driver/px4io.cpp @@ -65,7 +65,7 @@ #include <systemlib/perf_counter.h> #include <systemlib/hx_stream.h> -#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 c186c5b86..000000000 --- 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 06be90a0c..9b63d3ac8 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 92558a61d..96e0ca350 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 8f76aabe9..9692f03dd 100644 --- a/apps/systemlib/err.c +++ b/apps/systemlib/err.c @@ -38,7 +38,8 @@ * the same names. */ -#include <stdio.h> +#include <nuttx/config.h> + #include <stdlib.h> #include <errno.h> #include <string.h> @@ -47,17 +48,31 @@ #define NOCODE 1000 /* larger than maximum errno */ +#if CONFIG_NFILE_STREAMS > 0 +# include <stdio.h> +#elif defined(CONFIG_ARCH_LOWPUTC) +# include <debug.h> +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 94176c6dc..fbe8307a7 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 <gnutt@nuttx.org> +# 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 |