aboutsummaryrefslogtreecommitdiff
path: root/apps/systemcmds
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-11-01 08:14:31 +0100
committerLorenz Meier <lm@inf.ethz.ch>2012-11-01 08:14:31 +0100
commit5e1416178afef2b61f3e7a8dec2756ca990360b8 (patch)
tree57b6fd1ee85dc0e3178ca60f8ec656440dcf460f /apps/systemcmds
parent18dbdf0a54cdcfdd5b43f94263be75c01b4e7f65 (diff)
parent8bfceef89cc1fd2422863a99d99039d18a1301bc (diff)
downloadpx4-firmware-5e1416178afef2b61f3e7a8dec2756ca990360b8.tar.gz
px4-firmware-5e1416178afef2b61f3e7a8dec2756ca990360b8.tar.bz2
px4-firmware-5e1416178afef2b61f3e7a8dec2756ca990360b8.zip
Merged
Diffstat (limited to 'apps/systemcmds')
-rw-r--r--apps/systemcmds/led/Makefile42
-rw-r--r--apps/systemcmds/led/led.c209
-rw-r--r--apps/systemcmds/param/param.c60
3 files changed, 43 insertions, 268 deletions
diff --git a/apps/systemcmds/led/Makefile b/apps/systemcmds/led/Makefile
deleted file mode 100644
index eb9d8f909..000000000
--- a/apps/systemcmds/led/Makefile
+++ /dev/null
@@ -1,42 +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.
-#
-############################################################################
-
-#
-# Makefile to build ardrone interface
-#
-
-APPNAME = led
-PRIORITY = SCHED_PRIORITY_MAX - 15
-STACKSIZE = 2048
-
-include $(APPDIR)/mk/app.mk
diff --git a/apps/systemcmds/led/led.c b/apps/systemcmds/led/led.c
deleted file mode 100644
index 15d448118..000000000
--- a/apps/systemcmds/led/led.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/****************************************************************************
- *
- * Copyright (C) 2012 PX4 Development Team. All rights reserved.
- * Author: @author Lorenz Meier <lm@inf.ethz.ch>
- *
- * 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 led.c
- * Plain, stupid led outputs
- */
-
-#include <nuttx/config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
-#include <unistd.h>
-#include <math.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <debug.h>
-#include <termios.h>
-#include <time.h>
-#include <sys/prctl.h>
-#include <drivers/drv_hrt.h>
-#include <arch/board/drv_led.h>
-
-#include <systemlib/err.h>
-#include <systemlib/systemlib.h>
-
-__EXPORT int led_main(int argc, char *argv[]);
-
-
-static bool thread_should_exit = false; /**< Deamon exit flag */
-static bool thread_running = false; /**< Deamon status flag */
-static int led_task; /**< Handle of deamon task / thread */
-static int leds;
-
-static int led_init(void)
-{
- leds = open("/dev/led", O_RDONLY | O_NONBLOCK);
-
- if (leds < 0) {
- errx(1, "[led] LED: open fail\n");
- }
-
- if (ioctl(leds, LED_ON, LED_BLUE) || ioctl(leds, LED_ON, LED_AMBER)) {
- errx(1, "[led] LED: ioctl fail\n");
- }
-
- return 0;
-}
-
-static void led_deinit(void)
-{
- close(leds);
-}
-
-static int led_toggle(int led)
-{
- static int last_blue = LED_ON;
- static int last_amber = LED_ON;
-
- if (led == LED_BLUE) last_blue = (last_blue == LED_ON) ? LED_OFF : LED_ON;
-
- if (led == LED_AMBER) last_amber = (last_amber == LED_ON) ? LED_OFF : LED_ON;
-
- return ioctl(leds, ((led == LED_BLUE) ? last_blue : last_amber), led);
-}
-
-static int led_on(int led)
-{
- return ioctl(leds, LED_ON, led);
-}
-
-static int led_off(int led)
-{
- return ioctl(leds, LED_OFF, led);
-}
-
-/**
- * Mainloop of led.
- */
-int led_thread_main(int argc, char *argv[]);
-
-/**
- * Print the correct usage.
- */
-static void usage(const char *reason);
-
-static void
-usage(const char *reason)
-{
- if (reason)
- fprintf(stderr, "%s\n", reason);
-
- fprintf(stderr, "usage: led {start|stop|status} [-d <UART>]\n\n");
- exit(1);
-}
-
-/**
- * The deamon app only briefly exists to start
- * the background job. The stack size assigned in the
- * Makefile does only apply to this management task.
- *
- * The actual stack size should be set in the call
- * to task_create().
- */
-int led_main(int argc, char *argv[])
-{
- if (argc < 1)
- usage("missing command");
-
- if (!strcmp(argv[1], "start")) {
-
- if (thread_running) {
- printf("led already running\n");
- /* this is not an error */
- exit(0);
- }
-
- thread_should_exit = false;
- led_task = task_spawn("led",
- SCHED_DEFAULT,
- SCHED_PRIORITY_MAX - 15,
- 4096,
- led_thread_main,
- (argv) ? (const char **)&argv[2] : (const char **)NULL);
- thread_running = true;
- exit(0);
- }
-
- if (!strcmp(argv[1], "stop")) {
- thread_should_exit = true;
- exit(0);
- }
-
- if (!strcmp(argv[1], "status")) {
- if (thread_running) {
- printf("\tled is running\n");
-
- } else {
- printf("\tled not started\n");
- }
-
- exit(0);
- }
-
- usage("unrecognized command");
- exit(1);
-}
-
-int led_thread_main(int argc, char *argv[])
-{
- /* welcome user */
- printf("[led] Control started, taking over motors\n");
-
- /* open leds */
- led_init();
-
- unsigned int rate = 200;
-
- while (!thread_should_exit) {
- /* swell blue led */
-
-
- /* 200 Hz base loop */
- usleep(1000000 / rate);
- }
-
- /* close leds */
- led_deinit();
-
- printf("[led] ending now...\n\n");
- fflush(stdout);
-
- thread_running = false;
-
- return OK;
-}
-
diff --git a/apps/systemcmds/param/param.c b/apps/systemcmds/param/param.c
index 67ffb531a..53f9c365e 100644
--- a/apps/systemcmds/param/param.c
+++ b/apps/systemcmds/param/param.c
@@ -56,26 +56,48 @@
__EXPORT int param_main(int argc, char *argv[]);
-static void do_save(void);
-static void do_load(void);
-static void do_import(void);
+static void do_save(const char* param_file_name);
+static void do_load(const char* param_file_name);
+static void do_import(const char* param_file_name);
static void do_show(const char* search_string);
static void do_show_print(void *arg, param_t param);
-static const char *param_file_name = "/eeprom/parameters";
-
int
param_main(int argc, char *argv[])
{
if (argc >= 2) {
- if (!strcmp(argv[1], "save"))
- do_save();
+ if (!strcmp(argv[1], "save")) {
+ if (argc >= 3) {
+ do_save(argv[2]);
+ } else {
+ do_save(param_get_default_file());
+ }
+ }
- if (!strcmp(argv[1], "load"))
- do_load();
+ if (!strcmp(argv[1], "load")) {
+ if (argc >= 3) {
+ do_load(argv[2]);
+ } else {
+ do_load(param_get_default_file());
+ }
+ }
+
+ if (!strcmp(argv[1], "import")) {
+ if (argc >= 3) {
+ do_import(argv[2]);
+ } else {
+ do_import(param_get_default_file());
+ }
+ }
- if (!strcmp(argv[1], "import"))
- do_import();
+ if (!strcmp(argv[1], "select")) {
+ if (argc >= 3) {
+ param_set_default_file(argv[2]);
+ } else {
+ param_set_default_file(NULL);
+ }
+ warnx("selected parameter file %s", param_get_default_file());
+ }
if (!strcmp(argv[1], "show"))
if (argc >= 3) {
@@ -84,12 +106,12 @@ param_main(int argc, char *argv[])
do_show(NULL);
}
}
-
- errx(1, "expected a command, try 'load', 'import', 'show' or 'save'\n");
+
+ errx(1, "expected a command, try 'load', 'import', 'show', 'select' or 'save'");
}
static void
-do_save(void)
+do_save(const char* param_file_name)
{
/* delete the parameter file in case it exists */
unlink(param_file_name);
@@ -112,7 +134,7 @@ do_save(void)
}
static void
-do_load(void)
+do_load(const char* param_file_name)
{
int fd = open(param_file_name, O_RDONLY);
@@ -122,14 +144,18 @@ do_load(void)
int result = param_load(fd);
close(fd);
- if (result < 0)
+ if (result < 0) {
errx(1, "error importing from '%s'", param_file_name);
+ } else {
+ /* set default file name for next storage operation */
+ param_set_default_file(param_file_name);
+ }
exit(0);
}
static void
-do_import(void)
+do_import(const char* param_file_name)
{
int fd = open(param_file_name, O_RDONLY);