aboutsummaryrefslogtreecommitdiff
path: root/src/systemcmds
diff options
context:
space:
mode:
authorufoncz <ufon@kullaonline.net>2014-04-25 21:14:12 +0200
committerufoncz <ufon@kullaonline.net>2014-04-25 21:14:12 +0200
commit08e5ed5a1d630f840a838006bab6b1d1ae6aa6c1 (patch)
treed3e520956375ff6919c25e87214e6f1a0b1b1416 /src/systemcmds
parent5ef57b8af61b7a5c9233ac1e600ffdac859f8e0c (diff)
downloadpx4-firmware-08e5ed5a1d630f840a838006bab6b1d1ae6aa6c1.tar.gz
px4-firmware-08e5ed5a1d630f840a838006bab6b1d1ae6aa6c1.tar.bz2
px4-firmware-08e5ed5a1d630f840a838006bab6b1d1ae6aa6c1.zip
added version nsh command, it can replace hw_ver
sss
Diffstat (limited to 'src/systemcmds')
-rw-r--r--src/systemcmds/version/module.mk43
-rw-r--r--src/systemcmds/version/version.c138
2 files changed, 181 insertions, 0 deletions
diff --git a/src/systemcmds/version/module.mk b/src/systemcmds/version/module.mk
new file mode 100644
index 000000000..3dac09239
--- /dev/null
+++ b/src/systemcmds/version/module.mk
@@ -0,0 +1,43 @@
+############################################################################
+#
+# Copyright (c) 2014 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.
+#
+############################################################################
+
+#
+# Show and test hardware version
+#
+
+MODULE_COMMAND = version
+SRCS = version.c
+
+MODULE_STACKSIZE = 1024
+
+MAXOPTIMIZATION = -Os
diff --git a/src/systemcmds/version/version.c b/src/systemcmds/version/version.c
new file mode 100644
index 000000000..38730b10d
--- /dev/null
+++ b/src/systemcmds/version/version.c
@@ -0,0 +1,138 @@
+/****************************************************************************
+ *
+ * Copyright (C) 2012 PX4 Development Team. All rights reserved.
+ * Author: Vladimir Kulla <ufon@kullaonline.net>
+ *
+ * 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 version.c
+ *
+ * Version nsh command, unified way of showing versions of HW, SW, Build, Toolchain etc
+ */
+
+#include <nuttx/config.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <version/version.h>
+
+__EXPORT int version_main(int argc, char *argv[]);
+
+static void usage(const char *reason)
+{
+ if (reason != NULL) {
+ fprintf(stderr, "%s\n", reason);
+ }
+
+ fprintf(stderr, "usage: version {hw|git|date|gcc|all}\n\n");
+}
+
+static void version_githash(int bShowPrefix)
+{
+ if (bShowPrefix == 1) {
+ printf("FW git-hash:");
+ }
+ printf("%s\n", FW_GIT);
+}
+
+static void version_hwarch(int bShowPrefix)
+{
+ if (bShowPrefix == 1) {
+ printf("HW arch: ");
+ }
+ printf("%s\n", HW_ARCH);
+}
+
+static void version_date(int bShowPrefix)
+{
+ if (bShowPrefix == 1) {
+ printf("Build date: ");
+ }
+ printf("%s %s\n", __DATE__, __TIME__);
+}
+
+static void version_gcc(int bShowPrefix)
+{
+ if (bShowPrefix == 1) {
+ printf("GCC used: ");
+ //printf("Built with GCC : %d.%d.%d\n", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
+ }
+ printf("%s\n", __VERSION__);
+}
+static char sz_ver_hw_str[] = "hw";
+
+int version_main(int argc, char *argv[])
+{
+ if (argc >= 2)
+ {
+ if (argv[1] != NULL)
+ {
+ if (!strncmp(argv[1], sz_ver_hw_str, strlen(sz_ver_hw_str)))
+ {
+ version_hwarch(0);
+ }
+ else if (!strncmp(argv[1], "git", 3))
+ {
+ version_githash(0);
+ }
+ else if (!strncmp(argv[1], "date", 3))
+ {
+ version_date(0);
+ }
+ else if (!strncmp(argv[1], "gcc", 3))
+ {
+ version_gcc(0);
+ }
+ else if (!strncmp(argv[1], "all", 3))
+ {
+ printf("Pixhawk version info\n");
+ version_hwarch(1);
+ version_date(1);
+ version_githash(1);
+ version_gcc(1);
+ }
+ else
+ {
+ printf("unknown command: %s\n", argv[1]);
+ }
+ }
+ else
+ {
+ usage("Error, input parameter NULL.\n");
+ }
+ }
+ else
+ {
+ usage("Error, not enough parameters.");
+ }
+ return OK;
+}