Adds SITL::MAVLinkCamV2, a protocol mixin for MAVLink Camera Protocol
v2 peripherals, modelled on the MAVLinkGimbalv2/Gimbal pattern.
New classes:
- SITL::Camera — simple camera state holder (shot count)
- SITL::MAVLinkCamV2 — sends MAV_TYPE_CAMERA heartbeats, responds to
MAV_CMD_REQUEST_MESSAGE for CAMERA_INFORMATION (with
CAMERA_CAP_FLAGS_CAPTURE_IMAGE), and handles MAV_CMD_IMAGE_START_CAPTURE
AVT_CM62 gains multiple inheritance from MAVLinkCamV2 and overrides
handle_message/update/set_instance to dispatch to both base classes.
The camera component ID is MAV_COMP_ID_CAMERA + instance, allowing
AP_Camera_MAVLinkCamV2 (CAM_TYPE=6) to discover and drive it.
MAVLinkGimbalv2::handle_message is made protected+virtual so AVT_CM62
can override it; send_mavlink_message and transport accessors move to
protected so the camera mixin can reach them via the combined class.
Autotest: MountAVTCM62Dual gains a 12 s delay before triggering to
allow AP_Camera_MAVLinkCamV2::find_camera() to complete its 10 s boot
wait and exchange CAMERA_INFORMATION.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>