aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-08-19 08:38:14 +0200
committerLorenz Meier <lm@inf.ethz.ch>2012-08-19 08:38:14 +0200
commitdcf71d5f69e11335d91d749d740a0c9fafb05586 (patch)
treee7f68f848b49e82cbbccd430209df38197942cc3
parent23ae096911226d35cff6a4ec124297c3d5313303 (diff)
parent84777544114d3d185a2fee0d30e3187c7f6ab27e (diff)
downloadpx4-firmware-dcf71d5f69e11335d91d749d740a0c9fafb05586.tar.gz
px4-firmware-dcf71d5f69e11335d91d749d740a0c9fafb05586.tar.bz2
px4-firmware-dcf71d5f69e11335d91d749d740a0c9fafb05586.zip
Merge branch 'master' of github.com:PX4/Firmware
-rw-r--r--Makefile2
-rw-r--r--apps/px4/px4io/driver/px4io.cpp2
-rw-r--r--apps/px4/px4io/protocol.h73
-rw-r--r--apps/px4io/Makefile11
-rw-r--r--apps/px4io/protocol.h8
-rw-r--r--apps/systemlib/err.c28
-rw-r--r--nuttx/configs/px4io/io/appconfig9
7 files changed, 48 insertions, 85 deletions
diff --git a/Makefile b/Makefile
index 3f34ef710..43a4333cf 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 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