Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
tdf.h
Go to the documentation of this file.
1
12#ifndef INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_HIGH_LEVEL_TDF_H_
13#define INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_HIGH_LEVEL_TDF_H_
14
15#include <stdint.h>
16
17#include <zephyr/device.h>
18#include <zephyr/sys/util.h>
19
20#include <infuse/tdf/tdf.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
34enum {
36 _TDF_DATA_LOGGER_FLASH_OFFSET = 0,
38 _TDF_DATA_LOGGER_REMOVABLE_OFFSET = 1,
40 _TDF_DATA_LOGGER_SERIAL_OFFSET = 2,
42 _TDF_DATA_LOGGER_UDP_OFFSET = 3,
44 _TDF_DATA_LOGGER_BT_ADV_OFFSET = 4,
46 _TDF_DATA_LOGGER_BT_PERIPHERAL_OFFSET = 5,
47};
48
54 TDF_DATA_LOGGER_FLASH = BIT(_TDF_DATA_LOGGER_FLASH_OFFSET),
56 TDF_DATA_LOGGER_REMOVABLE = BIT(_TDF_DATA_LOGGER_REMOVABLE_OFFSET),
58 TDF_DATA_LOGGER_SERIAL = BIT(_TDF_DATA_LOGGER_SERIAL_OFFSET),
60 TDF_DATA_LOGGER_UDP = BIT(_TDF_DATA_LOGGER_UDP_OFFSET),
62 TDF_DATA_LOGGER_BT_ADV = BIT(_TDF_DATA_LOGGER_BT_ADV_OFFSET),
64 TDF_DATA_LOGGER_BT_PERIPHERAL = BIT(_TDF_DATA_LOGGER_BT_PERIPHERAL_OFFSET),
65};
66
83int tdf_data_logger_log_core_dev(const struct device *dev, uint16_t tdf_id, uint8_t tdf_len,
84 uint8_t tdf_num, enum tdf_data_format format, uint64_t time,
85 uint32_t idx_period, const void *data);
86
100void tdf_data_logger_log_core(uint8_t logger_mask, uint16_t tdf_id, uint8_t tdf_len,
101 uint8_t tdf_num, enum tdf_data_format format, uint64_t time,
102 uint32_t idx_period, const void *data);
103
118static inline int tdf_data_logger_log_array_dev(const struct device *dev, uint16_t tdf_id,
119 uint8_t tdf_len, uint8_t tdf_num, uint64_t time,
120 uint32_t period, const void *data)
121{
122 return tdf_data_logger_log_core_dev(dev, tdf_id, tdf_len, tdf_num,
123 TDF_DATA_FORMAT_TIME_ARRAY, time, period, data);
124}
125
137static inline void tdf_data_logger_log_array(uint8_t logger_mask, uint16_t tdf_id, uint8_t tdf_len,
138 uint8_t tdf_num, uint64_t time, uint32_t period,
139 const void *data)
140{
141 tdf_data_logger_log_core(logger_mask, tdf_id, tdf_len, tdf_num, TDF_DATA_FORMAT_TIME_ARRAY,
142 time, period, data);
143}
144
157static inline int tdf_data_logger_log_dev(const struct device *dev, uint16_t tdf_id,
158 uint8_t tdf_len, uint64_t time, const void *data)
159{
160 return tdf_data_logger_log_core_dev(dev, tdf_id, tdf_len, 1, TDF_DATA_FORMAT_SINGLE, time,
161 0, data);
162}
163
173static inline void tdf_data_logger_log(uint8_t logger_mask, uint16_t tdf_id, uint8_t tdf_len,
174 uint64_t time, const void *data)
175{
176 tdf_data_logger_log_core(logger_mask, tdf_id, tdf_len, 1, TDF_DATA_FORMAT_SINGLE, time, 0,
177 data);
178}
179
193#define TDF_DATA_LOGGER_LOG(logger_mask, tdf_id, tdf_time, data) \
194 tdf_data_logger_log(logger_mask, tdf_id, sizeof(TDF_TYPE(tdf_id)), tdf_time, data); \
195 do { \
196 __maybe_unused const TDF_TYPE(tdf_id) *_data = data; \
197 } while (0)
198
214#define TDF_DATA_LOGGER_LOG_ARRAY(logger_mask, tdf_id, tdf_num, tdf_time, period, data) \
215 tdf_data_logger_log_array(logger_mask, tdf_id, sizeof(TDF_TYPE(tdf_id)), tdf_num, \
216 tdf_time, period, data); \
217 do { \
218 __maybe_unused const TDF_TYPE(tdf_id) *_data = data; \
219 } while (0)
220
228int tdf_data_logger_block_bytes_pending(const struct device *dev);
229
237int tdf_data_logger_block_bytes_remaining(const struct device *dev);
238
247int tdf_data_logger_flush_dev(const struct device *dev);
248
254void tdf_data_logger_flush(uint8_t logger_mask);
255
268int tdf_data_logger_remote_id_set(const struct device *dev, uint64_t remote_id);
269
274#ifdef __cplusplus
275}
276#endif
277
278#endif /* INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_HIGH_LEVEL_TDF_H_ */
tdf_data_format
Definition tdf.h:39
@ TDF_DATA_FORMAT_TIME_ARRAY
Time array with period.
Definition tdf.h:43
@ TDF_DATA_FORMAT_SINGLE
Single sample.
Definition tdf.h:41
static void tdf_data_logger_log(uint8_t logger_mask, uint16_t tdf_id, uint8_t tdf_len, uint64_t time, const void *data)
Add a single TDF to multiple data loggers.
Definition tdf.h:173
int tdf_data_logger_log_core_dev(const struct device *dev, uint16_t tdf_id, uint8_t tdf_len, uint8_t tdf_num, enum tdf_data_format format, uint64_t time, uint32_t idx_period, const void *data)
Add multiple TDFs to a data logger.
static void tdf_data_logger_log_array(uint8_t logger_mask, uint16_t tdf_id, uint8_t tdf_len, uint8_t tdf_num, uint64_t time, uint32_t period, const void *data)
Add multiple TDFs to multiple data loggers.
Definition tdf.h:137
void tdf_data_logger_flush(uint8_t logger_mask)
Flush any pending TDFs to multiple backends.
static int tdf_data_logger_log_array_dev(const struct device *dev, uint16_t tdf_id, uint8_t tdf_len, uint8_t tdf_num, uint64_t time, uint32_t period, const void *data)
Add multiple TDFs to a data logger.
Definition tdf.h:118
tdf_data_logger_mask
TDF data logger backends.
Definition tdf.h:52
int tdf_data_logger_remote_id_set(const struct device *dev, uint64_t remote_id)
Set the remote ID associated with the logger.
static int tdf_data_logger_log_dev(const struct device *dev, uint16_t tdf_id, uint8_t tdf_len, uint64_t time, const void *data)
Add a single TDF to a data logger.
Definition tdf.h:157
int tdf_data_logger_block_bytes_remaining(const struct device *dev)
Query the number of bytes remaining until the logger block will be flushed.
int tdf_data_logger_block_bytes_pending(const struct device *dev)
Query the number of bytes pending on the current block.
int tdf_data_logger_flush_dev(const struct device *dev)
Flush any pending TDFs to backend.
void tdf_data_logger_log_core(uint8_t logger_mask, uint16_t tdf_id, uint8_t tdf_len, uint8_t tdf_num, enum tdf_data_format format, uint64_t time, uint32_t idx_period, const void *data)
Add multiple TDFs to multiple data loggers.
@ TDF_DATA_LOGGER_FLASH
Permanent flash storage device.
Definition tdf.h:54
@ TDF_DATA_LOGGER_SERIAL
Serial communications interface.
Definition tdf.h:58
@ TDF_DATA_LOGGER_BT_ADV
Bluetooth advertising communications interface.
Definition tdf.h:62
@ TDF_DATA_LOGGER_BT_PERIPHERAL
Bluetooth GATT peripheral communications interface.
Definition tdf.h:64
@ TDF_DATA_LOGGER_UDP
UDP communications interface.
Definition tdf.h:60
@ TDF_DATA_LOGGER_REMOVABLE
Removable flash storage device.
Definition tdf.h:56
TDF payload generation.