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