From 9e6dfc7d0edcb07df703a77d797b2c6a6718263f Mon Sep 17 00:00:00 2001 From: Eduard Dlabal Date: Sun, 18 May 2025 14:51:10 +0200 Subject: [PATCH] Update CSV data, refactor UART packet handling, and adjust TUI layout: modify person entries in CSV, change UART packet synchronization bytes, and update max_rows calculation in person listing. --- TestList.csv | 8 +++----- include/rfid_handler.h | 2 +- src/rfid_handler.c | 32 +++++++++++++++++++++++++++++--- src/tui.c | 2 +- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/TestList.csv b/TestList.csv index f40b5cf..598e60c 100644 --- a/TestList.csv +++ b/TestList.csv @@ -26,9 +26,7 @@ 28,Alena,Matouskova,3037,1,0,0 29,Josef,Suchy,3038,1,0,0 30,Marketa,Rezacova,3039,1,0,0 -31,Libor,Hanak,3040,1,0,0 +31,Libor,Hanak,3040,1747561377,0,1 32,Libor,Hanak,3040,1,0,0 -17267,Kamil,Novacek,2502,0,0,0 -17747,Kamil,Franta,2502,0,0,0 -17767,Kamil,Filip,2502,0,0,0 -9158,Jindrich,Sidlo,2440,0,0,0 +17767,Grzegorz,Brzeczyszczykiewicz,2502,0,0,0 +9158,Zima,Tomas,2440,1747561372,0,1 diff --git a/include/rfid_handler.h b/include/rfid_handler.h index 1e413b3..d8ecc4f 100644 --- a/include/rfid_handler.h +++ b/include/rfid_handler.h @@ -24,6 +24,6 @@ void *uartListener(void *arg); uint16_t parseIncommingPacket(BYTE *_packet); -void sendPacketToDevice(BYTE *_packet); +void sendPacketToDevice(int _uart, node_t *_person); #endif diff --git a/src/rfid_handler.c b/src/rfid_handler.c index c85796e..f0b3920 100644 --- a/src/rfid_handler.c +++ b/src/rfid_handler.c @@ -96,7 +96,7 @@ void *uartListener(void *arg) switch (state) { case SYNC0: - if (byte == 0x55) + if (byte == 0xFF) { packet[0] = byte; packet_index = 1; @@ -105,7 +105,7 @@ void *uartListener(void *arg) break; case SYNC1: - if (byte == 0xFF) + if (byte == 0x55) { packet[1] = byte; packet_index = 2; @@ -130,7 +130,9 @@ void *uartListener(void *arg) if (crc == packet[5]) { uint16_t r_uuid = parseIncommingPacket(packet); - addTimeEvent(searchPersonByUUID(person_list, r_uuid), person_list); + node_t *selected = searchPersonByUUID(person_list, r_uuid); + addTimeEvent(selected, person_list); + //sendPacketToDevice(uart, selected); } else { @@ -154,4 +156,28 @@ uint16_t parseIncommingPacket(BYTE *_packet) memcpy(&r_event_type, &_packet[4], 1); return r_id; +} + +void sendPacketToDevice(int _uart, node_t *_person) +{ + BYTE packet[72]; + int offset = 0; + packet[0] = 0xFF; + packet[1] = 0X55; + offset += 2; + memcpy(packet + offset, _person->user.name, 32); + offset += 32; + memcpy(packet + offset, _person->user.surname, 32); + offset += 32; + time_t current_time = time(NULL); + memcpy(packet + offset, ¤t_time, sizeof(time_t)); + offset += time(NULL); + BYTE crc = 0; + for (int i = 0; i < offset; i++) + { + crc ^= packet[i]; + } + packet[offset] = crc; + offset += 1; + write(_uart, packet, 72); } \ No newline at end of file diff --git a/src/tui.c b/src/tui.c index 277e05f..8118068 100644 --- a/src/tui.c +++ b/src/tui.c @@ -260,7 +260,7 @@ void personListing(list_t *person_list, int terminal_x, int terminal_y) WINDOW *personlisting = newwin(win_height, win_width, start_y, start_x); - int max_rows = win_height - 2; + int max_rows = win_height - 3; int total_count = 0; node_t *current = person_list->head; while (current)