From 967d6b662984054a809e31ab1363d24e5d32b58a Mon Sep 17 00:00:00 2001 From: Alexander Wenzel Date: Fri, 11 Oct 2013 16:31:49 +0200 Subject: Added command line commands set log level and set trace status. Signed-off-by: Alexander Wenzel --- include/dlt/dlt_client.h | 2 ++ src/console/dlt-control.c | 40 ++++++++++++++++++++++++++--- src/lib/dlt_client.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 103 insertions(+), 4 deletions(-) diff --git a/include/dlt/dlt_client.h b/include/dlt/dlt_client.h index 58bfaf0..c2ad605 100755 --- a/include/dlt/dlt_client.h +++ b/include/dlt/dlt_client.h @@ -140,6 +140,8 @@ int dlt_client_send_ctrl_msg(DltClient *client, char *apid, char *ctid, uint8_t * @return negative value if there was an error */ int dlt_client_send_inject_msg(DltClient *client, char *apid, char *ctid, uint32_t serviceID, uint8_t *buffer, uint32_t size); +int dlt_client_send_log_level(DltClient *client, char *apid, char *ctid, uint8_t logLevel); +int dlt_client_send_trace_status(DltClient *client, char *apid, char *ctid, uint8_t traceStatus); /** * Set baudrate within dlt client structure * @param client pointer to dlt client structure diff --git a/src/console/dlt-control.c b/src/console/dlt-control.c index 4d16be1..eb3f4dd 100755 --- a/src/console/dlt-control.c +++ b/src/console/dlt-control.c @@ -77,6 +77,8 @@ typedef struct { char *mvalue; char *xvalue; int tvalue; + int lvalue; + int rvalue; int bvalue; char ecuid[4]; @@ -164,6 +166,8 @@ void usage() printf(" -m message Control message injection in ASCII\n"); printf(" -x message Control message injection in Hex e.g. 'ad 01 24 ef'\n"); printf(" -t milliseconds Timeout to terminate application (Default:1000)'\n"); + printf(" -l loglevel Set the log level (0=off - 5=verbose,255=default)\n"); + printf(" -r tracestatus Set the trace status (0=off - 1=on,255=default\n"); } /** @@ -188,11 +192,13 @@ int main(int argc, char* argv[]) dltdata.mvalue = 0; dltdata.xvalue = 0; dltdata.tvalue = 1000; + dltdata.lvalue = -1; + dltdata.rvalue = -1; /* Fetch command line arguments */ opterr = 0; - while ((c = getopt (argc, argv, "vhye:b:a:c:s:m:x:t:")) != -1) + while ((c = getopt (argc, argv, "vhye:b:a:c:s:m:x:t:l:r:")) != -1) switch (c) { case 'v': @@ -251,6 +257,16 @@ int main(int argc, char* argv[]) dltdata.tvalue = atoi(optarg);; break; } + case 'l': + { + dltdata.lvalue = atoi(optarg);; + break; + } + case 'r': + { + dltdata.rvalue = atoi(optarg);; + break; + } case '?': { @@ -365,6 +381,26 @@ int main(int argc, char* argv[]) /* send control message in hex */ dlt_client_send_inject_msg(&dltclient,dltdata.avalue,dltdata.cvalue,dltdata.svalue,buffer,size); } + else if(dltdata.lvalue!=-1 && dltdata.avalue && dltdata.cvalue) + { + /* log level */ + printf("Set log level:\n"); + printf("AppId: %s\n",dltdata.avalue); + printf("ConId: %s\n",dltdata.cvalue); + printf("Loglevel: %d\n",dltdata.lvalue); + /* send control message*/ + dlt_client_send_log_level(&dltclient,dltdata.avalue,dltdata.cvalue,dltdata.lvalue); + } + else if(dltdata.rvalue!=-1 && dltdata.avalue && dltdata.cvalue) + { + /* trace status */ + printf("Set trace status:\n"); + printf("AppId: %s\n",dltdata.avalue); + printf("ConId: %s\n",dltdata.cvalue); + printf("TraceStatus:: %d\n",dltdata.rvalue); + /* send control message in*/ + dlt_client_send_trace_status(&dltclient,dltdata.avalue,dltdata.cvalue,dltdata.rvalue); + } /* Dlt Client Main Loop */ //dlt_client_main_loop(&dltclient, &dltdata, dltdata.vflag); @@ -385,14 +421,12 @@ int main(int argc, char* argv[]) int dlt_receive_message_callback(DltMessage *message, void *data) { - DltReceiveData *dltdata; if ((message==0) || (data==0)) { return -1; } - dltdata = (DltReceiveData*)data; return 0; } diff --git a/src/lib/dlt_client.c b/src/lib/dlt_client.c index 76a4c71..9104416 100755 --- a/src/lib/dlt_client.c +++ b/src/lib/dlt_client.c @@ -319,7 +319,6 @@ int dlt_client_send_ctrl_msg(DltClient *client, char *apid, char *ctid, uint8_t { DltMessage msg; int ret; - int offset=0; int32_t len; @@ -477,6 +476,70 @@ int dlt_client_send_inject_msg(DltClient *client, char *apid, char *ctid, uint32 return 0; } +int dlt_client_send_log_level(DltClient *client, char *apid, char *ctid, uint8_t logLevel) +{ + DltServiceSetLogLevel *req; + uint8_t *payload; + + payload = (uint8_t *) malloc(sizeof(DltServiceSetLogLevel)); + + if(payload==0) + { + return -1; + } + + req = (DltServiceSetLogLevel *) payload; + + req->service_id = DLT_SERVICE_ID_SET_LOG_LEVEL; + dlt_set_id(req->apid,apid); + dlt_set_id(req->ctid,ctid); + req->log_level=logLevel; + dlt_set_id(req->com,"remo"); + + /* free message */ + if (dlt_client_send_ctrl_msg(client,"APP","CON",payload,sizeof(DltServiceSetLogLevel))==-1) + { + free(payload); + return -1; + } + + free(payload); + + return 0; +} + +int dlt_client_send_trace_status(DltClient *client, char *apid, char *ctid, uint8_t traceStatus) +{ + DltServiceSetLogLevel *req; + uint8_t *payload; + + payload = (uint8_t *) malloc(sizeof(DltServiceSetLogLevel)); + + if(payload==0) + { + return -1; + } + + req = (DltServiceSetLogLevel *) payload; + + req->service_id = DLT_SERVICE_ID_SET_TRACE_STATUS; + dlt_set_id(req->apid,apid); + dlt_set_id(req->ctid,ctid); + req->log_level=traceStatus; + dlt_set_id(req->com,"remo"); + + /* free message */ + if (dlt_client_send_ctrl_msg(client,"APP","CON",payload,sizeof(DltServiceSetLogLevel))==-1) + { + free(payload); + return -1; + } + + free(payload); + + return 0; +} + int dlt_client_setbaudrate(DltClient *client, int baudrate) { if (client==0) -- cgit v1.2.1