aboutsummaryrefslogtreecommitdiff
path: root/src/modules/uavcan/uavcan_main.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-05-08 14:14:52 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-05-08 14:14:52 +0200
commitf70db56e90972cf0492ac9d295c3d0f5df87aa66 (patch)
tree3ce58888efb47957daf3db569c6d51ff1cd890ba /src/modules/uavcan/uavcan_main.cpp
parent185c95fda6acac869c1821846d44359faeef22d2 (diff)
downloadpx4-firmware-f70db56e90972cf0492ac9d295c3d0f5df87aa66.tar.gz
px4-firmware-f70db56e90972cf0492ac9d295c3d0f5df87aa66.tar.bz2
px4-firmware-f70db56e90972cf0492ac9d295c3d0f5df87aa66.zip
UAVCAN: Fix start / stop commands
Diffstat (limited to 'src/modules/uavcan/uavcan_main.cpp')
-rw-r--r--src/modules/uavcan/uavcan_main.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/modules/uavcan/uavcan_main.cpp
index a86314852..9cd486bf5 100644
--- a/src/modules/uavcan/uavcan_main.cpp
+++ b/src/modules/uavcan/uavcan_main.cpp
@@ -92,8 +92,8 @@ UavcanNode::~UavcanNode()
unsigned i = 10;
do {
- /* wait 50ms - it should wake every 100ms or so worst-case */
- usleep(50000);
+ /* wait 5ms - it should wake every 10ms or so worst-case */
+ usleep(5000);
/* if we have given up, kill it */
if (--i == 0) {
@@ -522,15 +522,16 @@ int uavcan_main(int argc, char *argv[])
bitrate = DEFAULT_CAN_BITRATE;
}
+ if (UavcanNode::instance()) {
+ errx(1, "already started");
+ }
+
/*
* Start
*/
warnx("Node ID %u, bitrate %u", node_id, bitrate);
return UavcanNode::start(node_id, bitrate);
- } else {
- print_usage();
- ::exit(1);
}
/* commands below require the app to be started */
@@ -543,7 +544,16 @@ int uavcan_main(int argc, char *argv[])
if (!std::strcmp(argv[1], "status") || !std::strcmp(argv[1], "info")) {
inst->print_info();
+ return OK;
}
- return 0;
+ if (!std::strcmp(argv[1], "stop")) {
+
+ delete inst;
+ inst = nullptr;
+ return OK;
+ }
+
+ print_usage();
+ ::exit(1);
}