updated example to use msg type and bus type functions
parent
a7738f192f
commit
360610c0ac
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue