summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Berat <fberat@de.adit-jv.com>2016-03-21 15:40:53 +0900
committerGernot Wirschal <gernot.wirschal@bmw.de>2016-04-27 09:23:56 +0200
commite1bdf1e7f1d2ac87a594abf8622f536d3ff4b0b9 (patch)
treeae58da225312880bab547191febf82691c20fea8
parentcc4517dcffc6e5fd66791fca486586ae9b948174 (diff)
downloadDLT-daemon-e1bdf1e7f1d2ac87a594abf8622f536d3ff4b0b9.tar.gz
MultiNode: Add support for port configuration
Signed-off-by:Frederic Berat <fberat@de.adit-jv.com> Change-Id: I9b387d5713f5ae7b6fcfadb22d804fdb97534e44
-rw-r--r--include/dlt/dlt_client.h10
-rw-r--r--src/gateway/dlt_gateway.c13
-rw-r--r--src/lib/dlt_client.c45
3 files changed, 57 insertions, 11 deletions
diff --git a/include/dlt/dlt_client.h b/include/dlt/dlt_client.h
index 1dcc3a6..676ffeb 100644
--- a/include/dlt/dlt_client.h
+++ b/include/dlt/dlt_client.h
@@ -91,6 +91,7 @@ typedef struct
DltReceiver receiver; /**< receiver pointer to dlt receiver structure */
int sock; /**< sock Connection handle/socket */
char *servIP; /**< servIP IP adress/Hostname of TCP/IP interface */
+ int port; /**< Port for TCP connections (optional) */
char *serialDevice; /**< serialDevice Devicename of serial device */
char *socketPath; /**< socketPath Unix socket path */
speed_t baudrate; /**< baudrate Baudrate of serial interface, as speed_t */
@@ -104,6 +105,15 @@ extern "C" {
void dlt_client_register_message_callback(int (*registerd_callback) (DltMessage *message, void *data));
/**
+ * Initialising dlt client structure with a specific port
+ * @param client pointer to dlt client structure
+ * @param port The port for the tcp connection
+ * @param verbose if set to true verbose information is printed out.
+ * @return negative value if there was an error
+ */
+int dlt_client_init_port(DltClient *client, int port, int verbose);
+
+/**
* Initialising dlt client structure
* @param client pointer to dlt client structure
* @param verbose if set to true verbose information is printed out.
diff --git a/src/gateway/dlt_gateway.c b/src/gateway/dlt_gateway.c
index 92faefc..bf02b94 100644
--- a/src/gateway/dlt_gateway.c
+++ b/src/gateway/dlt_gateway.c
@@ -480,7 +480,9 @@ int dlt_gateway_store_connection(DltGateway *gateway,
tmp->control_msgs,
sizeof(tmp->control_msgs));
- if (dlt_client_init(&gateway->connections[i].client, verbose) != 0)
+ if (dlt_client_init_port(&gateway->connections[i].client,
+ gateway->connections[i].port,
+ verbose) != 0)
{
free(gateway->connections[i].ip_address);
free(gateway->connections[i].ecuid);
@@ -855,6 +857,15 @@ int dlt_gateway_process_passive_node_messages(DltDaemon *daemon,
/* only forward messages if the received ECUid is the expected one */
if (strncmp(header->ecu, con->ecuid, strlen(con->ecuid)) == 0)
{
+ snprintf(local_str,
+ DLT_DAEMON_TEXTBUFSIZE,
+ "Received ECUid (%s) similar to configured ECUid(%s). "
+ "Forwarding message (%s).\n",
+ header->ecu,
+ con->ecuid,
+ msg.databuffer);
+ dlt_log(LOG_DEBUG, local_str);
+
if (dlt_daemon_client_send(DLT_DAEMON_SEND_TO_ALL,
daemon,
daemon_local,
diff --git a/src/lib/dlt_client.c b/src/lib/dlt_client.c
index 3de3845..20291d5 100644
--- a/src/lib/dlt_client.c
+++ b/src/lib/dlt_client.c
@@ -105,25 +105,44 @@ void dlt_client_register_message_callback(int (*registerd_callback) (DltMessage
message_callback_function = registerd_callback;
}
-DltReturnValue dlt_client_init(DltClient *client, int verbose)
+DltReturnValue dlt_client_init_port(DltClient *client, int port, int verbose)
{
if (verbose)
- printf("Init dlt client struct\n");
+ {
+ snprintf(str, DLT_CLIENT_TEXTBUFSIZE,
+ "Init dlt client struct with port %d\n", port);
+ dlt_log(LOG_INFO, str);
+ }
if (client == NULL)
+ {
return DLT_RETURN_ERROR;
+ }
- client->sock = -1;
- client->servIP = 0;
- client->serialDevice = 0;
- client->baudrate = DLT_CLIENT_INITIAL_BAUDRATE;
+ client->sock=-1;
+ client->servIP=0;
+ client->serialDevice=0;
+ client->baudrate=DLT_CLIENT_INITIAL_BAUDRATE;
+ client->port = port;
client->socketPath = 0;
client->mode=DLT_CLIENT_MODE_TCP;
- client->receiver.buffer = 0;
+ client->receiver.buffer=0;
return DLT_RETURN_OK;
}
+DltReturnValue dlt_client_init(DltClient *client, int verbose)
+{
+ if (verbose)
+ {
+ snprintf(str, DLT_CLIENT_TEXTBUFSIZE,
+ "Init dlt client struct with default port.\n");
+ dlt_log(LOG_INFO, str);
+ }
+
+ return dlt_client_init_port(client, DLT_DAEMON_TCP_PORT, verbose);
+}
+
DltReturnValue dlt_client_connect(DltClient *client, int verbose)
{
char portnumbuffer[33];
@@ -163,12 +182,18 @@ DltReturnValue dlt_client_connect(DltClient *client, int verbose)
for(p = servinfo; p != NULL; p = p->ai_next) {
if ((client->sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) < 0) {
- snprintf(str, DLT_CLIENT_TEXTBUFSIZE, "socket() failed!\n");
+ snprintf(str, DLT_CLIENT_TEXTBUFSIZE,
+ "socket() failed! %s\n",
+ strerror(errno));
+ dlt_log(LOG_WARNING, str);
continue;
}
if (connect(client->sock, p->ai_addr, p->ai_addrlen) < 0) {
+ snprintf(str, DLT_CLIENT_TEXTBUFSIZE,
+ "connect() failed! %s\n",
+ strerror(errno));
close(client->sock);
- snprintf(str, DLT_CLIENT_TEXTBUFSIZE, "connect() failed!\n");
+ dlt_log(LOG_WARNING, str);
continue;
}
@@ -178,7 +203,7 @@ DltReturnValue dlt_client_connect(DltClient *client, int verbose)
freeaddrinfo(servinfo);
if (p == NULL) {
- fprintf(stderr, "ERROR: failed to connect - %s\n", str);
+ dlt_log(LOG_ERR, "ERROR: failed to connect.\n");
return DLT_RETURN_ERROR;
}