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

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "SIM_I2CDevice.h"
       4             : 
       5             : namespace SITL {
       6             : 
       7             : class SMBusRegEnum : public I2CRegEnum {
       8             : };
       9             : 
      10             : class SMBusDevice : public I2CDevice, private I2CRegisters_16Bit {
      11             : public:
      12             : 
      13        6435 :     SMBusDevice() :
      14             :         I2CDevice(),
      15        6435 :         I2CRegisters_16Bit()
      16        6435 :         { }
      17             : 
      18  3579676604 :     void set_register(uint8_t reg, uint16_t value) {
      19  3579676604 :         I2CRegisters_16Bit::set_register(reg, value);
      20  3579676604 :     }
      21     4574081 :     void set_register(uint8_t reg, int16_t value) {
      22     4574081 :         I2CRegisters_16Bit::set_register(reg, value);
      23     4574081 :     }
      24             : 
      25      147797 :     uint16_t get_reg_value(uint8_t reg) {
      26      147797 :         return I2CRegisters_16Bit::get_reg_value(reg);
      27             :     }
      28             : 
      29             : 
      30             : protected:
      31             : 
      32             :     int rdwr(I2C::i2c_rdwr_ioctl_data *&data) override;
      33             : 
      34             :     void set_block(uint8_t block, uint8_t *value, uint8_t valuelen);
      35             :     void add_block(const char *name, uint8_t reg, I2CRegisters::RegMode mode);
      36             : 
      37       34320 :     void set_block(uint8_t block, const char *value) {
      38       34320 :         set_block(block, (uint8_t*)value, strlen(value));
      39       34320 :     }
      40             : 
      41      140091 :     void add_register(const char *name, uint8_t reg, I2CRegisters::RegMode mode) {
      42      140091 :         I2CRegisters_16Bit::add_register(name, reg, mode);
      43      140091 :     }
      44             : 
      45             : private:
      46             : 
      47             :     const char *blockname[256];
      48             :     Bitmask<256> writable_blocks;
      49             :     Bitmask<256> readable_blocks;
      50             : 
      51             :     // 256 pointers-to-malloced-values:
      52             :     char *values[256];
      53             :     uint8_t value_lengths[256];
      54             : };
      55             : 
      56             : } // namespace SITL

Generated by: LCOV version 1.14