19solarxr_ipc_message_start(uint8_t head[
const],
const uint8_t *
const end)
32 const uint8_t *
const end,
33 const uint8_t data[
const],
34 const uint32_t data_len)
36 if (message == NULL) {
40 if ((
size_t)(end - message->body) < message->length || end - &message->body[message->length] < data_len) {
41 message->length = UINT32_MAX;
45 memcpy(&message->body[message->length], data, data_len);
46 message->length += data_len;
53 if (message == NULL || message->length >= UINT32_MAX -
sizeof(*message)) {
57 *end_out = &message->body[message->length];
58 const uint32_t length =
sizeof(*message) + message->length;
59 message->length = htole32(length);
64solarxr_ipc_message_write_single(uint8_t **
const head,
65 const uint8_t *
const end,
66 const uint8_t data[
const],
67 const uint32_t data_len)
70 solarxr_ipc_message_write(message, end, data, data_len);
71 return solarxr_ipc_message_end(message, head);
75solarxr_ipc_message_inline(uint8_t data[
const],
const uint32_t data_len)
77 struct solarxr_ipc_message *
const message = solarxr_ipc_message_start(data, &data[data_len]);
78 if (message != NULL) {
79 message->length = &data[data_len] - message->body;
81 return solarxr_ipc_message_end(message, &(uint8_t *){NULL});
Definition: solarxr_ipc_message.h:13