LCOV - code coverage report
Current view: top level - AP_RangeFinder - AP_RangeFinder_VL53L0X.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 2 0.0 %
Date: 2026-09-09 11:02:08 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "AP_RangeFinder_config.h"
       4             : 
       5             : #if AP_RANGEFINDER_VL53L0X_ENABLED
       6             : 
       7             : #include "AP_RangeFinder.h"
       8             : #include "AP_RangeFinder_Backend.h"
       9             : #include <AP_HAL/I2CDevice.h>
      10             : 
      11             : class AP_RangeFinder_VL53L0X : public AP_RangeFinder_Backend
      12             : {
      13             : 
      14             : public:
      15             :     // static detection function
      16             :     static AP_RangeFinder_Backend *detect(RangeFinder::RangeFinder_State &_state, AP_RangeFinder_Params &_params, AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev);
      17             : 
      18             :     // update state
      19             :     void update(void) override;
      20             : 
      21             : protected:
      22             : 
      23           0 :     virtual MAV_DISTANCE_SENSOR _get_mav_distance_sensor_type() const override {
      24           0 :         return MAV_DISTANCE_SENSOR_LASER;
      25             :     }
      26             : 
      27             : private:
      28             :     // constructor
      29             :     AP_RangeFinder_VL53L0X(RangeFinder::RangeFinder_State &_state, AP_RangeFinder_Params &_params, AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev);
      30             : 
      31             :     __INITFUNC__ bool init();
      32             :     void timer();
      33             : 
      34             :     // check sensor ID
      35             :     bool check_id(void);
      36             : 
      37             :     // get a reading
      38             :     bool get_reading(uint16_t &reading_cm);
      39             :     AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev;
      40             : 
      41             :     uint8_t read_register(uint8_t reg);
      42             :     uint16_t read_register16(uint8_t reg);
      43             : 
      44             :     void write_register(uint8_t reg, uint8_t value);
      45             :     void write_register16(uint8_t reg, uint16_t value);
      46             : 
      47             :     struct SequenceStepEnables {
      48             :         bool tcc:1, msrc:1, dss:1, pre_range:1, final_range:1;
      49             :     };
      50             : 
      51             :     struct SequenceStepTimeouts {
      52             :         uint16_t pre_range_vcsel_period_pclks, final_range_vcsel_period_pclks;
      53             : 
      54             :         uint16_t msrc_dss_tcc_mclks, pre_range_mclks, final_range_mclks;
      55             :         uint32_t msrc_dss_tcc_us,    pre_range_us,    final_range_us;
      56             :     };
      57             : 
      58             :     struct RegData {
      59             :         uint8_t reg;
      60             :         uint8_t value;
      61             :     };
      62             : 
      63             :     static const RegData tuning_data[];
      64             :     
      65             :     enum vcselPeriodType { VcselPeriodPreRange, VcselPeriodFinalRange };
      66             :     
      67             :     bool get_SPAD_info(uint8_t * count, bool *type_is_aperture);
      68             :     void getSequenceStepEnables(SequenceStepEnables * enables);
      69             :     uint32_t getMeasurementTimingBudget(void);
      70             :     void getSequenceStepTimeouts(SequenceStepEnables const * enables, SequenceStepTimeouts * timeouts);
      71             :     uint8_t getVcselPulsePeriod(vcselPeriodType type);
      72             :     uint32_t timeoutMclksToMicroseconds(uint16_t timeout_period_mclks, uint8_t vcsel_period_pclks);
      73             :     uint16_t decodeTimeout(uint16_t reg_val);
      74             :     bool setMeasurementTimingBudget(uint32_t budget_us);
      75             :     uint32_t timeoutMicrosecondsToMclks(uint32_t timeout_period_us, uint8_t vcsel_period_pclks);
      76             :     uint16_t encodeTimeout(uint16_t timeout_mclks);
      77             :     bool performSingleRefCalibration(uint8_t vhv_init_byte);
      78             :     void start_continuous(void);
      79             :     
      80             :     uint8_t stop_variable;
      81             :     uint32_t measurement_timing_budget_us;
      82             :     uint32_t start_ms;
      83             : 
      84             :     uint32_t sum_mm;
      85             :     uint32_t counter;
      86             : };
      87             : 
      88             : #endif  // AP_RANGEFINDER_VL53L0X_ENABLED

Generated by: LCOV version 1.14