|
|
@ -895,6 +895,22 @@ void GCS_MAVLINK_Plane::handleMessage(mavlink_message_t* msg) |
|
|
|
{ |
|
|
|
{ |
|
|
|
switch (msg->msgid) { |
|
|
|
switch (msg->msgid) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN: |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
mavlink_set_gps_global_origin_t packet; |
|
|
|
|
|
|
|
mavlink_msg_set_gps_global_origin_decode(msg, &packet); |
|
|
|
|
|
|
|
// sanity check location
|
|
|
|
|
|
|
|
if (!check_latlng(packet.latitude, packet.longitude)) { |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Location ekf_origin {}; |
|
|
|
|
|
|
|
ekf_origin.lat = packet.latitude; |
|
|
|
|
|
|
|
ekf_origin.lng = packet.longitude; |
|
|
|
|
|
|
|
ekf_origin.alt = packet.altitude / 10; |
|
|
|
|
|
|
|
plane.set_ekf_origin(ekf_origin); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
case MAVLINK_MSG_ID_REQUEST_DATA_STREAM: |
|
|
|
case MAVLINK_MSG_ID_REQUEST_DATA_STREAM: |
|
|
|
{ |
|
|
|
{ |
|
|
|
handle_request_data_stream(msg, true); |
|
|
|
handle_request_data_stream(msg, true); |
|
|
@ -1185,6 +1201,10 @@ void GCS_MAVLINK_Plane::handleMessage(mavlink_message_t* msg) |
|
|
|
case MAV_CMD_GET_HOME_POSITION: |
|
|
|
case MAV_CMD_GET_HOME_POSITION: |
|
|
|
if (plane.home_is_set != HOME_UNSET) { |
|
|
|
if (plane.home_is_set != HOME_UNSET) { |
|
|
|
send_home(plane.ahrs.get_home()); |
|
|
|
send_home(plane.ahrs.get_home()); |
|
|
|
|
|
|
|
Location ekf_origin; |
|
|
|
|
|
|
|
if (plane.ahrs.get_origin(ekf_origin)) { |
|
|
|
|
|
|
|
send_ekf_origin(ekf_origin); |
|
|
|
|
|
|
|
} |
|
|
|
result = MAV_RESULT_ACCEPTED; |
|
|
|
result = MAV_RESULT_ACCEPTED; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
result = MAV_RESULT_FAILED; |
|
|
|
result = MAV_RESULT_FAILED; |
|
|
|