From 28d3729acd202d8bac131ac98e59534e8d08f25a Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 11 Jun 2015 15:43:28 -1000 Subject: [PATCH 1/3] Backport of Fixes mavlink_if0: invalid data rate '(null)' bug --- src/modules/mavlink/mavlink_main.cpp | 51 ++++++++++++++++++---------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp index 7c739cfc34..a28c3bd0b3 100644 --- a/src/modules/mavlink/mavlink_main.cpp +++ b/src/modules/mavlink/mavlink_main.cpp @@ -784,6 +784,7 @@ Mavlink::get_free_tx_buf() enable_flow_control(false); } } + #endif return buf_free; @@ -851,6 +852,7 @@ Mavlink::send_message(const uint8_t msgid, const void *msg, uint8_t component_ID _last_write_success_time = _last_write_try_time; count_txbytes(packet_len); } + #endif pthread_mutex_unlock(&_send_mutex); @@ -903,6 +905,7 @@ Mavlink::resend_message(mavlink_message_t *msg) _last_write_success_time = _last_write_try_time; count_txbytes(packet_len); } + #endif pthread_mutex_unlock(&_send_mutex); @@ -954,7 +957,8 @@ Mavlink::send_statustext(unsigned char severity, const char *string) mavlink_logbuffer_write(&_logbuffer, &logmsg); } -void Mavlink::send_autopilot_capabilites() { +void Mavlink::send_autopilot_capabilites() +{ struct vehicle_status_s status; MavlinkOrbSubscription *status_sub = this->add_orb_subscription(ORB_ID(vehicle_status)); @@ -977,16 +981,16 @@ void Mavlink::send_autopilot_capabilites() { memcpy(&msg.flight_custom_version, &px4_git_version_binary, sizeof(msg.flight_custom_version)); memcpy(&msg.middleware_custom_version, &px4_git_version_binary, sizeof(msg.middleware_custom_version)); memset(&msg.os_custom_version, 0, sizeof(msg.os_custom_version)); - #ifdef CONFIG_CDCACM_VENDORID +#ifdef CONFIG_CDCACM_VENDORID msg.vendor_id = CONFIG_CDCACM_VENDORID; - #else +#else msg.vendor_id = 0; - #endif - #ifdef CONFIG_CDCACM_PRODUCTID +#endif +#ifdef CONFIG_CDCACM_PRODUCTID msg.product_id = CONFIG_CDCACM_PRODUCTID; - #else +#else msg.product_id = 0; - #endif +#endif uint32_t uid[3]; mcu_unique_id(uid); msg.uid = (((uint64_t)uid[1]) << 32) | uid[2]; @@ -1287,16 +1291,19 @@ Mavlink::task_main(int argc, char *argv[]) _datarate = 0; _mode = MAVLINK_MODE_NORMAL; -#ifdef __PX4_NUTTX - /* work around some stupidity in task_create's argv handling */ - argc -= 2; - argv += 2; -#endif + /* + * Called via create_task with taskname followed by original argv + * mavlink start + * + * Remove all 3 + */ + argc -= 3; + argv += 3; /* don't exit from getopt loop to leave getopt global variables in consistent state, * set error flag instead */ bool err_flag = false; - int myoptind=1; + int myoptind = 1; const char *myoptarg = NULL; while ((ch = px4_getopt(argc, argv, "b:r:d:m:fpvwx", &myoptind, &myoptarg)) != EOF) { @@ -1336,6 +1343,7 @@ Mavlink::task_main(int argc, char *argv[]) } else if (strcmp(myoptarg, "camera") == 0) { // left in here for compatibility _mode = MAVLINK_MODE_ONBOARD; + } else if (strcmp(myoptarg, "onboard") == 0) { _mode = MAVLINK_MODE_ONBOARD; } @@ -1402,6 +1410,7 @@ Mavlink::task_main(int argc, char *argv[]) warn("could not open %s", _device_name); return ERROR; } + #endif /* initialize send mutex */ @@ -1737,11 +1746,11 @@ Mavlink::start(int argc, char *argv[]) // task - start_helper() only returns // when the started task exits. px4_task_spawn_cmd(buf, - SCHED_DEFAULT, - SCHED_PRIORITY_DEFAULT, - 2400, - (px4_main_t)&Mavlink::start_helper, - (char * const *)argv); + SCHED_DEFAULT, + SCHED_PRIORITY_DEFAULT, + 2400, + (px4_main_t)&Mavlink::start_helper, + (char *const *)argv); // Ensure that this shell command // does not return before the instance @@ -1816,6 +1825,12 @@ Mavlink::stream_command(int argc, char *argv[]) float rate = -1.0f; const char *stream_name = nullptr; + /* + * Called via main with original argv + * mavlink start + * + * Remove 2 + */ argc -= 2; argv += 2; From 3f4b5fcb72442f4a4415599768df6bc147edca59 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Fri, 12 Jun 2015 09:27:15 +0200 Subject: [PATCH 2/3] HIL driver: Fix boot order race --- src/drivers/hil/hil.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/drivers/hil/hil.cpp b/src/drivers/hil/hil.cpp index be514eeb2b..11f3da9b49 100644 --- a/src/drivers/hil/hil.cpp +++ b/src/drivers/hil/hil.cpp @@ -346,10 +346,9 @@ HIL::task_main() /* advertise the mixed control outputs */ actuator_outputs_s outputs; memset(&outputs, 0, sizeof(outputs)); - /* advertise the mixed control outputs */ - int dummy; - _t_outputs = orb_advertise_multi(ORB_ID(actuator_outputs), - &outputs, &dummy, ORB_PRIO_LOW); + /* advertise the mixed control outputs, insist on the first group output */ + _t_outputs = orb_advertise(ORB_ID(actuator_outputs), + &outputs); px4_pollfd_struct_t fds[2]; fds[0].fd = _t_actuators; From 5eadda5ea5709ac1204c83003c28fb775618193e Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Fri, 12 Jun 2015 09:31:10 +0200 Subject: [PATCH 3/3] Comment out unused pca8574 driver in boot --- ROMFS/px4fmu_common/init.d/rcS | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index 2dfe3d8e30..e40121eec6 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -101,9 +101,10 @@ then fi fi - if pca8574 start - then - fi + # Currently unused, but might be useful down the road + #if pca8574 start + #then + #fi # # Set default values