LCOV - code coverage report
Current view: top level - zephyr/dfu - flash_img.h Coverage Total Hit
Test: new.info Lines: 64.3 % 14 9
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2017 Nordic Semiconductor ASA
       3              :  * Copyright (c) 2017 Linaro Limited
       4              :  *
       5              :  * SPDX-License-Identifier: Apache-2.0
       6              :  */
       7              : 
       8              : /**
       9              :  * @file
      10              :  * @brief Flash image header file
      11              :  *
      12              :  * This header file declares prototypes for the flash image APIs used for DFU.
      13              :  */
      14              : 
      15              : #ifndef ZEPHYR_INCLUDE_DFU_FLASH_IMG_H_
      16              : #define ZEPHYR_INCLUDE_DFU_FLASH_IMG_H_
      17              : 
      18              : #include <zephyr/storage/stream_flash.h>
      19              : 
      20              : /**
      21              :  * @brief Abstraction layer to write firmware images to flash
      22              :  *
      23              :  * @defgroup flash_img_api Flash image API
      24              :  * @ingroup os_services
      25              :  * @{
      26              :  */
      27              : 
      28              : #ifdef __cplusplus
      29              : extern "C" {
      30              : #endif
      31              : 
      32            0 : struct flash_img_context {
      33            0 :         uint8_t buf[CONFIG_IMG_BLOCK_BUF_SIZE];
      34            0 :         const struct flash_area *flash_area;
      35            0 :         struct stream_flash_ctx stream;
      36              : };
      37              : 
      38              : /**
      39              :  * @brief Structure for verify flash region integrity
      40              :  *
      41              :  * Match vector length is fixed and depends on size from hash algorithm used
      42              :  * to verify flash integrity.  The current available algorithm is SHA-256.
      43              :  */
      44            1 : struct flash_img_check {
      45            0 :         const uint8_t *match;           /** Match vector data */
      46            1 :         size_t clen;                    /** Content to be compared */
      47              : };
      48              : 
      49              : /**
      50              :  * @brief Initialize context needed for writing the image to the flash.
      51              :  *
      52              :  * @param ctx     context to be initialized
      53              :  * @param area_id flash area id of partition where the image should be written
      54              :  *
      55              :  * @return  0 on success, negative errno code on fail
      56              :  */
      57            1 : int flash_img_init_id(struct flash_img_context *ctx, uint8_t area_id);
      58              : 
      59              : /**
      60              :  * @brief Initialize context needed for writing the image to the flash.
      61              :  *
      62              :  * @param ctx context to be initialized
      63              :  *
      64              :  * @return  0 on success, negative errno code on fail
      65              :  */
      66            1 : int flash_img_init(struct flash_img_context *ctx);
      67              : 
      68              : /**
      69              :  * @brief Read number of bytes of the image written to the flash.
      70              :  *
      71              :  * @param ctx context
      72              :  *
      73              :  * @return Number of bytes written to the image flash.
      74              :  */
      75            1 : size_t flash_img_bytes_written(struct flash_img_context *ctx);
      76              : 
      77              : /**
      78              :  * @brief  Process input buffers to be written to the image slot 1. flash
      79              :  * memory in single blocks. Will store remainder between calls.
      80              :  *
      81              :  * A final call to this function with flush set to true
      82              :  * will write out the remaining block buffer to flash. Since flash is written to
      83              :  * in blocks, the contents of flash from the last byte written up to the next
      84              :  * multiple of CONFIG_IMG_BLOCK_BUF_SIZE is padded with 0xff.
      85              :  *
      86              :  * @param ctx context
      87              :  * @param data data to write
      88              :  * @param len Number of bytes to write
      89              :  * @param flush when true this forces any buffered
      90              :  * data to be written to flash
      91              :  *
      92              :  * @return  0 on success, negative errno code on fail
      93              :  */
      94            1 : int flash_img_buffered_write(struct flash_img_context *ctx, const uint8_t *data,
      95              :                     size_t len, bool flush);
      96              : 
      97              : /**
      98              :  * @brief  Verify flash memory length bytes integrity from a flash area. The
      99              :  * start point is indicated by an offset value.
     100              :  *
     101              :  * The function is enabled via CONFIG_IMG_ENABLE_IMAGE_CHECK Kconfig options.
     102              :  *
     103              :  * @param[in] ctx context.
     104              :  * @param[in] fic flash img check data.
     105              :  * @param[in] area_id flash area id of partition where the image should be
     106              :  * verified.
     107              :  *
     108              :  * @return  0 on success, negative errno code on fail
     109              :  */
     110            1 : int flash_img_check(struct flash_img_context *ctx,
     111              :                     const struct flash_img_check *fic,
     112              :                     uint8_t area_id);
     113              : 
     114              : /**
     115              :  * @brief Get the flash area id for the image upload slot.
     116              :  *
     117              :  * @return flash area id for the image upload slot
     118              :  */
     119            1 : uint8_t flash_img_get_upload_slot(void);
     120              : 
     121              : #ifdef __cplusplus
     122              : }
     123              : #endif
     124              : 
     125              : /**
     126              :  * @}
     127              :  */
     128              : 
     129              : #endif  /* ZEPHYR_INCLUDE_DFU_FLASH_IMG_H_ */
        

Generated by: LCOV version 2.0-1