|
PebbleOS
|
(De)serialization of attribute lists together with contact addresses. More...
Data Structures | |
| struct | Address |
| Contact address. More... | |
| struct | AddressList |
| List of addresses. More... | |
Enumerations | |
| enum | AddressType { AddressTypeInvalid , AddressTypePhoneNumber , AddressTypeEmail } |
| Address type. More... | |
Functions | |
| bool | attributes_address_parse_serial_data (uint8_t num_attributes, uint8_t num_addresses, const uint8_t *data, size_t data_size, size_t *string_alloc_size_out, uint8_t *attributes_per_address_out) |
| Parse serialized attributes and addresses to size the deserialization buffer. | |
| size_t | attributes_address_get_buffer_size (uint8_t num_attributes, uint8_t num_addresses, const uint8_t *attributes_per_address, size_t required_size_for_strings) |
| Get the buffer size needed to store attributes, addresses and their strings. | |
| void | attributes_address_init (AttributeList *attr_list, AddressList *addr_list, uint8_t **buffer, uint8_t num_attributes, uint8_t num_addresses, const uint8_t *attributes_per_address) |
| Lay out an attribute list and an address list in a buffer. | |
| bool | attributes_address_deserialize (AttributeList *attr_list, AddressList *addr_list, uint8_t *buffer, uint8_t *buf_end, const uint8_t *payload, size_t payload_size) |
| Fill an attribute list and an address list from serialized data. | |
| size_t | attributes_address_get_serialized_payload_size (AttributeList *list, AddressList *addr_list) |
| Get the serialized size of an attribute list and an address list. | |
| size_t | attributes_address_serialize_payload (AttributeList *attr_list, AddressList *addr_list, uint8_t *buffer, size_t buffer_size) |
| Serialize an attribute list and an address list. | |
(De)serialization of attribute lists together with contact addresses.
Deserializing is a two-pass process: parse the payload to size the buffer, then lay out the lists in the buffer and fill them.
| struct Address |
Contact address.
| Data Fields | ||
|---|---|---|
| AttributeList | attr_list | Address attributes (the address itself, label, ...). |
| Uuid | id | Address UUID. |
| AddressType | type | Address type. |
| struct AddressList |
| enum AddressType |
Address type.
| Enumerator | |
|---|---|
| AddressTypeInvalid | Invalid address. |
| AddressTypePhoneNumber | Phone number. |
| AddressTypeEmail | Email address. |
| bool attributes_address_deserialize | ( | AttributeList * | attr_list, |
| AddressList * | addr_list, | ||
| uint8_t * | buffer, | ||
| uint8_t * | buf_end, | ||
| const uint8_t * | payload, | ||
| size_t | payload_size | ||
| ) |
Fill an attribute list and an address list from serialized data.
The lists must have been set up with attributes_address_init().
| [in,out] | attr_list | Attribute list to fill. |
| [in,out] | addr_list | Address list to fill. |
| buffer | Space for strings, as left by attributes_address_init(). | |
| buf_end | End of the buffer. | |
| payload | Serialized attributes followed by serialized addresses. | |
| payload_size | Size of payload in bytes. |
| size_t attributes_address_get_buffer_size | ( | uint8_t | num_attributes, |
| uint8_t | num_addresses, | ||
| const uint8_t * | attributes_per_address, | ||
| size_t | required_size_for_strings | ||
| ) |
Get the buffer size needed to store attributes, addresses and their strings.
| num_attributes | Number of attributes not belonging to an address. |
| num_addresses | Number of addresses. |
| attributes_per_address | Number of attributes of each address, in address order. |
| required_size_for_strings | Total size of all attribute strings. |
| size_t attributes_address_get_serialized_payload_size | ( | AttributeList * | list, |
| AddressList * | addr_list | ||
| ) |
Get the serialized size of an attribute list and an address list.
| void attributes_address_init | ( | AttributeList * | attr_list, |
| AddressList * | addr_list, | ||
| uint8_t ** | buffer, | ||
| uint8_t | num_attributes, | ||
| uint8_t | num_addresses, | ||
| const uint8_t * | attributes_per_address | ||
| ) |
Lay out an attribute list and an address list in a buffer.
| [out] | attr_list | Attribute list to initialize. |
| [out] | addr_list | Address list to initialize. |
| [in,out] | buffer | Cursor into the buffer; advanced past the attribute and address arrays, leaving it at the space for strings. |
| num_attributes | Number of attributes not belonging to an address. | |
| num_addresses | Number of addresses. | |
| attributes_per_address | Number of attributes of each address, in address order. |
| bool attributes_address_parse_serial_data | ( | uint8_t | num_attributes, |
| uint8_t | num_addresses, | ||
| const uint8_t * | data, | ||
| size_t | data_size, | ||
| size_t * | string_alloc_size_out, | ||
| uint8_t * | attributes_per_address_out | ||
| ) |
Parse serialized attributes and addresses to size the deserialization buffer.
| num_attributes | Number of attributes not belonging to an address. | |
| num_addresses | Number of addresses. | |
| data | Serialized attributes followed by serialized addresses. | |
| data_size | Size of data in bytes. | |
| [out] | string_alloc_size_out | Size needed for all attribute strings. |
| [out] | attributes_per_address_out | Number of attributes of each address, in address order; num_addresses entries. |
| size_t attributes_address_serialize_payload | ( | AttributeList * | attr_list, |
| AddressList * | addr_list, | ||
| uint8_t * | buffer, | ||
| size_t | buffer_size | ||
| ) |