The mavlink terrain protocol docs reflect what QGC does with ArduPilot - ie vehicle requests terrain data from GCS. Presumably the expectation is that if a mission is uploaded that has terrain heights set the vehicle will immediately request the required maps.
But what if the GCS uploads the mission and then disconnects? Or we want to use terrain data for manual flight? Here the GCS might need to initiate download of terrain data to vehicle, or we might want to store data for offline use that gets uses if it is available.
Does ArduPilot support offline terrain data, and if so, via MAVLink? Question is on github here:
We’ve had some recent patches to get the autopilot to download more tiles without a fix - so around uploaded missions and the like - but there’s no mechanism for a GCS to say, “no, you will definitely be needing this”.
It’s actually a bit tricky to arrange through the current message set; we just discard TERRAIN_DATA that’s not in our current cache (and there’d be no ability for a GCS to confirm receipt of the data sent using that message anyway).