caffeine-sal 0.1.17
Header-only polymorphic middleware services layer for the Caffeine Framework
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions
cfn_sal_utl_serialization.h File Reference

Generic Schema-Driven Serialization Service. Provides an abstract interface for encoding and decoding data structures using static schema descriptors (JSON, Binary, CBOR, etc.). More...

#include <stddef.h>
#include "cfn_sal.h"

Go to the source code of this file.

Data Structures

struct  cfn_sal_utl_serialization_schema_field_t
 Metadata for a single field in a data structure. More...
 
struct  cfn_sal_utl_serialization_schema_t
 Complete schema descriptor for a data structure. More...
 
struct  cfn_sal_utl_serialization_api_s
 Virtual Method Table for Serialization Services. More...
 
struct  cfn_sal_utl_serialization_config_t
 

Macros

#define CFN_SAL_UTL_TYPE_SERIALIZATION   CFN_SAL_TYPE('S', 'E', 'R')
 
#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_START(name)    static const cfn_sal_utl_serialization_schema_field_t name##_fields[] = {
 Helper macros for defining serialization schemas.
 
#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD(f_name, f_type, struct_type, member)
 
#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_END(name)
 

Typedefs

typedef struct cfn_sal_utl_serialization_s cfn_sal_utl_serialization_t
 
typedef struct cfn_sal_utl_serialization_api_s cfn_sal_utl_serialization_api_t
 
typedef void(* cfn_sal_utl_serialization_callback_t) (cfn_sal_utl_serialization_t *driver, uint32_t event, uint32_t error, void *user_arg)
 

Enumerations

enum  cfn_sal_utl_serialization_schema_field_type_t {
  CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_INT32 , CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_UINT32 , CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_FLOAT , CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_BOOL ,
  CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_STRING , CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_BYTES , CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_MAX
}
 Supported data types for schema fields. More...
 

Functions

 CFN_HAL_VMT_CHECK (struct cfn_sal_utl_serialization_api_s)
 
 CFN_SAL_CREATE_DRIVER_TYPE (sal_utl_serialization, cfn_sal_utl_serialization_config_t, cfn_sal_utl_serialization_api_t, cfn_sal_phy_t, cfn_sal_utl_serialization_callback_t)
 
CFN_HAL_INLINE void cfn_sal_utl_serialization_populate (cfn_sal_utl_serialization_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_utl_serialization_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_utl_serialization_config_t *config, cfn_sal_utl_serialization_callback_t callback, void *user_arg)
 
cfn_hal_error_code_t cfn_sal_utl_serialization_construct (cfn_sal_utl_serialization_t *driver, const cfn_sal_utl_serialization_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_utl_serialization_callback_t callback, void *user_arg)
 
cfn_hal_error_code_t cfn_sal_utl_serialization_destruct (cfn_sal_utl_serialization_t *driver)
 
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_init (cfn_sal_utl_serialization_t *driver)
 
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_encode (cfn_sal_utl_serialization_t *driver, const cfn_sal_utl_serialization_schema_t *schema, const void *data_ptr, uint8_t *out_buf, size_t out_size, size_t *bytes_written)
 
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_decode (cfn_sal_utl_serialization_t *driver, const cfn_sal_utl_serialization_schema_t *schema, const uint8_t *in_buf, size_t in_size, void *data_ptr, size_t *bytes_read)
 
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_encode_stream (cfn_sal_utl_serialization_t *driver, const cfn_sal_utl_serialization_schema_t *schema, const void *data_ptr, void *out_stream)
 Encodes a data structure into a stream based on a schema.
 
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_decode_stream (cfn_sal_utl_serialization_t *driver, const cfn_sal_utl_serialization_schema_t *schema, void *in_stream, void *data_ptr)
 Decodes a stream into a data structure based on a schema.
 

Detailed Description

Generic Schema-Driven Serialization Service. Provides an abstract interface for encoding and decoding data structures using static schema descriptors (JSON, Binary, CBOR, etc.).

Macro Definition Documentation

◆ CFN_SAL_UTL_SERIALIZATION_SCHEMA_END

