feat(protocan): вынеси GUI-кадрирование в общий ABI

This commit is contained in:
2026-08-31 21:02:23 +03:00
parent e6bea52db0
commit 5504104cc5
10 changed files with 340 additions and 3 deletions

View File

@@ -38,6 +38,37 @@ int main(void)
(frame.data[0] != 0xAAU) || (frame.data[1] != 0xBBU)) {
return 4;
}
uint8_t gui_raw[32];
size_t gui_size = pcan_abi_gui_frame_encode(
1U, 0x1234U, NULL, 0U, gui_raw, sizeof gui_raw);
static const uint8_t gui_want[] = {
0xA5U, 0x5AU, 0x01U, 0x01U, 0x12U, 0x34U, 0x00U, 0x00U,
0xEEU, 0x89U, 0x8CU, 0x9EU
};
if ((gui_size != sizeof gui_want) ||
(memcmp(gui_raw, gui_want, sizeof gui_want) != 0)) {
return 5;
}
size_t gui_parser_size = pcan_abi_gui_parser_size();
void *gui_parser = malloc(gui_parser_size);
pcan_abi_gui_frame_t gui_frame;
memset(&gui_frame, 0, sizeof gui_frame);
if ((gui_parser == NULL) ||
!pcan_abi_gui_parser_init(gui_parser, gui_parser_size)) {
free(gui_parser);
return 6;
}
found = 0;
for (size_t i = 0U; i < gui_size; ++i) {
found += pcan_abi_gui_parser_push(gui_parser, gui_raw[i],
&gui_frame) > 0;
}
free(gui_parser);
if ((found != 1) || (gui_frame.message_type != 1U) ||
(gui_frame.sequence != 0x1234U) || (gui_frame.size != 0U)) {
return 7;
}
puts("ABI tests passed");
return 0;
}