From 360610c0ac35066575f5d21f524aa0b7fe344e48 Mon Sep 17 00:00:00 2001 From: David Rebbe Date: Wed, 4 Dec 2024 00:33:14 -0500 Subject: [PATCH] updated example to use msg type and bus type functions --- examples/c/simple/src/main.c | 53 ++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/examples/c/simple/src/main.c b/examples/c/simple/src/main.c index c38c924..b435a1c 100644 --- a/examples/c/simple/src/main.c +++ b/examples/c/simple/src/main.c @@ -46,6 +46,21 @@ int print_error_code(const char* message, icsneo_error_t error) { return (int)error; } +/** + * @brief Processes a list of messages from a device. + * + * This function iterates over a given array of messages received from a specified device. + * For each message in the array, it retrieves and prints the message type and bus type. + * If an error occurs while retrieving these details, an error message is printed. + * + * @param device A pointer to the icsneo_device_t structure representing the device. + * @param messages An array of pointers to icsneo_message_t structures containing the messages to process. + * @param messages_count The number of messages in the messages array. + * + * @return An icsneo_error_t value indicating success or failure of the message processing. + */ +int process_messages(icsneo_device_t* device, icsneo_message_t** messages, uint32_t messages_count); + int main(int argc, char* argv[]) { (void)argc; (void)argv; @@ -95,9 +110,10 @@ int main(int argc, char* argv[]) { return print_error_code("Failed to open device", res); }; + // Wait for the bus to collect some messages, requires an active bus to get messages printf("Waiting 1 second for messages...\n"); sleep_ms(1000); - + // Get the messages icsneo_message_t* messages[20000] = {0}; uint32_t message_count = 20000; printf("Getting messages from device with timeout of 3000ms on %s...\n", description); @@ -105,17 +121,12 @@ int main(int argc, char* argv[]) { if (res != icsneo_error_success) { return print_error_code("Failed to get messages from device", res); }; - printf("Received %u messages\n", message_count); - - for (uint32_t i = 0; i < message_count; i++) { - icsneo_message_t* message = messages[i]; - uint32_t type = 0; - res = icsneo_message_get_type(device, message, &type); - if (res != icsneo_error_success) { - return print_error_code("Failed to get message type", res); - } - printf("%d Message type: %u\n", i, type); + // Process the messages + res = process_messages(device, messages, message_count); + if (res != icsneo_error_success) { + return print_error_code("Failed to process messages", res); } + printf("Closing device: %s...\n", description); res = icsneo_close(device); if (res != icsneo_error_success) { @@ -125,3 +136,23 @@ int main(int argc, char* argv[]) { return 0; } +int process_messages(icsneo_device_t* device, icsneo_message_t** messages, uint32_t messages_count) { + printf("Received %u messages\n", messages_count); + // Print the type and bus type of each message + for (uint32_t i = 0; i < messages_count; i++) { + icsneo_message_t* message = messages[i]; + icsneo_msg_type_t msg_type = 0; + icsneo_error_t res = icsneo_message_get_type(device, message, &msg_type); + if (res != icsneo_error_success) { + return print_error_code("Failed to get message type", res); + } + icsneo_msg_bus_type_t bus_type = 0; + res = icsneo_message_get_bus_type(device, message, &bus_type); + if (res != icsneo_error_success) { + return print_error_code("Failed to get message bus type", res); + } + printf("%d Message type: %u bus type: %u\n", i, msg_type, bus_type); + } + + return icsneo_error_success; +} \ No newline at end of file