Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
Tagged Data Format APIs

Tagged Data Format API . More...

Data Structures

struct  tdf_buffer_state
 
struct  tdf_parsed
 

Macros

#define TDF_TYPE(tdf_id)
 Get type associated with a given TDF ID.
 
#define TDF_ADD(state, tdf_id, tdf_num, base_time, period, data)
 Type safe wrapper around tdf_add.
 

Enumerations

enum  tdf_data_format {
  TDF_DATA_FORMAT_SINGLE , TDF_DATA_FORMAT_TIME_ARRAY , TDF_DATA_FORMAT_IDX_ARRAY , TDF_DATA_FORMAT_DIFF_ARRAY_16_8 ,
  TDF_DATA_FORMAT_DIFF_ARRAY_32_8 , TDF_DATA_FORMAT_DIFF_ARRAY_32_16 , TDF_DATA_FORMAT_INVALID , TDF_DATA_FORMAT_DIFF_PRECOMPUTED = 0x80
}
 
enum  tdf_flags {
  TDF_TIMESTAMP_NONE = 0x0000 , TDF_TIMESTAMP_ABSOLUTE = 0x4000 , TDF_TIMESTAMP_RELATIVE = 0x8000 , TDF_TIMESTAMP_EXTENDED_RELATIVE = 0xC000 ,
  TDF_ARRAY_NONE = 0x0000 , TDF_ARRAY_TIME = 0x1000 , TDF_ARRAY_DIFF = 0x2000 , TDF_ARRAY_IDX = 0x3000 ,
  TDF_FLAGS_MASK = 0xF000 , TDF_TIMESTAMP_MASK = 0xC000 , TDF_ARRAY_MASK = 0x3000 , TDF_ID_MASK = 0x0FFF
}
 

Functions

static void tdf_buffer_state_reset (struct tdf_buffer_state *state)
 Reset a tdf_buffer_state struct.
 
int tdf_add_core (struct tdf_buffer_state *state, uint16_t tdf_id, uint8_t tdf_len, uint8_t tdf_num, uint64_t time, uint32_t idx_period, const void *data, enum tdf_data_format format)
 Add TDFs to memory buffer with an explicit format.
 
static int tdf_add (struct tdf_buffer_state *state, uint16_t tdf_id, uint8_t tdf_len, uint8_t tdf_num, uint64_t time, uint32_t period, const void *data)
 Add TDFs to memory buffer.
 
static void tdf_parse_start (struct tdf_buffer_state *state, void *data, size_t size)
 Initialise TDF parsing state.
 
int tdf_parse (struct tdf_buffer_state *state, struct tdf_parsed *parsed)
 Parse the next TDF from a memory buffer.
 
static int tdf_parse_find_in_buf (void *data, size_t size, uint16_t tdf_id, struct tdf_parsed *parsed)
 Find the first instance of a specific TDF in a memory buffer.
 
int tdf_parse_diff_reconstruct (const struct tdf_parsed *parsed, void *output, uint8_t idx)
 Reconstruct the original TDF from a parsed TDF_ARRAY_DIFF.
 

Detailed Description

Tagged Data Format API .

Macro Definition Documentation

◆ TDF_ADD

#define TDF_ADD ( state,
tdf_id,
tdf_num,
base_time,
period,
data )

#include <infuse/tdf/tdf.h>

Value:
tdf_add(state, tdf_id, sizeof(TDF_TYPE(tdf_id)), tdf_num, base_time, period, data); \
do { \
__maybe_unused const TDF_TYPE(tdf_id) *_data = data; \
} while (0)
#define TDF_TYPE(tdf_id)
Get type associated with a given TDF ID.
Definition tdf.h:110
static int tdf_add(struct tdf_buffer_state *state, uint16_t tdf_id, uint8_t tdf_len, uint8_t tdf_num, uint64_t time, uint32_t period, const void *data)
Add TDFs to memory buffer.
Definition tdf.h:186

Type safe wrapper around tdf_add.

Adds compile-time validation that the passed pointer matches the type associated with tdf_id.

Note
Only works for TDF types without trailing variable length arrays
Parameters
statePointer to current buffer state
tdf_idTDF sensor ID
tdf_numNumber of TDFs to try to add
base_timeEpoch time associated with the first TDF. 0 for no timestamp.
periodEpoch time between tdfs when tdf_num > 0.
dataTDF data
Return values
>0Number of TDFs successfully added to buffer
-EINVALInvalid arguments
-ENOSPCTDF too large to ever fit on buffer
-ENOMEMInsufficient space to add any TDFs to buffer

◆ TDF_TYPE

#define TDF_TYPE ( tdf_id)

#include <infuse/tdf/tdf.h>

Value:
_##tdf_id##_TYPE

Get type associated with a given TDF ID.

Parameters
tdf_idTDF sensor ID
Return values
Associatedtdf struct type

Enumeration Type Documentation

◆ tdf_data_format

#include <infuse/tdf/tdf.h>

Enumerator
TDF_DATA_FORMAT_SINGLE 

Single sample.

TDF_DATA_FORMAT_TIME_ARRAY 

Time array with period.

TDF_DATA_FORMAT_IDX_ARRAY 

