LCOV - code coverage report
Current view: top level - home/pbarker/rc/ardupilot/ArduSub - GCS_Sub.cpp (source / functions) Hit Total Coverage
Test: lcov.info Lines: 33 38 86.8 %
Date: 2026-09-09 11:02:08 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #include "GCS_Sub.h"
       2             : 
       3             : #include "Sub.h"
       4             : 
       5       52016 : void GCS_Sub::update_vehicle_sensor_status_flags()
       6             : {
       7             :     // mode-specific sensors:
       8       52016 :     control_sensors_present |=
       9             :         MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL |
      10             :         MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION |
      11             :         MAV_SYS_STATUS_SENSOR_YAW_POSITION;
      12             : 
      13       52016 :     control_sensors_enabled |=
      14             :         MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL |
      15             :         MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION |
      16             :         MAV_SYS_STATUS_SENSOR_YAW_POSITION;
      17             : 
      18       52016 :     control_sensors_health |=
      19             :         MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL |
      20             :         MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION |
      21             :         MAV_SYS_STATUS_SENSOR_YAW_POSITION;
      22             : 
      23       52016 :     control_sensors_present |=
      24             :         MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL |
      25             :         MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL;
      26             : 
      27       52016 :     switch (sub.control_mode) {
      28       25311 :     case Mode::Number::ALT_HOLD:
      29             :     case Mode::Number::AUTO:
      30             :     case Mode::Number::GUIDED:
      31             :     case Mode::Number::CIRCLE:
      32             :     case Mode::Number::SURFACE:
      33             :     case Mode::Number::POSHOLD:
      34       25311 :         control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL;
      35       25311 :         control_sensors_health |= MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL;
      36       25311 :         control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL;
      37       25311 :         control_sensors_health |= MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL;
      38       25311 :         break;
      39       26705 :     default:
      40       26705 :         break;
      41             :     }
      42             : 
      43             :     // override the parent class's values for ABSOLUTE_PRESSURE to
      44             :     // only honour water-pressure sensors
      45       52016 :     control_sensors_present &= ~MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE;
      46       52016 :     control_sensors_enabled &= ~MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE;
      47       52016 :     control_sensors_health &= ~MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE;
      48       52016 :     if (sub.ap.depth_sensor_present) {
      49       52016 :         control_sensors_present |= MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE;
      50       52016 :         control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE;
      51       52016 :         if (sub.sensor_health.depth) {
      52       51455 :             control_sensors_health |= MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE;
      53             :         }
      54             :     }
      55             : 
      56             : #if AP_TERRAIN_AVAILABLE
      57       52016 :     switch (sub.terrain.status()) {
      58       52016 :     case AP_Terrain::TerrainStatusDisabled:
      59       52016 :         break;
      60           0 :     case AP_Terrain::TerrainStatusUnhealthy:
      61             :         // To-Do: restore unhealthy terrain status reporting once terrain is used in Sub
      62             :         //control_sensors_present |= MAV_SYS_STATUS_TERRAIN;
      63             :         //control_sensors_enabled |= MAV_SYS_STATUS_TERRAIN;
      64             :         //break;
      65             :     case AP_Terrain::TerrainStatusOK:
      66           0 :         control_sensors_present |= MAV_SYS_STATUS_TERRAIN;
      67           0 :         control_sensors_enabled |= MAV_SYS_STATUS_TERRAIN;
      68           0 :         control_sensors_health  |= MAV_SYS_STATUS_TERRAIN;
      69           0 :         break;
      70             :     }
      71             : #endif
      72             : 
      73             : #if AP_RANGEFINDER_ENABLED
      74       52016 :     const RangeFinder *rangefinder = RangeFinder::get_singleton();
      75       52016 :     if (sub.rangefinder_state.enabled) {
      76       51292 :         control_sensors_present |= MAV_SYS_STATUS_SENSOR_LASER_POSITION;
      77       51292 :         control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_LASER_POSITION;
      78       51292 :         if (rangefinder && rangefinder->has_data_orient(ROTATION_PITCH_270)) {
      79       51096 :             control_sensors_health |= MAV_SYS_STATUS_SENSOR_LASER_POSITION;
      80             :         }
      81             :     }
      82             : #endif
      83       52016 : }
      84             : 
      85             : #if AP_LTM_TELEM_ENABLED
      86             : // avoid building/linking LTM:
      87          83 : void AP_LTM_Telem::init() {};
      88             : #endif
      89             : #if AP_DEVO_TELEM_ENABLED
      90             : // avoid building/linking Devo:
      91             : void AP_DEVO_Telem::init() {};
      92             : #endif

Generated by: LCOV version 1.14