aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/platforms/linux/hello/hello_example.cpp6
-rw-r--r--src/platforms/linux/hello/hello_example.h2
-rw-r--r--src/platforms/linux/hello/hello_start_linux.cpp6
-rw-r--r--src/platforms/linux/vcdev_test/vcdevtest_example.cpp19
-rw-r--r--src/platforms/linux/vcdev_test/vcdevtest_example.h2
-rw-r--r--src/platforms/linux/vcdev_test/vcdevtest_start_linux.cpp6
-rw-r--r--src/platforms/px4_app.h30
-rw-r--r--src/platforms/px4_nodehandle.h8
8 files changed, 45 insertions, 34 deletions
diff --git a/src/platforms/linux/hello/hello_example.cpp b/src/platforms/linux/hello/hello_example.cpp
index 7881b73d6..a30aeb57b 100644
--- a/src/platforms/linux/hello/hello_example.cpp
+++ b/src/platforms/linux/hello/hello_example.cpp
@@ -43,14 +43,14 @@
#include <unistd.h>
#include <stdio.h>
-px4::AppMgr HelloExample::mgr;
+px4::AppState HelloExample::appState;
int HelloExample::main()
{
- mgr.setRunning(true);
+ appState.setRunning(true);
int i=0;
- while (!mgr.exitRequested() && i<5) {
+ while (!appState.exitRequested() && i<5) {
sleep(2);
printf(" Doing work...\n");
diff --git a/src/platforms/linux/hello/hello_example.h b/src/platforms/linux/hello/hello_example.h
index b736f60bc..a4ae51705 100644
--- a/src/platforms/linux/hello/hello_example.h
+++ b/src/platforms/linux/hello/hello_example.h
@@ -49,5 +49,5 @@ public:
int main();
- static px4::AppMgr mgr; /* Manage requests to terminate app */
+ static px4::AppState appState; /* track requests to terminate app */
};
diff --git a/src/platforms/linux/hello/hello_start_linux.cpp b/src/platforms/linux/hello/hello_start_linux.cpp
index a7d21fa59..240c5d845 100644
--- a/src/platforms/linux/hello/hello_start_linux.cpp
+++ b/src/platforms/linux/hello/hello_start_linux.cpp
@@ -63,7 +63,7 @@ int hello_main(int argc, char *argv[])
if (!strcmp(argv[1], "start")) {
- if (HelloExample::mgr.isRunning()) {
+ if (HelloExample::appState.isRunning()) {
printf("already running\n");
/* this is not an error */
return 0;
@@ -80,12 +80,12 @@ int hello_main(int argc, char *argv[])
}
if (!strcmp(argv[1], "stop")) {
- HelloExample::mgr.requestExit();
+ HelloExample::appState.requestExit();
return 0;
}
if (!strcmp(argv[1], "status")) {
- if (HelloExample::mgr.isRunning()) {
+ if (HelloExample::appState.isRunning()) {
printf("is running\n");
} else {
diff --git a/src/platforms/linux/vcdev_test/vcdevtest_example.cpp b/src/platforms/linux/vcdev_test/vcdevtest_example.cpp
index 5650b4640..39c804ada 100644
--- a/src/platforms/linux/vcdev_test/vcdevtest_example.cpp
+++ b/src/platforms/linux/vcdev_test/vcdevtest_example.cpp
@@ -45,7 +45,7 @@
#include <unistd.h>
#include <stdio.h>
-px4::AppMgr VCDevExample::mgr;
+px4::AppState VCDevExample::appState;
using namespace device;
@@ -117,7 +117,7 @@ int test_pub_block(int fd, unsigned long blocked)
int VCDevExample::main()
{
- mgr.setRunning(true);
+ appState.setRunning(true);
_node = new VCDevNode();
@@ -164,7 +164,7 @@ int VCDevExample::main()
writer_main,
(char* const*)NULL);
- while (!mgr.exitRequested() && i<5) {
+ while (!appState.exitRequested() && i<3) {
sleep(2);
printf(" polling...\n");
@@ -179,12 +179,15 @@ int VCDevExample::main()
printf("poll failed %d %d\n", ret, px4_errno);
px4_close(fd);
}
- else if (ret == 0)
- printf(" Nothing to read\n");
- else {
- printf(" %d to read\n", ret);
+ else if (i > 0 && ret == 0)
+ printf(" Nothing to read - PASS\n");
+ else if (i == 0) {
+ if (ret == 1)
+ printf(" %d to read - %s\n", ret, fds[0].revents & POLLIN ? "PASS" : "FAIL");
+ else
+ printf(" %d to read - FAIL\n", ret);
+
}
- printf(" Doing work...\n");
++i;
}
px4_close(fd);
diff --git a/src/platforms/linux/vcdev_test/vcdevtest_example.h b/src/platforms/linux/vcdev_test/vcdevtest_example.h
index ed00fd5cb..4898210df 100644
--- a/src/platforms/linux/vcdev_test/vcdevtest_example.h
+++ b/src/platforms/linux/vcdev_test/vcdevtest_example.h
@@ -51,7 +51,7 @@ public:
int main();
- static px4::AppMgr mgr; /* Manage requests to terminate app */
+ static px4::AppState appState; /* track requests to terminate app */
private:
VCDevNode *_node;
diff --git a/src/platforms/linux/vcdev_test/vcdevtest_start_linux.cpp b/src/platforms/linux/vcdev_test/vcdevtest_start_linux.cpp
index c00613611..9adb65085 100644
--- a/src/platforms/linux/vcdev_test/vcdevtest_start_linux.cpp
+++ b/src/platforms/linux/vcdev_test/vcdevtest_start_linux.cpp
@@ -58,7 +58,7 @@ int vcdevtest_main(int argc, char *argv[])
if (!strcmp(argv[1], "start")) {
- if (VCDevExample::mgr.isRunning()) {
+ if (VCDevExample::appState.isRunning()) {
printf("already running\n");
/* this is not an error */
return 0;
@@ -75,12 +75,12 @@ int vcdevtest_main(int argc, char *argv[])
}
if (!strcmp(argv[1], "stop")) {
- VCDevExample::mgr.requestExit();
+ VCDevExample::appState.requestExit();
return 0;
}
if (!strcmp(argv[1], "status")) {
- if (VCDevExample::mgr.isRunning()) {
+ if (VCDevExample::appState.isRunning()) {
printf("is running\n");
} else {
diff --git a/src/platforms/px4_app.h b/src/platforms/px4_app.h
index 2c9765ae2..9aa285e22 100644
--- a/src/platforms/px4_app.h
+++ b/src/platforms/px4_app.h
@@ -1,6 +1,6 @@
/****************************************************************************
*
- * Copyright (c) 2015 Mark Charlebois. All rights reserved.
+ * Copyright (c) 2015 Mark Charlebois. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,21 +31,28 @@
*
****************************************************************************/
+/**
+ * @file px4_app.h
+ *
+ * PX4 app template classes, functions and defines. Apps need to call their
+ * main function PX4_MAIN.
+ */
+
#pragma once
namespace px4 {
-class AppMgr {
+class AppState {
public:
- ~AppMgr() {}
+ ~AppState() {}
#if defined(__PX4_ROS)
- AppMgr() {}
+ AppState() {}
bool exitRequested() { return !ros::ok(); }
void requestExit() { ros::shutdown(); }
#else
- AppMgr() : _exitRequested(false), _isRunning(false) {}
+ AppState() : _exitRequested(false), _isRunning(false) {}
bool exitRequested() { return _exitRequested; }
void requestExit() { _exitRequested = true; }
@@ -58,22 +65,23 @@ protected:
bool _isRunning;
#endif
private:
- AppMgr(const AppMgr&);
- const AppMgr& operator=(const AppMgr&);
+ AppState(const AppState&);
+ const AppState& operator=(const AppState&);
};
}
+// PX4_MAIN is defined if module.mk sets MODULE_COMMAND
+// For ROS and NuttX it is "main" and for Linux it is
+// $(MODULE_COMMAND)_app_main since some apps already
+// define $(MODULE_COMMAND)_main
+
// Task/process based build
#if defined(__PX4_ROS) || defined(__PX4_NUTTX)
// Thread based build
#else
-// The name passed must be globally unique
-// set PX4_APPMAIN in module.mk
-// EXTRADEFINES += -DPX4_MAIN=foo_app
#ifdef PX4_MAIN
-
extern int PX4_MAIN(int argc, char *argv[]);
#endif
diff --git a/src/platforms/px4_nodehandle.h b/src/platforms/px4_nodehandle.h
index c45ce5cc7..e4a483de6 100644
--- a/src/platforms/px4_nodehandle.h
+++ b/src/platforms/px4_nodehandle.h
@@ -142,11 +142,11 @@ protected:
class __EXPORT NodeHandle
{
public:
- NodeHandle(AppMgr &a) :
+ NodeHandle(AppState &a) :
_subs(),
_pubs(),
_sub_min_interval(nullptr),
- _mgr(a)
+ _appState(a)
{}
~NodeHandle()
@@ -264,7 +264,7 @@ public:
*/
void spin()
{
- while (!_mgr.exitRequested()) {
+ while (!_appState.exitRequested()) {
const int timeout_ms = 100;
/* Only continue in the loop if the nodehandle has subscriptions */
@@ -289,7 +289,7 @@ protected:
SubscriberNode *_sub_min_interval; /**< Points to the sub wtih the smallest interval
of all Subscriptions in _subs*/
- AppMgr &_mgr;
+ AppState &_appState;
/**
* Check if this is the smallest interval so far and update _sub_min_interval