aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorJulian Oes <julian@oes.ch>2013-11-05 19:56:33 +0100
committerJulian Oes <julian@oes.ch>2013-11-05 19:56:33 +0100
commit4502c285eb8b284b7c08666b6d0e3e81035bace3 (patch)
tree717f85b09691bbde7eba6b209d39429899696b0e /src/modules
parent857c3d2efd49085dfd28827b06d96776340e5a09 (diff)
downloadpx4-firmware-4502c285eb8b284b7c08666b6d0e3e81035bace3.tar.gz
px4-firmware-4502c285eb8b284b7c08666b6d0e3e81035bace3.tar.bz2
px4-firmware-4502c285eb8b284b7c08666b6d0e3e81035bace3.zip
Startup scripts: Start the commander early and let it try to open the mavlink_fd with 20Hz
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/commander/commander.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index ed090271c..ace13bb78 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -116,6 +116,8 @@ extern struct system_load_s system_load;
#define LOW_VOLTAGE_BATTERY_COUNTER_LIMIT (LOW_VOLTAGE_BATTERY_HYSTERESIS_TIME_MS*COMMANDER_MONITORING_LOOPSPERMSEC)
#define CRITICAL_VOLTAGE_BATTERY_COUNTER_LIMIT (CRITICAL_VOLTAGE_BATTERY_HYSTERESIS_TIME_MS*COMMANDER_MONITORING_LOOPSPERMSEC)
+#define MAVLINK_OPEN_INTERVAL 50000
+
#define STICK_ON_OFF_LIMIT 0.75f
#define STICK_THRUST_RANGE 1.0f
#define STICK_ON_OFF_HYSTERESIS_TIME_MS 1000
@@ -582,16 +584,6 @@ int commander_thread_main(int argc, char *argv[])
mavlink_fd = open(MAVLINK_LOG_DEVICE, 0);
- if (mavlink_fd < 0) {
- /* try again later */
- usleep(20000);
- mavlink_fd = open(MAVLINK_LOG_DEVICE, 0);
-
- if (mavlink_fd < 0) {
- warnx("ERROR: Failed to open MAVLink log stream again, start mavlink app first.");
- }
- }
-
/* Main state machine */
/* make sure we are in preflight state */
memset(&status, 0, sizeof(status));
@@ -770,6 +762,11 @@ int commander_thread_main(int argc, char *argv[])
while (!thread_should_exit) {
+ if (mavlink_fd < 0 && counter % (1000000 / MAVLINK_OPEN_INTERVAL) == 0) {
+ /* try to open the mavlink log device every once in a while */
+ mavlink_fd = open(MAVLINK_LOG_DEVICE, 0);
+ }
+
/* update parameters */
orb_check(param_changed_sub, &updated);