1 /* 2 * Copyright (c) 2020 Nordic Semiconductor ASA 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_BLOB_IO_FLASH_H__ 8 #define ZEPHYR_INCLUDE_BLUETOOTH_MESH_BLOB_IO_FLASH_H__ 9 10 #include <stdint.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 /** 17 * @defgroup bt_mesh_blob_io_flash Bluetooth Mesh BLOB flash stream 18 * @ingroup bt_mesh 19 * @{ 20 */ 21 22 /** BLOB flash stream. */ 23 struct bt_mesh_blob_io_flash { 24 /** Flash area ID to write the BLOB to. */ 25 uint8_t area_id; 26 /** Active stream mode. */ 27 enum bt_mesh_blob_io_mode mode; 28 /** Offset into the flash area to place the BLOB at (in bytes). */ 29 off_t offset; 30 31 32 /* Internal flash area pointer. */ 33 const struct flash_area *area; 34 /* BLOB stream. */ 35 struct bt_mesh_blob_io io; 36 }; 37 38 /** @brief Initialize a flash stream. 39 * 40 * @param flash Flash stream. 41 * @param area_id Flash partition identifier. See @ref flash_area_open. 42 * @param offset Offset into the flash area, in bytes. 43 * 44 * @return 0 on success or (negative) error code otherwise. 45 */ 46 int bt_mesh_blob_io_flash_init(struct bt_mesh_blob_io_flash *flash, 47 uint8_t area_id, off_t offset); 48 49 /** @} */ 50 51 #ifdef __cplusplus 52 } 53 #endif 54 55 #endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_BLOB_IO_FLASH_H__ */ 56