/* 1hz update function. This is here to ensure progress is made on disk IO even if no MAVLink send_request() operations are called for a while. */ void AP_Terrain::update(void) { // just schedule any needed disk IO schedule_disk_io(); // try to ensure the home location is populated float height; height_amsl(ahrs.get_home(), height); // update the cached current location height Location loc; if (ahrs.get_position(loc) && height_amsl(loc, height)) { last_current_loc_height = height; have_current_loc_height = true; } // check for pending mission data update_mission_data(); // check for pending rally data update_rally_data(); // update capabilities if (enable) { hal.util->set_capabilities(MAV_PROTOCOL_CAPABILITY_TERRAIN); } else { hal.util->clear_capabilities(MAV_PROTOCOL_CAPABILITY_TERRAIN); } }
/* 1hz update function. This is here to ensure progress is made on disk IO even if no MAVLink send_request() operations are called for a while. */ void AP_Terrain::update(void) { // just schedule any needed disk IO schedule_disk_io(); // try to ensure the home location is populated float height; height_amsl(ahrs.get_home(), height); }
/* 1hz update function. This is here to ensure progress is made on disk IO even if no MAVLink send_request() operations are called for a while. */ void AP_Terrain::update(void) { // just schedule any needed disk IO schedule_disk_io(); const AP_AHRS &ahrs = AP::ahrs(); // try to ensure the home location is populated float height; height_amsl(ahrs.get_home(), height, false); // update the cached current location height Location loc; bool pos_valid = ahrs.get_position(loc); bool terrain_valid = pos_valid && height_amsl(loc, height, false); if (pos_valid && terrain_valid) { last_current_loc_height = height; have_current_loc_height = true; } // check for pending mission data update_mission_data(); // check for pending rally data update_rally_data(); // update capabilities and status if (allocate()) { hal.util->set_capabilities(MAV_PROTOCOL_CAPABILITY_TERRAIN); if (!pos_valid) { // we don't know where we are system_status = TerrainStatusUnhealthy; } else if (!terrain_valid) { // we don't have terrain data at current location system_status = TerrainStatusUnhealthy; } else { system_status = TerrainStatusOK; } } else { hal.util->clear_capabilities(MAV_PROTOCOL_CAPABILITY_TERRAIN); system_status = TerrainStatusDisabled; } }
/* 1hz update function. This is here to ensure progress is made on disk IO even if no MAVLink send_request() operations are called for a while. */ void AP_Terrain::update(void) { // just schedule any needed disk IO schedule_disk_io(); // try to ensure the home location is populated float height; height_amsl(ahrs.get_home(), height); // update the cached current location height Location loc; if (ahrs.get_position(loc) && height_amsl(loc, height)) { last_current_loc_height = height; have_current_loc_height = true; } // check for pending mission data update_mission_data(); // check for pending rally data update_rally_data(); }