From e23ed280d80269738256cdf15de5da05ca310ae3 Mon Sep 17 00:00:00 2001 From: Eduard Dlabal Date: Thu, 24 Apr 2025 19:53:52 +0200 Subject: [PATCH] Refactor header inclusions and add main.h; implement searchPersonByUUID and addTimeEvent functions in users.c --- .vscode/settings.json | 3 ++- include/main.h | 16 +++++++++++++++ include/tui.h | 3 +-- include/users.h | 19 ++++++++++++++++-- output/main | Bin 29816 -> 0 bytes src/main.c | 1 + src/rfid_handler.c | 1 + src/tui.c | 2 ++ src/users.c | 44 ++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 include/main.h delete mode 100755 output/main diff --git a/.vscode/settings.json b/.vscode/settings.json index 3483249..d10acf6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,7 +5,8 @@ "stdlib.h": "c", "errno.h": "c", "rfid_handler.h": "c", - "fcntl.h": "c" + "fcntl.h": "c", + "file_operations.h": "c" }, "C_Cpp.errorSquiggles": "enabled" } \ No newline at end of file diff --git a/include/main.h b/include/main.h new file mode 100644 index 0000000..f945549 --- /dev/null +++ b/include/main.h @@ -0,0 +1,16 @@ +#include +#include +#include + +#ifndef __MAIN_H__ +#define __MAIN_H__ + +#define TRUE 1 +#define FALSE 0 +#define BYTE uint8_t +#define MIN_X_TERMINAL_SIZE 80 +#define MIN_Y_TERMINAL_SIZE 30 + +int main(int argc, char const **argv); + +#endif \ No newline at end of file diff --git a/include/tui.h b/include/tui.h index 457fb9f..05c926f 100644 --- a/include/tui.h +++ b/include/tui.h @@ -4,9 +4,8 @@ #include #include #include +#include "main.h" -#define MIN_X_TERMINAL_SIZE 80 -#define MIN_Y_TERMINAL_SIZE 30 void uartDialog(char *uart_adress, int terminal_x, int terminal_y); diff --git a/include/users.h b/include/users.h index 39ac006..9305191 100644 --- a/include/users.h +++ b/include/users.h @@ -1,3 +1,5 @@ +#include "main.h" + #include #include #include @@ -15,7 +17,9 @@ typedef struct person uint32_t department; time_t last_time_event; - uint32_t total; + time_t total; + + BYTE available; pthread_mutex_t lock; } person_t; @@ -40,7 +44,18 @@ uint16_t generateUUID(node_t *_head); uint16_t searchUUIDByName(node_t *_head); -node_t *searchPersonByUUID(node_t *_head); +/** + * @brief Searches for a person in a linked list by their UUID. + * + * This function traverses a linked list starting from the given head node + * and searches for a node that matches the specified UUID. + * + * @param _head Pointer to the head node of the linked list. + * @param _uuid The UUID of the person to search for. + * @return Pointer to the node containing the person with the matching UUID, + * or NULL if no such person is found. + */ +node_t *searchPersonByUUID(node_t *_head, uint16_t _uuid); /** * @brief Adds a new person to the linked list. diff --git a/output/main b/output/main deleted file mode 100755 index 46802601a49c56c7ef4e26c9cd4be86b3f4273fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29816 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 #include diff --git a/src/tui.c b/src/tui.c index cd5bf2b..63f52d6 100644 --- a/src/tui.c +++ b/src/tui.c @@ -2,6 +2,8 @@ #include #include #include +#include "main.h" + void uartDialog(char *uart_adress, int terminal_x, int terminal_y) { diff --git a/src/users.c b/src/users.c index 7b11b0f..3a5db1f 100644 --- a/src/users.c +++ b/src/users.c @@ -1,4 +1,6 @@ #include "users.h" +#include "main.h" + #include #include @@ -31,6 +33,24 @@ uint16_t generateUUID return uuid; } +node_t *searchPersonByUUID +( + node_t *_head, + uint16_t _uuid +) +{ + node_t *current = _head; + while (current != NULL) + { + if (current->user.uuid == _uuid) + { + return current; + } + current = current->next; + } + return NULL; +}; + int addPersonToList ( node_t **_head, @@ -67,6 +87,7 @@ int addPersonToList new_node->user.department = _department; new_node->user.last_time_event = -255; new_node->user.total = 0; + new_node->user.available = FALSE; new_node->next = NULL; @@ -83,5 +104,28 @@ int addPersonToList } current->next = new_node; + return 1; +} + +int addTimeEvent +( + node_t *_person +) +{ + time_t current_time = time(0); + + if (_person == NULL) + { + return 0; + } + + if (_person->user.available) + { + _person->user.total += (current_time - _person->user.last_time_event); + } + + _person->user.available = !_person->user.available; + _person->user.last_time_event = current_time; + return 1; } \ No newline at end of file