summaryrefslogtreecommitdiff
path: root/src/tests/dlt-test-multi-process-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/dlt-test-multi-process-client.c')
-rw-r--r--src/tests/dlt-test-multi-process-client.c193
1 files changed, 97 insertions, 96 deletions
diff --git a/src/tests/dlt-test-multi-process-client.c b/src/tests/dlt-test-multi-process-client.c
index 72a9ea4..ab434cc 100644
--- a/src/tests/dlt-test-multi-process-client.c
+++ b/src/tests/dlt-test-multi-process-client.c
@@ -25,25 +25,25 @@
*/
/*******************************************************************************
- ** **
- ** SRC-MODULE: dlt-test-multi-process-client.c **
- ** **
- ** TARGET : linux **
- ** **
- ** PROJECT : DLT **
- ** **
- ** AUTHOR : Lassi Marttala <Lassi.LM.Marttala@partner.bmw.de> **
- ** **
- ** PURPOSE : Receive, validate and measure data from multi process tester **
- ** **
- ** REMARKS : **
- ** **
- ** PLATFORM DEPENDANT [yes/no]: yes **
- ** **
- ** TO BE CHANGED BY USER [yes/no]: no **
- ** **
- *******************************************************************************/
-// System includes
+** **
+** SRC-MODULE: dlt-test-multi-process-client.c **
+** **
+** TARGET : linux **
+** **
+** PROJECT : DLT **
+** **
+** AUTHOR : Lassi Marttala <Lassi.LM.Marttala@partner.bmw.de> **
+** **
+** PURPOSE : Receive, validate and measure data from multi process tester **
+** **
+** REMARKS : **
+** **
+** PLATFORM DEPENDANT [yes/no]: yes **
+** **
+** TO BE CHANGED BY USER [yes/no]: no **
+** **
+*******************************************************************************/
+/* System includes */
#include <string.h>
#include <stdio.h>
#include <unistd.h>
@@ -54,14 +54,14 @@
#include <sys/uio.h>
#include <sys/stat.h>
-// DLT Library includes
+/* DLT Library includes */
#include "dlt_client.h"
#include "dlt_protocol.h"
#include "dlt_user.h"
-// PRivate includes
+/* PRivate includes */
#include "dlt-test-multi-process.h"
-// Local data structures
+/* Local data structures */
typedef struct {
int max_messages;
int verbose;
@@ -74,22 +74,23 @@ typedef struct {
} s_parameters;
typedef struct {
- int messages_received;
- int broken_messages_received;
- int bytes_received;
- int first_message_time;
- int output_bytes;
+ int messages_received;
+ int broken_messages_received;
+ int bytes_received;
+ int first_message_time;
+ int output_bytes;
} s_statistics;
-// Forward declarations
+/* Forward declarations */
int receive(DltMessage *msg, void *data);
/**
* Print usage information
*/
-void usage(char *name) {
+void usage(char *name)
+{
char version[255];
- dlt_get_version(version,255);
+ dlt_get_version(version, 255);
printf("Usage: %s [options] <remote address|serial device>\n", name);
printf("Receive messages from dlt-test-multi-process.\n");
@@ -105,7 +106,8 @@ void usage(char *name) {
/**
* Initialize reasonable default parameters.
*/
-void init_params(s_parameters *params) {
+void init_params(s_parameters *params)
+{
params->max_messages = 10000;
params->verbose = 0;
params->serial = 0;
@@ -117,11 +119,13 @@ void init_params(s_parameters *params) {
/**
* Read the command line parameters
*/
-int read_params(s_parameters *params, int argc, char *argv[]) {
+int read_params(s_parameters *params, int argc, char *argv[])
+{
init_params(params);
int c;
opterr = 0;
- while ((c = getopt(argc, argv, "m:yb:vo:")) != -1) {
+
+ while ((c = getopt(argc, argv, "m:yb:vo:")) != -1)
switch (c) {
case 'm':
params->max_messages = atoi(optarg);
@@ -139,49 +143,49 @@ int read_params(s_parameters *params, int argc, char *argv[]) {
params->output = optarg;
break;
case '?':
- if(optopt == 'm' || optopt == 'b' || optopt == 'o')
- {
+
+ if ((optopt == 'm') || (optopt == 'b') || (optopt == 'o'))
fprintf(stderr, "Option -%c requires an argument.\n", optopt);
- }
- if (isprint(optopt)) {
+
+ if (isprint(optopt))
fprintf(stderr, "Unknown option '-%c'.\n", optopt);
- } else {
+ else
fprintf(stderr, "Unknown option character '\\x%x'.\n", optopt);
- }
+
return -1;
break;
default:
return -1;
}
- }
+
return 0;
}
/**
* Set the connection parameters for dlt client
*/
-int init_dlt_connect(DltClient *client, const s_parameters *params, int argc, char *argv[]) {
+int init_dlt_connect(DltClient *client, const s_parameters *params, int argc, char *argv[])
+{
char id[4];
+
if (argc < 2)
return -1;
- if(params->serial > 0)
- {
+
+ if (params->serial > 0) {
client->mode = 1;
- if(dlt_client_set_serial_device(client, argv[argc - 1]) == -1)
- {
- fprintf(stderr,"set serial device didn't succeed\n");
+
+ if (dlt_client_set_serial_device(client, argv[argc - 1]) == -1) {
+ fprintf(stderr, "set serial device didn't succeed\n");
return -1;
}
+
dlt_client_setbaudrate(client, params->baudrate);
}
- else
- {
- if(dlt_client_set_server_ip(client, argv[argc - 1]) == -1)
- {
- fprintf(stderr,"set serial ip didn't succeed\n");
- return -1;
- }
+ else if (dlt_client_set_server_ip(client, argv[argc - 1]) == -1) {
+ fprintf(stderr, "set serial ip didn't succeed\n");
+ return -1;
}
+
dlt_set_id(id, ECUID);
return 0;
}
@@ -189,7 +193,8 @@ int init_dlt_connect(DltClient *client, const s_parameters *params, int argc, ch
/**
* Entry point
*/
-int main(int argc, char *argv[]) {
+int main(int argc, char *argv[])
+{
s_parameters params;
DltClient client;
params.client_ref = &client;
@@ -204,24 +209,24 @@ int main(int argc, char *argv[]) {
dlt_client_register_message_callback(receive);
err = init_dlt_connect(&client, &params, argc, argv);
+
if (err != 0) {
usage(argv[0]);
return err;
}
err = dlt_client_connect(&client, params.verbose);
+
if (err != DLT_RETURN_OK) {
- printf("Failed to connect %s.\n", client.mode > 0 ? client.serialDevice : client.servIP);
+ printf("Failed to connect %s.\n", client.mode > 0 ? client.serialDevice : client.servIP);
return err;
}
- if(params.output)
- {
- params.output_handle = open(params.output,O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+ if (params.output) {
+ params.output_handle = open(params.output, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
- if (params.output_handle == -1)
- {
- fprintf(stderr,"Failed to open %s for writing.\n",params.output);
+ if (params.output_handle == -1) {
+ fprintf(stderr, "Failed to open %s for writing.\n", params.output);
return -1;
}
}
@@ -230,10 +235,9 @@ int main(int argc, char *argv[]) {
dlt_client_main_loop(&client, &params, params.verbose);
- if(params.output_handle > 0)
- {
+ if (params.output_handle > 0)
close(params.output_handle);
- }
+
return 0;
}
@@ -243,36 +247,38 @@ int main(int argc, char *argv[]) {
void print_stats(s_statistics stats, s_parameters params)
{
static int last_print_time;
- if(last_print_time >= time(NULL) && // Only print once a second
- (stats.messages_received+stats.broken_messages_received) % 1000 != 0 &&
- params.messages_left != 0) // Print also every 1000th message
- {
+
+ if ((last_print_time >= time(NULL)) && /* Only print once a second */
+ ((stats.messages_received + stats.broken_messages_received) % 1000 != 0) &&
+ (params.messages_left != 0)) /* Print also every 1000th message */
+
return;
- }
- printf("\033[2J\033[1;1H"); // Clear screen.
+
+ printf("\033[2J\033[1;1H"); /* Clear screen. */
printf("Statistics:\n");
printf(" Messages received : %d\n", stats.messages_received);
printf(" Broken messages received : %d\n", stats.broken_messages_received);
printf(" Bytes received : %d\n", stats.bytes_received);
- printf(" Time running (seconds) : %ld\n", time(NULL)-stats.first_message_time);
+ printf(" Time running (seconds) : %ld\n", time(NULL) - stats.first_message_time);
printf(" Throughput (msgs/sec)/(B/sec) : %ld/%ld\n",
- stats.messages_received/((time(NULL)-stats.first_message_time)+1),
- (stats.bytes_received)/((time(NULL)-stats.first_message_time)+1));
- if(params.messages_left == 0)
- {
- if(stats.broken_messages_received == 0)
+ stats.messages_received / ((time(NULL) - stats.first_message_time) + 1),
+ (stats.bytes_received) / ((time(NULL) - stats.first_message_time) + 1));
+
+ if (params.messages_left == 0) {
+ if (stats.broken_messages_received == 0)
printf("All messages received succesfully!\n");
else
printf("Test failure! There were %d broken messages.", stats.broken_messages_received);
-
}
+
fflush(stdout);
last_print_time = time(NULL);
}
/**
* Callback for dlt client
*/
-int receive(DltMessage *msg, void *data) {
+int receive(DltMessage *msg, void *data)
+{
static s_statistics stats;
char apid[5];
struct iovec iov[2];
@@ -281,43 +287,38 @@ int receive(DltMessage *msg, void *data) {
memset(apid, 0, 5);
memcpy(apid, msg->extendedheader->apid, 4);
- if(apid[0] != 'M' || apid[1] != 'T') // TODO: Check through the app description
+ if ((apid[0] != 'M') || (apid[1] != 'T')) /* TODO: Check through the app description */
return 0;
params->messages_left--;
- if(stats.first_message_time == 0)
- {
+ if (stats.first_message_time == 0)
stats.first_message_time = time(NULL);
- }
int buflen = msg->datasize + 1;
char *buf = malloc(buflen);
- if(buf==0)
- {
+
+ if (buf == 0) {
printf("Out of memory\n");
return -1;
}
+
memset(buf, 0, buflen);
- dlt_message_payload(msg,buf,buflen-1,DLT_OUTPUT_ASCII,0);
+ dlt_message_payload(msg, buf, buflen - 1, DLT_OUTPUT_ASCII, 0);
- if(strcmp(buf, PAYLOAD_DATA) == 0)
- {
+ if (strcmp(buf, PAYLOAD_DATA) == 0)
stats.messages_received++;
- }
else
- {
stats.broken_messages_received++;
- }
- stats.bytes_received += msg->datasize+msg->headersize-sizeof(DltStorageHeader);;
+
+ stats.bytes_received += msg->datasize + msg->headersize - sizeof(DltStorageHeader);
free(buf);
print_stats(stats, *params);
- if (params->output_handle > 0)
- {
+ if (params->output_handle > 0) {
iov[0].iov_base = msg->headerbuffer;
iov[0].iov_len = msg->headersize;
iov[1].iov_base = msg->databuffer;
@@ -325,9 +326,9 @@ int receive(DltMessage *msg, void *data) {
stats.output_bytes += writev(params->output_handle, iov, 2);
}
- if(params->messages_left < 1)
- {
+
+ if (params->messages_left < 1)
dlt_client_cleanup(params->client_ref, params->verbose);
- }
+
return 0;
}