Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 15 additions & 41 deletions src/struct_frame/boilerplate/c/basic_default.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Automatically generated frame parser */
/* Generated by 0.0.1 at Thu Dec 4 19:40:48 2025. */
/* Generated by 0.0.1 at Thu Dec 4 20:27:20 2025. */

#pragma once

Expand Down Expand Up @@ -127,18 +127,10 @@ static inline frame_msg_info_t basic_default_parse_byte(basic_default_parser_t*
}

if (parser->buffer_index >= parser->packet_size) {
/* Validate checksum */
size_t msg_length = parser->packet_size - BASIC_DEFAULT_OVERHEAD;
frame_checksum_t ck = frame_fletcher_checksum(
parser->buffer + 2, msg_length + 1 + 1);

if (ck.byte1 == parser->buffer[parser->packet_size - 2] &&
ck.byte2 == parser->buffer[parser->packet_size - 1]) {
result.valid = true;
result.msg_id = parser->msg_id;
result.msg_len = msg_length;
result.msg_data = parser->buffer + BASIC_DEFAULT_HEADER_SIZE;
}
/* Use shared payload validation with CRC */
result = frame_validate_payload_with_crc(
parser->buffer, parser->packet_size,
BASIC_DEFAULT_HEADER_SIZE, 1, 2);
parser->state = BASIC_DEFAULT_LOOKING_FOR_START1;
}
break;
Expand All @@ -160,18 +152,11 @@ static inline size_t basic_default_encode(uint8_t* buffer, size_t buffer_size,

buffer[0] = BASIC_DEFAULT_START_BYTE1;
buffer[1] = BASIC_DEFAULT_START_BYTE2;
buffer[2] = (uint8_t)msg_size;
buffer[3] = msg_id;

/* Write message data */
if (msg_size > 0 && msg != NULL) {
memcpy(buffer + BASIC_DEFAULT_HEADER_SIZE, msg, msg_size);
}

/* Calculate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_size + 1 + 1);
buffer[BASIC_DEFAULT_HEADER_SIZE + msg_size] = ck.byte1;
buffer[BASIC_DEFAULT_HEADER_SIZE + msg_size + 1] = ck.byte2;
/* Use shared payload encoding with CRC */
frame_encode_payload_with_crc(
buffer + 2, msg_id, msg, msg_size,
1, buffer + 2);

return total_size;
}
Expand All @@ -180,30 +165,19 @@ static inline size_t basic_default_encode(uint8_t* buffer, size_t buffer_size,
* Validate a complete BasicDefault packet in a buffer
*/
static inline frame_msg_info_t basic_default_validate_packet(const uint8_t* buffer, size_t length) {
frame_msg_info_t result = {false, 0, 0, NULL};

if (length < BASIC_DEFAULT_OVERHEAD) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

if (buffer[0] != BASIC_DEFAULT_START_BYTE1) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}
if (buffer[1] != BASIC_DEFAULT_START_BYTE2) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

size_t msg_length = length - BASIC_DEFAULT_OVERHEAD;

/* Validate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_length + 1 + 1);
if (ck.byte1 == buffer[length - 2] && ck.byte2 == buffer[length - 1]) {
result.valid = true;
result.msg_id = buffer[3];
result.msg_len = msg_length;
result.msg_data = (uint8_t*)(buffer + BASIC_DEFAULT_HEADER_SIZE);
}

return result;
/* Use shared payload validation with CRC */
return frame_validate_payload_with_crc(
buffer, length, BASIC_DEFAULT_HEADER_SIZE, 1, 2);
}

57 changes: 15 additions & 42 deletions src/struct_frame/boilerplate/c/basic_extended.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Automatically generated frame parser */
/* Generated by 0.0.1 at Thu Dec 4 19:40:48 2025. */
/* Generated by 0.0.1 at Thu Dec 4 20:27:20 2025. */

#pragma once

Expand Down Expand Up @@ -133,18 +133,10 @@ static inline frame_msg_info_t basic_extended_parse_byte(basic_extended_parser_t
}

