LCOV - code coverage report
Current view: top level - zephyr/drivers/sensor - w1_sensor.h Hit Total Coverage
Test: new.info Lines: 3 4 75.0 %
Date: 2024-12-22 00:14:23

          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 1.14