Zephyr API Documentation 4.0.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
stream_flash.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017, 2020 Nordic Semiconductor ASA
3 * Copyright (c) 2017 Linaro Limited
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
13#ifndef ZEPHYR_INCLUDE_STORAGE_STREAM_FLASH_H_
14#define ZEPHYR_INCLUDE_STORAGE_STREAM_FLASH_H_
15
26#include <stdbool.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
48typedef int (*stream_flash_callback_t)(uint8_t *buf, size_t len, size_t offset);
49
57 uint8_t *buf; /* Write buffer */
58 size_t buf_len; /* Length of write buffer */
59 size_t buf_bytes; /* Number of bytes currently stored in write buf */
60 const struct device *fdev; /* Flash device */
61 size_t bytes_written; /* Number of bytes written to flash */
62 size_t offset; /* Offset from base of flash device to write area */
63 size_t available; /* Available bytes in write area */
64 stream_flash_callback_t callback; /* Callback invoked after write op */
65#ifdef CONFIG_STREAM_FLASH_ERASE
66 off_t last_erased_page_start_offset; /* Last erased offset */
67#endif
68 size_t write_block_size; /* Offset/size device write alignment */
70};
71
88int stream_flash_init(struct stream_flash_ctx *ctx, const struct device *fdev,
89 uint8_t *buf, size_t buf_len, size_t offset, size_t size,
101
124 size_t len, bool flush);
125
139
156 const char *settings_key);
157
168 const char *settings_key);
169
180 const char *settings_key);
181
182#ifdef __cplusplus
183}
184#endif
185
190#endif /* ZEPHYR_INCLUDE_STORAGE_STREAM_FLASH_H_ */
irp nz macro MOVR cc s mov cc s endm endr irp aw macro LDR aa off
Definition asm-macro-32-bit-gnu.h:17
Public API for FLASH drivers.
int(* stream_flash_callback_t)(uint8_t *buf, size_t len, size_t offset)
Signature for callback invoked after flash write completes.
Definition stream_flash.h:48
int stream_flash_progress_load(struct stream_flash_ctx *ctx, const char *settings_key)
Load persistent stream write progress stored with key settings_key .
int stream_flash_progress_save(const struct stream_flash_ctx *ctx, const char *settings_key)
Save persistent stream write progress using key settings_key .
int stream_flash_init(struct stream_flash_ctx *ctx, const struct device *fdev, uint8_t *buf, size_t buf_len, size_t offset, size_t size, stream_flash_callback_t cb)
Initialize context needed for stream writes to flash.
int stream_flash_erase_page(struct stream_flash_ctx *ctx, off_t off)
Erase the flash page to which a given offset belongs.
int stream_flash_progress_clear(const struct stream_flash_ctx *ctx, const char *settings_key)
Clear persistent stream write progress stored with key settings_key .
int stream_flash_buffered_write(struct stream_flash_ctx *ctx, const uint8_t *data, size_t len, bool flush)
Process input buffers to be written to flash device in single blocks.
size_t stream_flash_bytes_written(const struct stream_flash_ctx *ctx)
Read number of bytes written to the flash.
__INTPTR_TYPE__ off_t
Definition types.h:36
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Runtime device structure (in ROM) per driver instance.
Definition device.h:412
void * data
Address of the device instance private data.
Definition device.h:422
Structure for stream flash context.
Definition stream_flash.h:56
stream_flash_callback_t callback
Definition stream_flash.h:64
uint8_t * buf
Definition stream_flash.h:57
size_t offset
Definition stream_flash.h:62
size_t bytes_written
Definition stream_flash.h:61
size_t buf_bytes
Definition stream_flash.h:59
const struct device * fdev
Definition stream_flash.h:60
size_t write_block_size
Definition stream_flash.h:68
uint8_t erase_value
Definition stream_flash.h:69
size_t available
Definition stream_flash.h:63
size_t buf_len
Definition stream_flash.h:58