if (parser->buffer_index >= parser->packet_size) {
/* Validate checksum */
size_t msg_length = parser->packet_size - BASIC_EXTENDED_OVERHEAD;
frame_checksum_t ck = frame_fletcher_checksum(
parser->buffer + 2, msg_length + 1 + 2);

if (ck.byte1 == parser->buffer[parser->packet_size - 2] &&
ck.byte2 == parser->buffer[parser->packet_size - 1]) {
result.valid = true;
result.msg_id = parser->msg_id;
result.msg_len = msg_length;
result.msg_data = parser->buffer + BASIC_EXTENDED_HEADER_SIZE;
}
/* Use shared payload validation with CRC */
result = frame_validate_payload_with_crc(
parser->buffer, parser->packet_size,
BASIC_EXTENDED_HEADER_SIZE, 2, 2);
parser->state = BASIC_EXTENDED_LOOKING_FOR_START1;
}
break;
Expand All @@ -166,19 +158,11 @@ static inline size_t basic_extended_encode(uint8_t* buffer, size_t buffer_size,

buffer[0] = BASIC_EXTENDED_START_BYTE1;
buffer[1] = BASIC_EXTENDED_START_BYTE2;
buffer[2] = (uint8_t)(msg_size & 0xFF);
buffer[3] = (uint8_t)((msg_size >> 8) & 0xFF);
buffer[4] = msg_id;

/* Write message data */
if (msg_size > 0 && msg != NULL) {
memcpy(buffer + BASIC_EXTENDED_HEADER_SIZE, msg, msg_size);
}

/* Calculate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_size + 1 + 2);
buffer[BASIC_EXTENDED_HEADER_SIZE + msg_size] = ck.byte1;
buffer[BASIC_EXTENDED_HEADER_SIZE + msg_size + 1] = ck.byte2;
/* Use shared payload encoding with CRC */
frame_encode_payload_with_crc(
buffer + 2, msg_id, msg, msg_size,
2, buffer + 2);

return total_size;
}
Expand All @@ -187,30 +171,19 @@ static inline size_t basic_extended_encode(uint8_t* buffer, size_t buffer_size,
* Validate a complete BasicExtended packet in a buffer
*/
static inline frame_msg_info_t basic_extended_validate_packet(const uint8_t* buffer, size_t length) {
frame_msg_info_t result = {false, 0, 0, NULL};

if (length < BASIC_EXTENDED_OVERHEAD) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

if (buffer[0] != BASIC_EXTENDED_START_BYTE1) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}
if (buffer[1] != BASIC_EXTENDED_START_BYTE2) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

size_t msg_length = length - BASIC_EXTENDED_OVERHEAD;

/* Validate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_length + 1 + 2);
if (ck.byte1 == buffer[length - 2] && ck.byte2 == buffer[length - 1]) {
result.valid = true;
result.msg_id = buffer[4];
result.msg_len = msg_length;
result.msg_data = (uint8_t*)(buffer + BASIC_EXTENDED_HEADER_SIZE);
}

return result;
/* Use shared payload validation with CRC */
return frame_validate_payload_with_crc(
buffer, length, BASIC_EXTENDED_HEADER_SIZE, 2, 2);
}

57 changes: 15 additions & 42 deletions src/struct_frame/boilerplate/c/basic_extended_length.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Automatically generated frame parser */
/* Generated by 0.0.1 at Thu Dec 4 19:40:48 2025. */
/* Generated by 0.0.1 at Thu Dec 4 20:27:20 2025. */

#pragma once

Expand Down Expand Up @@ -133,18 +133,10 @@ static inline frame_msg_info_t basic_extended_length_parse_byte(basic_extended_l
}

if (parser->buffer_index >= parser->packet_size) {
/* Validate checksum */
size_t msg_length = parser->packet_size - BASIC_EXTENDED_LENGTH_OVERHEAD;
frame_checksum_t ck = frame_fletcher_checksum(
parser->buffer + 2, msg_length + 1 + 2);

if (ck.byte1 == parser->buffer[parser->packet_size - 2] &&
ck.byte2 == parser->buffer[parser->packet_size - 1]) {
result.valid = true;
result.msg_id = parser->msg_id;
result.msg_len = msg_length;
result.msg_data = parser->buffer + BASIC_EXTENDED_LENGTH_HEADER_SIZE;
}
/* Use shared payload validation with CRC */
result = frame_validate_payload_with_crc(
parser->buffer, parser->packet_size,
BASIC_EXTENDED_LENGTH_HEADER_SIZE, 2, 2);
parser->state = BASIC_EXTENDED_LENGTH_LOOKING_FOR_START1;
}
break;
Expand All @@ -166,19 +158,11 @@ static inline size_t basic_extended_length_encode(uint8_t* buffer, size_t buffer

buffer[0] = BASIC_EXTENDED_LENGTH_START_BYTE1;
buffer[1] = BASIC_EXTENDED_LENGTH_START_BYTE2;
buffer[2] = (uint8_t)(msg_size & 0xFF);
buffer[3] = (uint8_t)((msg_size >> 8) & 0xFF);
buffer[4] = msg_id;

/* Write message data */
if (msg_size > 0 && msg != NULL) {
memcpy(buffer + BASIC_EXTENDED_LENGTH_HEADER_SIZE, msg, msg_size);
}

/* Calculate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_size + 1 + 2);
buffer[BASIC_EXTENDED_LENGTH_HEADER_SIZE + msg_size] = ck.byte1;
buffer[BASIC_EXTENDED_LENGTH_HEADER_SIZE + msg_size + 1] = ck.byte2;
/* Use shared payload encoding with CRC */
frame_encode_payload_with_crc(
buffer + 2, msg_id, msg, msg_size,
2, buffer + 2);

return total_size;
}
Expand All @@ -187,30 +171,19 @@ static inline size_t basic_extended_length_encode(uint8_t* buffer, size_t buffer
* Validate a complete BasicExtendedLength packet in a buffer
*/
static inline frame_msg_info_t basic_extended_length_validate_packet(const uint8_t* buffer, size_t length) {
frame_msg_info_t result = {false, 0, 0, NULL};

if (length < BASIC_EXTENDED_LENGTH_OVERHEAD) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

if (buffer[0] != BASIC_EXTENDED_LENGTH_START_BYTE1) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}
if (buffer[1] != BASIC_EXTENDED_LENGTH_START_BYTE2) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

size_t msg_length = length - BASIC_EXTENDED_LENGTH_OVERHEAD;

/* Validate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_length + 1 + 2);
if (ck.byte1 == buffer[length - 2] && ck.byte2 == buffer[length - 1]) {
result.valid = true;
result.msg_id = buffer[4];
result.msg_len = msg_length;
result.msg_data = (uint8_t*)(buffer + BASIC_EXTENDED_LENGTH_HEADER_SIZE);
}

return result;
/* Use shared payload validation with CRC */
return frame_validate_payload_with_crc(
buffer, length, BASIC_EXTENDED_LENGTH_HEADER_SIZE, 2, 2);
}

