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

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : /*
       4             :   Simulator for the TeraRangerI2C rangefinder
       5             : 
       6             : ./Tools/autotest/sim_vehicle.py --gdb --debug -v ArduCopter --speedup=1
       7             : 
       8             : param set RNGFND1_TYPE 14  # TRI2C
       9             : param ftp
      10             : param set RNGFND1_ADDR 49
      11             : graph RANGEFINDER.distance
      12             : graph GLOBAL_POSITION_INT.relative_alt/1000-RANGEFINDER.distance
      13             : reboot
      14             : 
      15             : arm throttle
      16             : rc 3 1600
      17             : */
      18             : 
      19             : #include "SIM_config.h"
      20             : 
      21             : #if AP_SIM_TERARANGERI2C_ENABLED
      22             : 
      23             : #include "SIM_I2CDevice.h"
      24             : 
      25             : namespace SITL {
      26             : 
      27             : class TeraRangerI2CDevReg : public I2CRegEnum {
      28             : public:
      29             :     // static constexpr uint8_t TRIGGER_READING = 0x00;
      30             :     static constexpr uint8_t WHO_AM_I = 0x01;
      31             :     static constexpr uint8_t CHANGE_BASE_ADDR = 0xA2;
      32             : };
      33             : 
      34             : class TeraRangerI2C : public I2CDevice, public I2CRegisters_8Bit
      35             : {
      36             : public:
      37             : 
      38        2094 :     void init() override {
      39             :         // add_register("TRIGGER_READING", TeraRangerI2CDevReg::TRIGGER_READING, I2CRegisters::RegMode::WRONLY);
      40        2094 :         add_register("WHO_AM_I", TeraRangerI2CDevReg::WHO_AM_I, I2CRegisters::RegMode::RDONLY);
      41        2094 :         add_register("CHANGE_BASE_ADDR", TeraRangerI2CDevReg::CHANGE_BASE_ADDR, I2CRegisters::RegMode::WRONLY);
      42             : 
      43        2094 :         set_register(TeraRangerI2CDevReg::WHO_AM_I, (uint8_t)0xA1);
      44        2094 :     }
      45             : 
      46   178759942 :     void update(const class Aircraft &aircraft) override {
      47             :         // free running
      48   178759942 :         rangefinder_range = aircraft.rangefinder_range();
      49   178759942 :     }
      50             : 
      51             :     int rdwr(I2C::i2c_rdwr_ioctl_data *&data) override;
      52             : 
      53             : private:
      54             : 
      55             :     float rangefinder_range;
      56             : 
      57             :     uint32_t reading_start_us;
      58             : };
      59             : 
      60             : } // namespace SITL
      61             : 
      62             : #endif  // AP_SIM_TERARANGERI2C_ENABLED

Generated by: LCOV version 1.14