From f4d5149a842bfbcc73262b5b8659a207a3dae160 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Fri, 7 Aug 2015 15:49:23 +0200 Subject: [PATCH 1/6] Fix airframe generation by adding missing slash (Windows) --- makefiles/firmware.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefiles/firmware.mk b/makefiles/firmware.mk index 0aff25cfea..2d971e1c58 100644 --- a/makefiles/firmware.mk +++ b/makefiles/firmware.mk @@ -503,7 +503,7 @@ $(PRODUCT_BUNDLE): $(PRODUCT_BIN) @$(ECHO) %% Generating $@ ifdef GEN_PARAM_XML $(Q) $(PYTHON) $(PX4_BASE)/Tools/px_process_params.py --src-path $(PX4_BASE)/src --board CONFIG_ARCH_BOARD_$(CONFIG_BOARD) --xml - $(Q) $(PYTHON) $(PX4_BASE)/Tools/px_process_airframes.py -a $(PX4_BASE)/ROMFS/px4fmu_common/init.d --board CONFIG_ARCH_BOARD_$(CONFIG_BOARD) --xml + $(Q) $(PYTHON) $(PX4_BASE)/Tools/px_process_airframes.py -a $(PX4_BASE)/ROMFS/px4fmu_common/init.d/ --board CONFIG_ARCH_BOARD_$(CONFIG_BOARD) --xml $(Q) $(MKFW) --prototype $(IMAGE_DIR)/$(BOARD).prototype \ --git_identity $(PX4_BASE) \ --parameter_xml $(PRODUCT_PARAMXML) \ From 7d07fc98ba392e0f65321cc75442837ce336477d Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Fri, 7 Aug 2015 17:46:23 +0200 Subject: [PATCH 2/6] Fix boot script handling --- makefiles/firmware.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/makefiles/firmware.mk b/makefiles/firmware.mk index 2d971e1c58..44c0de62ad 100644 --- a/makefiles/firmware.mk +++ b/makefiles/firmware.mk @@ -375,10 +375,10 @@ ifneq ($(ROMFS_EXTRA_FILES),) $(Q) $(MKDIR) -p $(ROMFS_SCRATCH)/extras $(Q) $(COPY) $(ROMFS_EXTRA_FILES) $(ROMFS_SCRATCH)/extras endif - $(Q) $(PYTHON) -u $(ROMFS_AUTOSTART) -a $(ROMFS_ROOT)/init.d -s $(ROMFS_SCRATCH)/init.d/rc.autostart + $(Q) $(PYTHON) -u $(ROMFS_AUTOSTART) -a $(ROMFS_ROOT)/init.d/ -s $(ROMFS_SCRATCH)/init.d/rc.autostart # Execute in standard dir as well # so developers notice the generated file - $(Q) $(PYTHON) -u $(ROMFS_AUTOSTART) -a $(ROMFS_ROOT)/init.d -s $(ROMFS_ROOT)/init.d/rc.autostart + $(Q) $(PYTHON) -u $(ROMFS_AUTOSTART) -a $(ROMFS_ROOT)/init.d/ -s $(ROMFS_ROOT)/init.d/rc.autostart $(Q) $(PYTHON) -u $(ROMFS_PRUNER) --folder $(ROMFS_SCRATCH) EXTRA_CLEANS += $(ROMGS_OBJ) $(ROMFS_IMG) From e829eb0670447abd57e17c16c66039f3906d2004 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 8 Aug 2015 00:07:09 +0200 Subject: [PATCH 3/6] MAVLink app: Fix for hardware multiplier resetting to 1 once limitation was overcome. --- src/modules/mavlink/mavlink_main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp index b4474f96dc..1e0b3ddb3e 100644 --- a/src/modules/mavlink/mavlink_main.cpp +++ b/src/modules/mavlink/mavlink_main.cpp @@ -1282,6 +1282,9 @@ Mavlink::update_rate_mult() /* limit to a max multiplier of 1 */ hardware_mult = fminf(1.0f, hardware_mult); } + } else { + /* no limitation, set hardware to 1 */ + hardware_mult = 1.0f; } _last_hw_rate_timestamp = tstatus.timestamp; From 0cae5f224c1beed8a98b7c06f18b65da533f6acf Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 8 Aug 2015 00:08:14 +0200 Subject: [PATCH 4/6] Commander: Trigger preflight check on every reconnect, but not when armed. Make RC regained and other messages non-critical. Implement param reset method. --- src/modules/commander/commander.cpp | 36 +++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp index f045cb4b04..57e175ed19 100644 --- a/src/modules/commander/commander.cpp +++ b/src/modules/commander/commander.cpp @@ -1348,10 +1348,15 @@ int commander_thread_main(int argc, char *argv[]) orb_copy(telemetry_status_orb_id[i], telemetry_subs[i], &telemetry); /* perform system checks when new telemetry link connected */ - if (mavlink_fd && - telemetry_last_heartbeat[i] == 0 && + if ( + /* we actually have a way to talk to the user */ + mavlink_fd && + /* we first connect a link or re-connect a link after loosing it */ + (telemetry_last_heartbeat[i] == 0 || (hrt_elapsed_time(&telemetry_last_heartbeat[i]) > 3 * 1000 * 1000)) && + /* and this link has a communication partner */ telemetry.heartbeat_time > 0 && - hrt_elapsed_time(&telemetry.heartbeat_time) < datalink_loss_timeout * 1e6) { + /* and the system is not already armed (and potentially flying) */ + !armed.armed) { bool chAirspeed = false; /* Perform airspeed check only if circuit breaker is not @@ -1823,7 +1828,7 @@ int commander_thread_main(int argc, char *argv[]) } else { if (status.rc_signal_lost) { - mavlink_log_critical(mavlink_fd, "RC SIGNAL REGAINED after %llums", + mavlink_log_info(mavlink_fd, "RC SIGNAL REGAINED after %llums", (hrt_absolute_time() - status.rc_signal_lost_timestamp) / 1000); status_changed = true; } @@ -1950,7 +1955,7 @@ int commander_thread_main(int argc, char *argv[]) /* only report a regain */ if (telemetry_last_dl_loss[i] > 0) { - mavlink_and_console_log_critical(mavlink_fd, "data link #%i regained", i); + mavlink_and_console_log_info(mavlink_fd, "data link #%i regained", i); } telemetry_lost[i] = false; @@ -1968,7 +1973,7 @@ int commander_thread_main(int argc, char *argv[]) /* only reset the timestamp to a different time on state change */ telemetry_last_dl_loss[i] = hrt_absolute_time(); - mavlink_and_console_log_critical(mavlink_fd, "data link #%i lost", i); + mavlink_and_console_log_info(mavlink_fd, "data link #%i lost", i); telemetry_lost[i] = true; } } @@ -1983,7 +1988,9 @@ int commander_thread_main(int argc, char *argv[]) } else { if (!status.data_link_lost) { - mavlink_and_console_log_critical(mavlink_fd, "ALL DATA LINKS LOST"); + if (armed.armed) { + mavlink_and_console_log_critical(mavlink_fd, "ALL DATA LINKS LOST"); + } status.data_link_lost = true; status.data_link_lost_counter++; status_changed = true; @@ -2978,6 +2985,21 @@ void *commander_low_prio_loop(void *arg) mavlink_log_critical(mavlink_fd, "ERROR: %s", strerror(ret)); } + answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_FAILED); + } + } else if (((int)(cmd.param1)) == 2) { + + /* reset parameters and save empty file */ + param_reset_all(); + int ret = param_save_default(); + + if (ret == OK) { + /* do not spam MAVLink, but provide the answer / green led mechanism */ + mavlink_log_critical(mavlink_fd, "onboard parameters reset"); + answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_ACCEPTED); + + } else { + mavlink_log_critical(mavlink_fd, "param reset error"); answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_FAILED); } } From bdeca34830f48e75c048b763660d9691eef9cbbb Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 8 Aug 2015 00:10:01 +0200 Subject: [PATCH 5/6] Mark boot complete in all conditions, not just if autostart has been configured already. --- ROMFS/px4fmu_common/init.d/rcS | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index ad9a311ab4..dfa270b048 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -702,19 +702,19 @@ then tone_alarm error fi - # Boot is complete, inform MAVLink app(s) that the system is now fully up and running - mavlink boot_complete - - if [ $EXIT_ON_END == yes ] - then - echo "Exit from nsh" - exit - fi - unset EXIT_ON_END - # End of autostart fi +# Boot is complete, inform MAVLink app(s) that the system is now fully up and running +mavlink boot_complete + +if [ $EXIT_ON_END == yes ] +then + echo "Exit from nsh" + exit +fi +unset EXIT_ON_END + # There is no further processing, so we can free some RAM # XXX potentially unset all script variables. unset TUNE_ERR From e09771be17d8965f8928b6d577e4222c01e67fa6 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 8 Aug 2015 11:31:58 +0200 Subject: [PATCH 6/6] NSH terminal: Increase hold-off time to ensure USB is up and running --- src/systemcmds/nshterm/nshterm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/systemcmds/nshterm/nshterm.c b/src/systemcmds/nshterm/nshterm.c index 50547a5626..bdfd26a64d 100644 --- a/src/systemcmds/nshterm/nshterm.c +++ b/src/systemcmds/nshterm/nshterm.c @@ -68,8 +68,8 @@ nshterm_main(int argc, char *argv[]) int armed_fd = orb_subscribe(ORB_ID(actuator_armed)); struct actuator_armed_s armed; - /* back off 800 ms to avoid running into the USB setup timing */ - while (hrt_absolute_time() < 800U * 1000U) { + /* back off 1500 ms to avoid running into the USB setup timing */ + while (hrt_absolute_time() < 1500U * 1000U) { usleep(50000); }