#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_END (   name)
Value:
} \
; \
static const cfn_sal_utl_serialization_schema_t name = { .fields = name##_fields, \
.count = CFN_HAL_ARRAY_SIZE(name##_fields) };
Complete schema descriptor for a data structure.
Definition cfn_sal_utl_serialization.h:73
const cfn_sal_utl_serialization_schema_field_t * fields
Definition cfn_sal_utl_serialization.h:74
size_t count
Definition cfn_sal_utl_serialization.h:75

◆ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD

#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD (   f_name,
  f_type,
  struct_type,
  member 
)
Value:
{ \
.name = (f_name), .type = (f_type), .offset = (uint16_t) offsetof((struct_type), (member)), \
.size = (uint16_t) sizeof(((struct_type *) 0)->(member)) \
}

◆ CFN_SAL_UTL_SERIALIZATION_SCHEMA_START

#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_START (   name)     static const cfn_sal_utl_serialization_schema_field_t name##_fields[] = {

Helper macros for defining serialization schemas.

◆ CFN_SAL_UTL_TYPE_SERIALIZATION

#define CFN_SAL_UTL_TYPE_SERIALIZATION   CFN_SAL_TYPE('S', 'E', 'R')

Typedef Documentation

◆ cfn_sal_utl_serialization_api_t

◆ cfn_sal_utl_serialization_callback_t

typedef void(* cfn_sal_utl_serialization_callback_t) (cfn_sal_utl_serialization_t *driver, uint32_t event, uint32_t error, void *user_arg)

◆ cfn_sal_utl_serialization_t

typedef struct cfn_sal_utl_serialization_s cfn_sal_utl_serialization_t

Enumeration Type Documentation

◆ cfn_sal_utl_serialization_schema_field_type_t

Supported data types for schema fields.

Enumerator
CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_INT32 
CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_UINT32 
CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_FLOAT 
CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_BOOL 
CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_STRING 

Null-terminated char array

CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_BYTES 

Raw byte array

CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_MAX 

Function Documentation

◆ CFN_HAL_VMT_CHECK()

CFN_HAL_VMT_CHECK ( struct cfn_sal_utl_serialization_api_s  )

◆ CFN_SAL_CREATE_DRIVER_TYPE()

CFN_SAL_CREATE_DRIVER_TYPE ( sal_utl_serialization  ,
cfn_sal_utl_serialization_config_t  ,
cfn_sal_utl_serialization_api_t  ,
cfn_sal_phy_t  ,
cfn_sal_utl_serialization_callback_t   
)

◆ cfn_sal_utl_serialization_construct()

cfn_hal_error_code_t cfn_sal_utl_serialization_construct ( cfn_sal_utl_serialization_t driver,
const cfn_sal_utl_serialization_config_t config,
const cfn_sal_phy_t phy,
void *  dependency,
cfn_sal_utl_serialization_callback_t  callback,
void *  user_arg 
)

◆ cfn_sal_utl_serialization_decode()

CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_decode ( cfn_sal_utl_serialization_t driver,
const cfn_sal_utl_serialization_schema_t schema,
const uint8_t *  in_buf,
size_t  in_size,
void *  data_ptr,
size_t *  bytes_read 
)

◆ cfn_sal_utl_serialization_decode_stream()

CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_decode_stream ( cfn_sal_utl_serialization_t driver,
const cfn_sal_utl_serialization_schema_t schema,
void *  in_stream,
void *  data_ptr 
)

Decodes a stream into a data structure based on a schema.

◆ cfn_sal_utl_serialization_destruct()

cfn_hal_error_code_t cfn_sal_utl_serialization_destruct ( cfn_sal_utl_serialization_t driver)

◆ cfn_sal_utl_serialization_encode()

CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_encode ( cfn_sal_utl_serialization_t driver,
const cfn_sal_utl_serialization_schema_t schema,
const void *  data_ptr,
uint8_t *  out_buf,
size_t  out_size,
size_t *  bytes_written 
)

◆ cfn_sal_utl_serialization_encode_stream()

CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_encode_stream ( cfn_sal_utl_serialization_t driver,
const cfn_sal_utl_serialization_schema_t schema,
const void *  data_ptr,
void *  out_stream 
)

Encodes a data structure into a stream based on a schema.

◆ cfn_sal_utl_serialization_init()

CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_init ( cfn_sal_utl_serialization_t driver)

◆ cfn_sal_utl_serialization_populate()

CFN_HAL_INLINE void cfn_sal_utl_serialization_populate ( cfn_sal_utl_serialization_t driver,
uint32_t  peripheral_id,
void *  dependency,
const cfn_sal_utl_serialization_api_t api,
const cfn_sal_phy_t phy,
const cfn_sal_utl_serialization_config_t config,
cfn_sal_utl_serialization_callback_t  callback,
void *  user_arg 
)