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

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "AP_RCProtocol_config.h"
       4             : 
       5             : #if AP_RCPROTOCOL_DRONECAN_ENABLED
       6             : 
       7             : #include "AP_RCProtocol_Backend.h"
       8             : 
       9             : #include <AP_DroneCAN/AP_DroneCAN.h>
      10             : 
      11             : #include <AP_Common/missing/endian.h>
      12             : 
      13             : class AP_RCProtocol_DroneCAN : public AP_RCProtocol_Backend {
      14             : public:
      15             : 
      16        2094 :     AP_RCProtocol_DroneCAN(AP_RCProtocol &_frontend) :
      17        2094 :         AP_RCProtocol_Backend(_frontend) {
      18        2094 :         _singleton = this;
      19        2094 :     }
      20             : 
      21             :     static bool subscribe_msgs(AP_DroneCAN* ap_dronecan);
      22             : 
      23             :     void update() override;
      24             : 
      25             : private:
      26             : 
      27             :     static class AP_RCProtocol_DroneCAN *_singleton;
      28             : 
      29             :     static void handle_rcinput(AP_DroneCAN *ap_dronecan, const CanardRxTransfer& transfer, const dronecan_sensors_rc_RCInput &msg);
      30             : 
      31             :     static AP_RCProtocol_DroneCAN* get_dronecan_backend(AP_DroneCAN* ap_dronecan, uint8_t node_id);
      32             : 
      33             :     enum QualityType {
      34             :         RSSI = 0,
      35             :         LQ_ACTIVE_ANTENNA = 1,
      36             :         RSSI_DBM = 2,
      37             :         SNR = 3,
      38             :         TX_POWER = 4
      39             :     };
      40             : 
      41             :     struct {
      42             :         uint8_t quality;
      43             :         union {
      44             :             uint16_t status;
      45             :             struct {
      46             :                 uint8_t QUALITY_VALID : 1;
      47             :                 uint8_t FAILSAFE : 1;
      48             :                 uint8_t QUALITY_TYPE : 3;
      49             :             } bits;
      50             :         };
      51             :         uint8_t num_channels;
      52             :         uint16_t channels[MAX_RCIN_CHANNELS];
      53             : 
      54             :         uint32_t last_sample_time_ms;
      55             :         HAL_Semaphore sem;
      56             :     } rcin;
      57             : 
      58             :     int16_t _rssi = -1;
      59             : 
      60             :     // Module Detection Registry
      61             :     static struct Registry {
      62             :         struct DetectedDevice {
      63             :             AP_DroneCAN* ap_dronecan;
      64             :             uint8_t node_id;
      65             :             AP_RCProtocol_DroneCAN *driver;
      66             :         } detected_devices[1];
      67             :         HAL_Semaphore sem;
      68             :     } registry;
      69             : 
      70             :     uint32_t last_receive_ms;
      71             : };
      72             : 
      73             : 
      74             : #endif  // AP_RCPROTOCOL_DRONECAN_ENABLED

Generated by: LCOV version 1.14