Update offboard control uorb topic

Work towards supporting the new external setpoint mavlink messages
This commit is contained in:
Thomas Gubler
2014-07-03 14:46:25 +02:00
parent 57f707af56
commit 839710daf8
5 changed files with 97 additions and 41 deletions
+28
View File
@@ -154,6 +154,10 @@ MavlinkReceiver::handle_message(mavlink_message_t *msg)
handle_message_quad_swarm_roll_pitch_yaw_thrust(msg);
break;
case MAVLINK_MSG_ID_LOCAL_NED_POSITION_SETPOINT_EXTERNAL:
handle_message_local_ned_position_setpoint_external(msg);
break;
case MAVLINK_MSG_ID_RADIO_STATUS:
handle_message_radio_status(msg);
break;
@@ -393,6 +397,30 @@ MavlinkReceiver::handle_message_quad_swarm_roll_pitch_yaw_thrust(mavlink_message
}
}
void
MavlinkReceiver::handle_message_local_ned_position_setpoint_external(mavlink_message_t *msg)
{
mavlink_local_ned_position_setpoint_external_t local_ned_position_setpoint_external;
mavlink_msg_local_ned_position_setpoint_external_decode(msg, &local_ned_position_setpoint_external);
struct offboard_control_setpoint_s offboard_control_sp;
memset(&offboard_control_sp, 0, sizeof(offboard_control_sp));
//XXX check if target system/component is correct
/* convert mavlink type (local, NED) to uORB offboard control struct */
//XXX do the conversion
//
offboard_control_sp.timestamp = hrt_absolute_time();
if (_offboard_control_sp_pub < 0) {
_offboard_control_sp_pub = orb_advertise(ORB_ID(offboard_control_setpoint), &offboard_control_sp);
} else {
orb_publish(ORB_ID(offboard_control_setpoint), _offboard_control_sp_pub, &offboard_control_sp);
}
}
void
MavlinkReceiver::handle_message_radio_status(mavlink_message_t *msg)
{
+1
View File
@@ -115,6 +115,7 @@ private:
void handle_message_set_mode(mavlink_message_t *msg);
void handle_message_vicon_position_estimate(mavlink_message_t *msg);
void handle_message_quad_swarm_roll_pitch_yaw_thrust(mavlink_message_t *msg);
void handle_message_local_ned_position_setpoint_external(mavlink_message_t *msg);
void handle_message_radio_status(mavlink_message_t *msg);
void handle_message_manual_control(mavlink_message_t *msg);
void handle_message_heartbeat(mavlink_message_t *msg);