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

          Line data    Source code
       1           0 : /*
       2             :  * Copyright 2024 Google LLC
       3             :  * SPDX-License-Identifier: Apache-2.0
       4             :  */
       5             : 
       6             : #ifndef INCLUDE_ZEPHYR_DRIVERS_EMUL_BBRAM_H_
       7             : #define INCLUDE_ZEPHYR_DRIVERS_EMUL_BBRAM_H_
       8             : 
       9             : #include <zephyr/drivers/emul.h>
      10             : 
      11             : #include <stdint.h>
      12             : 
      13             : /**
      14             :  * @brief BBRAM emulator backend API
      15             :  * @defgroup bbram_emulator_backend BBRAM emulator backend API
      16             :  * @ingroup io_interfaces
      17             :  * @{
      18             :  */
      19             : 
      20             : /**
      21             :  * @cond INTERNAL_HIDDEN
      22             :  *
      23             :  * These are for internal use only, so skip these in public documentation.
      24             :  */
      25             : 
      26             : __subsystem struct emul_bbram_driver_api {
      27             :         /** Sets the data */
      28             :         int (*set_data)(const struct emul *target, size_t offset, size_t count,
      29             :                         const uint8_t *data);
      30             :         /** Checks the data */
      31             :         int (*get_data)(const struct emul *target, size_t offset, size_t count, uint8_t *data);
      32             : };
      33             : 
      34             : /**
      35             :  * @endcond
      36             :  */
      37             : 
      38             : /**
      39             :  * @brief Set the expected data in the bbram region
      40             :  *
      41             :  * @param target Pointer to the emulator instance to operate on
      42             :  * @param offset Offset within the memory to set
      43             :  * @param count Number of bytes to write
      44             :  * @param data The data to write
      45             :  * @return 0 if successful
      46             :  * @return -ENOTSUP if no backend API or if the set_data function isn't implemented
      47             :  * @return -ERANGE if the destination address is out of range.
      48             :  */
      49           1 : static inline int emul_bbram_backend_set_data(const struct emul *target, size_t offset,
      50             :                                               size_t count, const uint8_t *data)
      51             : {
      52             :         if (target == NULL || target->backend_api == NULL) {
      53             :                 return -ENOTSUP;
      54             :         }
      55             : 
      56             :         struct emul_bbram_driver_api *api = (struct emul_bbram_driver_api *)target->backend_api;
      57             : 
      58             :         if (api->set_data == NULL) {
      59             :                 return -ENOTSUP;
      60             :         }
      61             : 
      62             :         return api->set_data(target, offset, count, data);
      63             : }
      64             : 
      65             : /**
      66             :  * @brief Get the expected data in the bbram region
      67             :  *
      68             :  * @param target Pointer to the emulator instance to operate on
      69             :  * @param offset Offset within the memory to get
      70             :  * @param count Number of bytes to read
      71             :  * @param data The data buffer to hold the result
      72             :  * @return 0 if successful
      73             :  * @return -ENOTSUP if no backend API or if the get_data function isn't implemented
      74             :  * @return -ERANGE if the address is out of range.
      75             :  */
      76           1 : static inline int emul_bbram_backend_get_data(const struct emul *target, size_t offset,
      77             :                                               size_t count, uint8_t *data)
      78             : {
      79             :         if (target == NULL || target->backend_api == NULL) {
      80             :                 return -ENOTSUP;
      81             :         }
      82             : 
      83             :         struct emul_bbram_driver_api *api = (struct emul_bbram_driver_api *)target->backend_api;
      84             : 
      85             :         if (api->get_data == NULL) {
      86             :                 return -ENOTSUP;
      87             :         }
      88             : 
      89             :         return api->get_data(target, offset, count, data);
      90             : }
      91             : 
      92             : /**
      93             :  * @}
      94             :  */
      95             : 
      96             : #endif /* INCLUDE_ZEPHYR_DRIVERS_EMUL_BBRAM_H_ */

Generated by: LCOV version 1.14