Array based on sample indicies.

TDF_DATA_FORMAT_DIFF_ARRAY_16_8 

16 bit data, 8 bit diffs

TDF_DATA_FORMAT_DIFF_ARRAY_32_8 

32 bit data, 8 bit diffs

TDF_DATA_FORMAT_DIFF_ARRAY_32_16 

32 bit data, 16 bit diffs

TDF_DATA_FORMAT_INVALID 

Start of invalid range.

TDF_DATA_FORMAT_DIFF_PRECOMPUTED 

Data is already in [base, diff...] form.

◆ tdf_flags

enum tdf_flags

#include <infuse/tdf/tdf.h>

Enumerator
TDF_TIMESTAMP_NONE 

Timestamp flags.

TDF_TIMESTAMP_ABSOLUTE 
TDF_TIMESTAMP_RELATIVE 
TDF_TIMESTAMP_EXTENDED_RELATIVE 
TDF_ARRAY_NONE 

Special flags.

TDF_ARRAY_TIME 
TDF_ARRAY_DIFF 
TDF_ARRAY_IDX 
TDF_FLAGS_MASK 

Masks.

TDF_TIMESTAMP_MASK 
TDF_ARRAY_MASK 
TDF_ID_MASK 

Function Documentation

◆ tdf_add()

static int tdf_add ( struct tdf_buffer_state * state,
uint16_t tdf_id,
uint8_t tdf_len,
uint8_t tdf_num,
uint64_t time,
uint32_t period,
const void * data )
inlinestatic

#include <infuse/tdf/tdf.h>

Add TDFs to memory buffer.

Parameters
statePointer to current buffer state
tdf_idTDF sensor ID
tdf_lenLength of a single TDF
tdf_numNumber of TDFs to try to add
timeEpoch time associated with the first TDF. 0 for no timestamp.
periodEpoch time between tdfs when tdf_num > 0.
dataTDF data
Return values
>0Number of TDFs successfully added to buffer
-EINVALInvalid arguments
-ENOSPCTDF too large to ever fit on buffer
-ENOMEMInsufficient space to add any TDFs to buffer

◆ tdf_add_core()

int tdf_add_core ( struct tdf_buffer_state * state,
uint16_t tdf_id,
uint8_t tdf_len,
uint8_t tdf_num,
uint64_t time,
uint32_t idx_period,
const void * data,
enum tdf_data_format format )

#include <infuse/tdf/tdf.h>

Add TDFs to memory buffer with an explicit format.

Parameters
statePointer to current buffer state
tdf_idTDF sensor ID
tdf_lenLength of a single TDF
tdf_numNumber of TDFs to try to add
timeEpoch time associated with the first TDF. 0 for no timestamp.
idx_periodIndex of first sample if format == TDF_DATA_FORMAT_IDX_ARRAY Epoch time between tdfs when tdf_num > 0 otherwise.
dataTDF data
formatData encoding format
Return values
>0Number of TDFs successfully added to buffer
-EINVALInvalid arguments
-ENOSPCTDF too large to ever fit on buffer
-ENOMEMInsufficient space to add any TDFs to buffer

◆ tdf_buffer_state_reset()

static void tdf_buffer_state_reset ( struct tdf_buffer_state * state)
inlinestatic

#include <infuse/tdf/tdf.h>

Reset a tdf_buffer_state struct.

Parameters
statestruct to reset

◆ tdf_parse()

int tdf_parse ( struct tdf_buffer_state * state,
struct tdf_parsed * parsed )

#include <infuse/tdf/tdf.h>

Parse the next TDF from a memory buffer.

Parameters
stateTDF parsing state
parsedPointer to output TDF information
Return values
0on successful parse
-EINVALon invalid TDF
-ENOMEMon no more TDFs

◆ tdf_parse_diff_reconstruct()

int tdf_parse_diff_reconstruct ( const struct tdf_parsed * parsed,
void * output,
uint8_t idx )

#include <infuse/tdf/tdf.h>

Reconstruct the original TDF from a parsed TDF_ARRAY_DIFF.

Parameters
parsedParsed TDF from tdf_parse
outputOutput location to construct TDF into
idxIndex of the TDF to reconstruct (0 == base, 1 == apply diff[0], etc)
Return values
0On success
-EINVALOn invalid argument

◆ tdf_parse_find_in_buf()

static int tdf_parse_find_in_buf ( void * data,
size_t size,
uint16_t tdf_id,
struct tdf_parsed * parsed )
inlinestatic

#include <infuse/tdf/tdf.h>

Find the first instance of a specific TDF in a memory buffer.

Parameters
dataPointer to TDF memory buffer
sizeSize of TDF memory buffer
tdf_idTDF ID to search for
parsedStorage for TDF info
Return values
0On success
-ENOMEMIf buffer consumed without finding the TDF

◆ tdf_parse_start()

static void tdf_parse_start ( struct tdf_buffer_state * state,
void * data,
size_t size )
inlinestatic

#include <infuse/tdf/tdf.h>

Initialise TDF parsing state.

Parameters
stateState to initialise
dataPointer to TDF memory buffer
sizeSize of TDF memory buffer