LCOV - code coverage report
Current view: top level - SITL - SIM_AVT_CM62.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 31 31 100.0 %
Date: 2026-09-09 11:02:08 Functions: 18 18 100.0 %

          Line data    Source code
       1             : /*
       2             :    Simulator for an AVT CM62 MAVLink (Gimbal Protocol v2) gimbal
       3             : */
       4             : 
       5             : #pragma once
       6             : 
       7             : #include "SIM_config.h"
       8             : 
       9             : #if AP_SIM_AVT_CM62_ENABLED
      10             : 
      11             : #include "SIM_MAVLinkGimbalv2.h"
      12             : #include "SIM_MAVLinkCamV2.h"
      13             : #include <AP_Math/AP_Math.h>
      14             : 
      15             : namespace SITL {
      16             : 
      17             : class AVT_CM62 : public MAVLinkGimbalv2, public MAVLinkCamV2 {
      18             : public:
      19           5 :     void set_instance(uint8_t instance) override {
      20           5 :         MAVLinkGimbalv2::set_instance(instance);
      21           5 :         set_camera_instance(instance);
      22           5 :     }
      23             : 
      24       27617 :     void handle_message(const mavlink_message_t &msg) override {
      25       27617 :         MAVLinkGimbalv2::handle_message(msg);
      26       27617 :         MAVLinkCamV2::handle_message(msg);
      27       27617 :     }
      28             : 
      29      332820 :     void update(const class Aircraft &aircraft) override {
      30      332820 :         MAVLinkGimbalv2::update(aircraft);
      31      332820 :         MAVLinkCamV2::update(aircraft);
      32      332820 :     }
      33             : 
      34             : private:
      35           4 :     const char *get_vendor_name()      const override { return "AVTA"; }
      36           4 :     const char *get_model_name()       const override { return "SIM_AVTA"; }
      37             :     // firmware_version encoding: major=1 | (minor=2)<<8 | (patch=3)<<16
      38           4 :     uint32_t    get_firmware_version() const override { return (3U << 16) | (2U << 8) | 1U; }
      39           4 :     uint16_t    get_cap_flags()        const override {
      40             :         return GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS |
      41           4 :                GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS;
      42             :     }
      43           9 :     float get_pitch_min_rad() const override { return radians(-45.0f); }
      44           9 :     float get_pitch_max_rad() const override { return radians( 45.0f); }
      45           9 :     float get_yaw_min_rad()   const override { return radians(-180.0f); }
      46           9 :     float get_yaw_max_rad()   const override { return radians( 180.0f); }
      47             : 
      48           4 :     const char *get_camera_vendor_name()      const override { return "AVTA"; }
      49           4 :     const char *get_camera_model_name()       const override { return "SIM_AVTA_CAM"; }
      50           4 :     uint32_t    get_camera_firmware_version() const override { return (3U << 16) | (2U << 8) | 1U; }
      51           4 :     uint32_t    get_camera_cap_flags()        const override {
      52             :         return CAMERA_CAP_FLAGS_CAPTURE_IMAGE |
      53             :                CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM |   // speculative: unverified on real hardware
      54           4 :                CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS;   // speculative: unverified on real hardware
      55             :     }
      56             : 
      57         326 :     void camera_send_mavlink_message(const mavlink_message_t &msg) override {
      58         326 :         send_mavlink_message(msg);
      59         326 :     }
      60      333183 :     uint8_t camera_vehicle_sysid() const override { return vehicle_sysid(); }
      61         326 :     mavlink_status_t &camera_mav_status() override { return gimbal_mav_status(); }
      62             : };
      63             : 
      64             : }  // namespace SITL
      65             : 
      66             : #endif  // AP_SIM_AVT_CM62_ENABLED

Generated by: LCOV version 1.14