Browse Source

make navigator work for posix

sbg
Roman 10 years ago committed by tumbili
parent
commit
7331ea32ef
  1. 34
      src/modules/navigator/navigator_main.cpp

34
src/modules/navigator/navigator_main.cpp

@ -44,6 +44,9 @@
*/ */
#include <px4_config.h> #include <px4_config.h>
#include <px4_defines.h>
#include <px4_tasks.h>
#include <px4_posix.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -174,7 +177,7 @@ Navigator::~Navigator()
/* if we have given up, kill it */ /* if we have given up, kill it */
if (++i > 50) { if (++i > 50) {
task_delete(_navigator_task); px4_task_delete(_navigator_task);
break; break;
} }
} while (_navigator_task != -1); } while (_navigator_task != -1);
@ -505,7 +508,7 @@ Navigator::task_main()
warnx("exiting."); warnx("exiting.");
_navigator_task = -1; _navigator_task = -1;
_exit(0); return;
} }
int int
@ -516,9 +519,9 @@ Navigator::start()
/* start the task */ /* start the task */
_navigator_task = px4_task_spawn_cmd("navigator", _navigator_task = px4_task_spawn_cmd("navigator",
SCHED_DEFAULT, SCHED_DEFAULT,
SCHED_PRIORITY_DEFAULT + 20, SCHED_PRIORITY_MAX -5,
1700, 1700,
(main_t)&Navigator::task_main_trampoline, (px4_main_t)&Navigator::task_main_trampoline,
nullptr); nullptr);
if (_navigator_task < 0) { if (_navigator_task < 0) {
@ -584,54 +587,57 @@ void Navigator::load_fence_from_file(const char *filename)
static void usage() static void usage()
{ {
errx(1, "usage: navigator {start|stop|status|fence|fencefile}"); warnx("usage: navigator {start|stop|status|fence|fencefile}");
} }
int navigator_main(int argc, char *argv[]) int navigator_main(int argc, char *argv[])
{ {
if (argc < 2) { if (argc < 2) {
usage(); usage();
return 1;
} }
if (!strcmp(argv[1], "start")) { if (!strcmp(argv[1], "start")) {
if (navigator::g_navigator != nullptr) { if (navigator::g_navigator != nullptr) {
errx(1, "already running"); warnx("already running");
return 1;
} }
navigator::g_navigator = new Navigator; navigator::g_navigator = new Navigator;
if (navigator::g_navigator == nullptr) { if (navigator::g_navigator == nullptr) {
errx(1, "alloc failed"); warnx("alloc failed");
return 1;
} }
if (OK != navigator::g_navigator->start()) { if (OK != navigator::g_navigator->start()) {
delete navigator::g_navigator; delete navigator::g_navigator;
navigator::g_navigator = nullptr; navigator::g_navigator = nullptr;
err(1, "start failed"); warnx("start failed");
return 1;
} }
return 0; return 0;
} }
if (navigator::g_navigator == nullptr) if (navigator::g_navigator == nullptr) {
errx(1, "not running"); warnx("not running");
return 1;
}
if (!strcmp(argv[1], "stop")) { if (!strcmp(argv[1], "stop")) {
delete navigator::g_navigator; delete navigator::g_navigator;
navigator::g_navigator = nullptr; navigator::g_navigator = nullptr;
} else if (!strcmp(argv[1], "status")) { } else if (!strcmp(argv[1], "status")) {
navigator::g_navigator->status(); navigator::g_navigator->status();
} else if (!strcmp(argv[1], "fence")) { } else if (!strcmp(argv[1], "fence")) {
navigator::g_navigator->add_fence_point(argc - 2, argv + 2); navigator::g_navigator->add_fence_point(argc - 2, argv + 2);
} else if (!strcmp(argv[1], "fencefile")) { } else if (!strcmp(argv[1], "fencefile")) {
navigator::g_navigator->load_fence_from_file(GEOFENCE_FILENAME); navigator::g_navigator->load_fence_from_file(GEOFENCE_FILENAME);
} else { } else {
usage(); usage();
return 1;
} }
return 0; return 0;

Loading…
Cancel
Save