|
|
|
@ -822,6 +822,54 @@ void GCS_MAVLINK_Rover::handleMessage(mavlink_message_t* msg)
@@ -822,6 +822,54 @@ void GCS_MAVLINK_Rover::handleMessage(mavlink_message_t* msg)
|
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
case MAVLINK_MSG_ID_COMMAND_INT: { |
|
|
|
|
// decode packet
|
|
|
|
|
mavlink_command_int_t packet; |
|
|
|
|
mavlink_msg_command_int_decode(msg, &packet); |
|
|
|
|
uint8_t result = MAV_RESULT_UNSUPPORTED; |
|
|
|
|
|
|
|
|
|
switch(packet.command) { |
|
|
|
|
#if MOUNT == ENABLED |
|
|
|
|
case MAV_CMD_DO_SET_ROI: { |
|
|
|
|
// param1 : /* Region of interest mode (not used)*/
|
|
|
|
|
// param2 : /* MISSION index/ target ID (not used)*/
|
|
|
|
|
// param3 : /* ROI index (not used)*/
|
|
|
|
|
// param4 : /* empty */
|
|
|
|
|
// x : lat
|
|
|
|
|
// y : lon
|
|
|
|
|
// z : alt
|
|
|
|
|
// sanity check location
|
|
|
|
|
if (!check_latlng(packet.x, packet.y)) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
Location roi_loc; |
|
|
|
|
roi_loc.lat = packet.x; |
|
|
|
|
roi_loc.lng = packet.y; |
|
|
|
|
roi_loc.alt = (int32_t)(packet.z * 100.0f); |
|
|
|
|
if (roi_loc.lat == 0 && roi_loc.lng == 0 && roi_loc.alt == 0) { |
|
|
|
|
// switch off the camera tracking if enabled
|
|
|
|
|
if (rover.camera_mount.get_mode() == MAV_MOUNT_MODE_GPS_POINT) { |
|
|
|
|
rover.camera_mount.set_mode_to_default(); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// send the command to the camera mount
|
|
|
|
|
rover.camera_mount.set_roi_target(roi_loc); |
|
|
|
|
} |
|
|
|
|
result = MAV_RESULT_ACCEPTED; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
result = MAV_RESULT_UNSUPPORTED; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// send ACK or NAK
|
|
|
|
|
mavlink_msg_command_ack_send_buf(msg, chan, packet.command, result); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
case MAVLINK_MSG_ID_COMMAND_LONG: |
|
|
|
|
{ |
|
|
|
|
// decode
|
|
|
|
|