Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
logger.h
Go to the documentation of this file.
1
9
10#ifndef INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_LOGGER_H_
11#define INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_LOGGER_H_
12
13#include <stdint.h>
14
15#include <infuse/types.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
28
54
60 uint8_t block_wrap;
62 uint8_t block_type;
63} __packed;
64
76 void (*block_size_update)(const struct device *dev, uint16_t block_size, void *user_data);
84 void (*write_success)(const struct device *dev, enum infuse_type data_type,
85 void *user_data);
96 void (*write_failure)(const struct device *dev, enum infuse_type data_type, const void *mem,
97 uint16_t mem_len, int reason, void *user_data);
99 void *user_data;
101 /* Private list iteration field */
102 sys_snode_t node;
104};
105
114#define DATA_LOGGER_DEPENDENCIES_MET(node_id) \
115 COND_CODE_1(DT_NODE_HAS_COMPAT(node_id, embeint_data_logger_epacket), \
116 (EPACKET_INTERFACE_IS_COMPILED_IN(DT_PROP(node_id, epacket))), (1))
117
119#define _DL_IS_FLASH_MAP(node_id) DT_NODE_HAS_COMPAT(node_id, embeint_data_logger_flash_map)
120#define _DL_IS_EPACKET(node_id) DT_NODE_HAS_COMPAT(node_id, embeint_data_logger_epacket)
121#define _DL_IS_EXFAT(node_id) DT_NODE_HAS_COMPAT(node_id, embeint_data_logger_exfat)
122#define _DL_IS_DISK_ACCESS(node_id) DT_NODE_HAS_COMPAT(node_id, embeint_data_logger_disk_access)
124
132#define DATA_LOGGER_MAX_SIZE(node_id) \
133 COND_CASE_1(_DL_IS_FLASH_MAP(node_id), (DT_PROP(node_id, block_size)), \
134 _DL_IS_EPACKET(node_id), \
135 (EPACKET_INTERFACE_MAX_PAYLOAD(DT_PROP(node_id, epacket))), \
136 _DL_IS_EXFAT(node_id), (512), _DL_IS_DISK_ACCESS(node_id), \
137 (CONFIG_DATA_LOGGER_DISK_ACCESS_MAX_SECTOR_SIZE), ())
138
145void data_logger_get_state(const struct device *dev, struct data_logger_state *state);
146
164int data_logger_block_write(const struct device *dev, enum infuse_type type, void *block,
165 uint16_t block_len);
166
186int data_logger_block_read(const struct device *dev, uint32_t block_idx, uint16_t block_offset,
187 void *block, uint16_t block_len);
188
202int data_logger_erase(const struct device *dev, bool erase_all,
203 void (*erase_progress)(uint32_t blocks_erased));
204
218int data_logger_flush(const struct device *dev);
219
226void data_logger_register_cb(const struct device *dev, struct data_logger_cb *cb);
227
228#ifdef CONFIG_ZTEST
229
236void data_logger_set_erase_state(const struct device *dev, bool enabled);
237
238#endif /* CONFIG_ZTEST */
239
243
244#ifdef __cplusplus
245}
246#endif
247
248#endif /* INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_LOGGER_H_ */
void data_logger_get_state(const struct device *dev, struct data_logger_state *state)
Get the current data logger state.
int data_logger_erase(const struct device *dev, bool erase_all, void(*erase_progress)(uint32_t blocks_erased))
Completely erase a data logger.
int data_logger_flush(const struct device *dev)
Flush any data pending in a RAM buffer to the backend.
int data_logger_block_read(const struct device *dev, uint32_t block_idx, uint16_t block_offset, void *block, uint16_t block_len)
Read a block from the data logger.
int data_logger_block_write(const struct device *dev, enum infuse_type type, void *block, uint16_t block_len)
Write a block to the data logger.
void data_logger_register_cb(const struct device *dev, struct data_logger_cb *cb)
Register for event callbacks from the data logger.
infuse_type
Core Infuse Data Types.
Definition types.h:27
Core Infuse-IoT platform types.
ePacket Interface API
Data logger event callback structure.
Definition logger.h:68
void(* block_size_update)(const struct device *dev, uint16_t block_size, void *user_data)
Data logger has changed the maximum block size.
Definition logger.h:76
void(* write_success)(const struct device *dev, enum infuse_type data_type, void *user_data)
Writing to the data logger has succeeded.
Definition logger.h:84
void(* write_failure)(const struct device *dev, enum infuse_type data_type, const void *mem, uint16_t mem_len, int reason, void *user_data)
Writing to the data logger has failed.
Definition logger.h:96
void * user_data
Arbitrary user data pointer.
Definition logger.h:99
Header on every block logged to persistent storage.
Definition logger.h:58
uint8_t block_type
Type of block data.
Definition logger.h:62
uint8_t block_wrap
One byte wrap count (1 - 254)
Definition logger.h:60
Data logger state.
Definition logger.h:32
uint32_t current_block
Number of logical blocks that have been written.
Definition logger.h:42
uint32_t logical_blocks
Number of logical blocks on the logger.
Definition logger.h:36
uint32_t boot_block
Number of blocks present at boot.
Definition logger.h:40
uint16_t block_size
Size of a single block in bytes.
Definition logger.h:48
uint32_t erase_unit
Minimum erase unit of the logger in bytes.
Definition logger.h:46
bool requires_full_block_write
Writes require the full block size to be provided.
Definition logger.h:52
uint32_t earliest_block
Earliest logical block that still exists on the logger.
Definition logger.h:44
uint32_t physical_blocks
Number of physical blocks on the logger.
Definition logger.h:38
uint16_t block_overhead
Number of bytes at the start of the block that should not contain data.
Definition logger.h:50
uint64_t bytes_logged
Bytes logged since reboot.
Definition logger.h:34