56 changes: 15 additions & 41 deletions src/struct_frame/boilerplate/c/basic_extended_msg_ids.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Automatically generated frame parser */
/* Generated by 0.0.1 at Thu Dec 4 19:40:48 2025. */
/* Generated by 0.0.1 at Thu Dec 4 20:27:20 2025. */

#pragma once

Expand Down Expand Up @@ -127,18 +127,10 @@ static inline frame_msg_info_t basic_extended_msg_ids_parse_byte(basic_extended_
}

if (parser->buffer_index >= parser->packet_size) {
/* Validate checksum */
size_t msg_length = parser->packet_size - BASIC_EXTENDED_MSG_IDS_OVERHEAD;
frame_checksum_t ck = frame_fletcher_checksum(
parser->buffer + 2, msg_length + 1 + 1);

if (ck.byte1 == parser->buffer[parser->packet_size - 2] &&
ck.byte2 == parser->buffer[parser->packet_size - 1]) {
result.valid = true;
result.msg_id = parser->msg_id;
result.msg_len = msg_length;
result.msg_data = parser->buffer + BASIC_EXTENDED_MSG_IDS_HEADER_SIZE;
}
/* Use shared payload validation with CRC */
result = frame_validate_payload_with_crc(
parser->buffer, parser->packet_size,
BASIC_EXTENDED_MSG_IDS_HEADER_SIZE, 1, 2);
parser->state = BASIC_EXTENDED_MSG_IDS_LOOKING_FOR_START1;
}
break;
Expand All @@ -160,18 +152,11 @@ static inline size_t basic_extended_msg_ids_encode(uint8_t* buffer, size_t buffe

buffer[0] = BASIC_EXTENDED_MSG_IDS_START_BYTE1;
buffer[1] = BASIC_EXTENDED_MSG_IDS_START_BYTE2;
buffer[2] = (uint8_t)msg_size;
buffer[3] = msg_id;

/* Write message data */
if (msg_size > 0 && msg != NULL) {
memcpy(buffer + BASIC_EXTENDED_MSG_IDS_HEADER_SIZE, msg, msg_size);
}

/* Calculate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_size + 1 + 1);
buffer[BASIC_EXTENDED_MSG_IDS_HEADER_SIZE + msg_size] = ck.byte1;
buffer[BASIC_EXTENDED_MSG_IDS_HEADER_SIZE + msg_size + 1] = ck.byte2;
/* Use shared payload encoding with CRC */
frame_encode_payload_with_crc(
buffer + 2, msg_id, msg, msg_size,
1, buffer + 2);

return total_size;
}
Expand All @@ -180,30 +165,19 @@ static inline size_t basic_extended_msg_ids_encode(uint8_t* buffer, size_t buffe
* Validate a complete BasicExtendedMsgIds packet in a buffer
*/
static inline frame_msg_info_t basic_extended_msg_ids_validate_packet(const uint8_t* buffer, size_t length) {
frame_msg_info_t result = {false, 0, 0, NULL};

if (length < BASIC_EXTENDED_MSG_IDS_OVERHEAD) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

if (buffer[0] != BASIC_EXTENDED_MSG_IDS_START_BYTE1) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}
if (buffer[1] != BASIC_EXTENDED_MSG_IDS_START_BYTE2) {
return result;
return (frame_msg_info_t){false, 0, 0, NULL};
}

size_t msg_length = length - BASIC_EXTENDED_MSG_IDS_OVERHEAD;

/* Validate checksum */
frame_checksum_t ck = frame_fletcher_checksum(buffer + 2, msg_length + 1 + 1);
if (ck.byte1 == buffer[length - 2] && ck.byte2 == buffer[length - 1]) {
result.valid = true;
result.msg_id = buffer[3];
result.msg_len = msg_length;
result.msg_data = (uint8_t*)(buffer + BASIC_EXTENDED_MSG_IDS_HEADER_SIZE);
}

return result;
/* Use shared payload validation with CRC */
return frame_validate_payload_with_crc(
buffer, length, BASIC_EXTENDED_MSG_IDS_HEADER_SIZE, 1, 2);
}

Loading