LCOV - code coverage report
Current view: top level - zephyr/drivers/adc - current_sense_shunt.h Coverage Total Hit
Test: new.info Lines: 33.3 % 6 2
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2023 The ChromiumOS Authors
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef ZEPHYR_INCLUDE_DRIVERS_ADC_CURRENT_SENSE_SHUNT_H_
       8              : #define ZEPHYR_INCLUDE_DRIVERS_ADC_CURRENT_SENSE_SHUNT_H_
       9              : 
      10              : #include <zephyr/drivers/adc.h>
      11              : 
      12            0 : struct current_sense_shunt_dt_spec {
      13            0 :         const struct adc_dt_spec port;
      14            0 :         uint32_t shunt_micro_ohms;
      15              : };
      16              : 
      17              : /**
      18              :  * @brief Get current sensor information from devicetree.
      19              :  *
      20              :  * This returns a static initializer for a @p current_sense_shunt_dt_spec structure
      21              :  * given a devicetree node.
      22              :  *
      23              :  * @param node_id Devicetree node identifier.
      24              :  *
      25              :  * @return Static initializer for an current_sense_shunt_dt_spec structure.
      26              :  */
      27            1 : #define CURRENT_SENSE_SHUNT_DT_SPEC_GET(node_id)                                                   \
      28              :         {                                                                                          \
      29              :                 .port = ADC_DT_SPEC_GET(node_id),                                                  \
      30              :                 .shunt_micro_ohms = DT_PROP(node_id, shunt_resistor_micro_ohms),                   \
      31              :         }
      32              : 
      33              : /**
      34              :  * @brief Calculates the actual amperage from the measured voltage
      35              :  *
      36              :  * @param[in] spec current sensor specification from Devicetree.
      37              :  * @param[in,out] v_to_i Pointer to the measured voltage in millivolts on input, and the
      38              :  * corresponding scaled current value in milliamps on output.
      39              :  */
      40            1 : static inline void current_sense_shunt_scale_dt(const struct current_sense_shunt_dt_spec *spec,
      41              :                                           int32_t *v_to_i)
      42              : {
      43              :         /* store in a temporary 64 bit variable to prevent overflow during calculation */
      44              :         int64_t tmp = *v_to_i;
      45              : 
      46              :         /* multiplies by 1,000,000 before dividing by shunt resistance in micro-ohms. */
      47              :         tmp = tmp * 1000000 / spec->shunt_micro_ohms;
      48              : 
      49              :         *v_to_i = (int32_t)tmp;
      50              : }
      51              : 
      52              : #endif /* ZEPHYR_INCLUDE_DRIVERS_ADC_CURRENT_SENSE_SHUNT_H_ */
        

Generated by: LCOV version 2.0-1