8#ifndef CAFFEINE_SAL_UTL_SERIALIZATION_H
9#define CAFFEINE_SAL_UTL_SERIALIZATION_H
22#define CFN_SAL_UTL_TYPE_SERIALIZATION CFN_SAL_TYPE('S', 'E', 'R')
27#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_START(name) \
28 static const cfn_sal_utl_serialization_schema_field_t name##_fields[] = {
29#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD(f_name, f_type, struct_type, member) \
31 .name = (f_name), .type = (f_type), .offset = (uint16_t) offsetof((struct_type), (member)), \
32 .size = (uint16_t) sizeof(((struct_type *) 0)->(member)) \
34#define CFN_SAL_UTL_SERIALIZATION_SCHEMA_END(name) \
37 static const cfn_sal_utl_serialization_schema_t name = { .fields = name##_fields, \
38 .count = CFN_HAL_ARRAY_SIZE(name##_fields) };
101 size_t *bytes_written);
108 const uint8_t *in_buf,
118 const void *data_ptr,
146 uint32_t peripheral_id,
154 CFN_HAL_POPULATE_DRIVER(
171 return CFN_HAL_ERROR_BAD_PARAM;
173 driver->base.vmt = (
const struct cfn_hal_api_base_s *) driver->api;
179 const void *data_ptr,
182 size_t *bytes_written)
184 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
185 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
192 const uint8_t *in_buf,
197 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
198 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
206CFN_HAL_INLINE cfn_hal_error_code_t
209 const void *data_ptr,
212 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
213 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
221CFN_HAL_INLINE cfn_hal_error_code_t
227 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
228 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
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.
Definition cfn_sal_utl_serialization.h:222
void(* cfn_sal_utl_serialization_callback_t)(cfn_sal_utl_serialization_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_utl_serialization.h:81
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.
Definition cfn_sal_utl_serialization.h:207
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)
Definition cfn_sal_utl_serialization.h:145
CFN_HAL_VMT_CHECK(struct cfn_sal_utl_serialization_api_s)
struct cfn_sal_utl_serialization_s cfn_sal_utl_serialization_t
Definition cfn_sal_utl_serialization.h:78
#define CFN_SAL_UTL_TYPE_SERIALIZATION
Definition cfn_sal_utl_serialization.h:22
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_serialization_init(cfn_sal_utl_serialization_t *driver)
Definition cfn_sal_utl_serialization.h:167
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_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)
Definition cfn_sal_utl_serialization.h:190
cfn_sal_utl_serialization_schema_field_type_t
Supported data types for schema fields.
Definition cfn_sal_utl_serialization.h:46
@ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_FLOAT
Definition cfn_sal_utl_serialization.h:49
@ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_BYTES
Definition cfn_sal_utl_serialization.h:52
@ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_BOOL
Definition cfn_sal_utl_serialization.h:50
@ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_INT32
Definition cfn_sal_utl_serialization.h:47
@ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_UINT32
Definition cfn_sal_utl_serialization.h:48
@ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_STRING
Definition cfn_sal_utl_serialization.h:51
@ CFN_SAL_UTL_SERIALIZATION_SCHEMA_FIELD_TYPE_MAX
Definition cfn_sal_utl_serialization.h:53
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)
Definition cfn_sal_utl_serialization.h:177
Generic physical mapping for services.
Definition cfn_sal_types.h:26
Virtual Method Table for Serialization Services.
Definition cfn_sal_utl_serialization.h:90
cfn_hal_error_code_t(* 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.
Definition cfn_sal_utl_serialization.h:124
cfn_hal_api_base_t base
Definition cfn_sal_utl_serialization.h:91
cfn_hal_error_code_t(* 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)
Decodes a buffer into a data structure based on a schema.
Definition cfn_sal_utl_serialization.h:106
cfn_hal_error_code_t(* 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.
Definition cfn_sal_utl_serialization.h:116
cfn_hal_error_code_t(* 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)
Encodes a data structure into a buffer based on a schema.
Definition cfn_sal_utl_serialization.h:96
Definition cfn_sal_utl_serialization.h:133
void * custom
Definition cfn_sal_utl_serialization.h:134
Metadata for a single field in a data structure.
Definition cfn_sal_utl_serialization.h:62
uint16_t size
Definition cfn_sal_utl_serialization.h:66
uint16_t offset
Definition cfn_sal_utl_serialization.h:65
cfn_sal_utl_serialization_schema_field_type_t type
Definition cfn_sal_utl_serialization.h:64
const char * name
Definition cfn_sal_utl_serialization.h:63
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