LCOV - code coverage report
Current view: top level - zephyr/drivers/sensor - w1_sensor.h Coverage Total Hit
Test: new.info Lines: 75.0 % 4 3
Test Date: 2025-09-05 22:20:39

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2022, Thomas Stranger
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /**
       8              :  * @file
       9              :  * @brief Extended public API for 1-Wire Sensors
      10              :  *
      11              :  * This header file exposes an attribute an helper function to allow the
      12              :  * runtime configuration of ROM IDs for 1-Wire Sensors.
      13              :  */
      14              : 
      15              : #ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_W1_SENSOR_H_
      16              : #define ZEPHYR_INCLUDE_DRIVERS_SENSOR_W1_SENSOR_H_
      17              : 
      18              : #ifdef __cplusplus
      19              : extern "C" {
      20              : #endif
      21              : 
      22              : #include <zephyr/drivers/sensor.h>
      23              : #include <zephyr/drivers/w1.h>
      24              : 
      25              : /**
      26              :  * @brief 1-Wire Sensor API
      27              :  * @defgroup w1_sensor 1-Wire Sensor API
      28              :  * @ingroup w1_interface
      29              :  * @{
      30              :  */
      31              : 
      32            0 : enum sensor_attribute_w1 {
      33              :         /** Device unique 1-Wire ROM */
      34              :         SENSOR_ATTR_W1_ROM = SENSOR_ATTR_PRIV_START,
      35              : };
      36              : 
      37              : /**
      38              :  * @brief Function to write a w1_rom struct to an sensor value ptr.
      39              :  *
      40              :  * @param rom  Pointer to the rom struct.
      41              :  * @param val  Pointer to the sensor value.
      42              :  */
      43            1 : static inline void w1_rom_to_sensor_value(const struct w1_rom *rom,
      44              :                                           struct sensor_value *val)
      45              : {
      46              :         val->val1 = sys_get_be64((uint8_t *)rom) & BIT64_MASK(32);
      47              :         val->val2 = sys_get_be64((uint8_t *)rom) >> 32;
      48              : }
      49              : 
      50              : /**
      51              :  * @brief Function to write an rom id stored in a sensor value to a struct w1_rom ptr.
      52              :  *
      53              :  * @param val  Sensor_value representing the rom.
      54              :  * @param rom  The rom struct ptr.
      55              :  */
      56            1 : static inline void w1_sensor_value_to_rom(const struct sensor_value *val,
      57              :                                           struct w1_rom *rom)
      58              : {
      59              :         uint64_t temp64 = ((uint64_t)((uint32_t)val->val2) << 32)
      60              :                           | (uint32_t)val->val1;
      61              :         sys_put_be64(temp64, (uint8_t *)rom);
      62              : }
      63              : 
      64              : /**
      65              :  * @}
      66              :  */
      67              : 
      68              : #ifdef __cplusplus
      69              : }
      70              : #endif
      71              : 
      72              : #endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_W1_SENSOR_H_ */
        

Generated by: LCOV version 2.0-1