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 ||
41 (
size_t)(end - &message->body[message->length]) < data_len) {
42 message->length = UINT32_MAX;
46 memcpy(&message->body[message->length], data, data_len);
47 message->length += data_len;
54 if (message == NULL || message->length >= UINT32_MAX -
sizeof(*message)) {
58 *end_out = &message->body[message->length];
59 const uint32_t length =
sizeof(*message) + message->length;
60 message->length = htole32(length);
65solarxr_ipc_message_write_single(uint8_t **
const head,
66 const uint8_t *
const end,
67 const uint8_t data[
const],
68 const uint32_t data_len)
71 solarxr_ipc_message_write(message, end, data, data_len);
72 return solarxr_ipc_message_end(message, head);
76solarxr_ipc_message_inline(uint8_t data[
const],
const uint32_t data_len)
78 struct solarxr_ipc_message *
const message = solarxr_ipc_message_start(data, &data[data_len]);
79 if (message != NULL) {
80 message->length = &data[data_len] - message->body;
82 return solarxr_ipc_message_end(message, &(uint8_t *){NULL});
Definition solarxr_ipc_message.h:13