33 #include <sys/socket.h> 34 #include <arpa/inet.h> 45 #include <sys/timerfd.h> 50 #include <linux/stat.h> 53 #ifdef DLT_SYSTEMD_WATCHDOG_ENABLE 54 #include <systemd/sd-daemon.h> 72 #define DLT_CHECK_RCV_DATA_SIZE(received, required) \ 74 int _ret = DLT_RETURN_OK; \ 75 if (((int)received - (int)required) < 0) { \ 76 dlt_vlog(LOG_WARNING, "%s: Received data not complete\n", __func__); \ 77 _ret = DLT_RETURN_ERROR; \ 115 if ((daemon ==
NULL) || (daemon_local ==
NULL))
119 "%s: Invalid parameters\n",
159 "%s: send dlt message failed\n",
161 dlt_log(LOG_WARNING, local_str);
190 int msg1_sz, msg2_sz;
194 if ((daemon ==
NULL) || (daemon_local ==
NULL))
198 "%s: Invalid parameters\n",
209 msg1_sz = daemon_local->
msg.
headersize -
sizeof(DltStorageHeader);
239 dlt_log(LOG_WARNING,
"dlt_daemon_client_send: serial send dlt message failed\n");
252 dlt_log(LOG_WARNING,
"dlt_daemon_client_send: socket send dlt message failed\n");
272 static int error_dlt_offline_trace_write_failed = 0;
273 if(!error_dlt_offline_trace_write_failed)
275 dlt_log(LOG_ERR,
"dlt_daemon_client_send: dlt_offline_trace_write failed!\n");
276 error_dlt_offline_trace_write_failed = 1;
287 &daemon_local->
flags,
328 dlt_log(LOG_DEBUG,
"dlt_daemon_client_send: Buffer is full! Message discarded.\n");
346 if ((daemon==0) || (msg==0) || (appid==0) || (ctid==0))
363 #if (BYTE_ORDER==BIG_ENDIAN) 383 if (strcmp(appid,
"")==0)
391 if (strcmp(ctid,
"")==0)
406 dlt_log(LOG_WARNING,
"Huge control message discarded!\n");
415 dlt_log(LOG_DEBUG,
"dlt_daemon_control_send_control_message: DLT message send to all failed!.\n");
424 uint32_t id,id_tmp=0;
425 DltStandardHeaderExtra extra;
429 if (daemon ==
NULL || daemon_local ==
NULL|| msg ==
NULL)
434 if (msg->
datasize < (int32_t)
sizeof(uint32_t))
444 if (strcmp(daemon_local->
flags.
evalue, extra.ecu) != 0)
626 DltServiceGetSoftwareVersionResponse *resp;
645 msg.
datasize =
sizeof(DltServiceGetSoftwareVersionResponse) + len;
661 resp = (DltServiceGetSoftwareVersionResponse*) msg.
databuffer;
677 DltServiceGetDefaultLogLevelResponse *resp;
693 msg.
datasize =
sizeof(DltServiceGetDefaultLogLevelResponse);
709 resp = (DltServiceGetDefaultLogLevelResponse*) msg.
databuffer;
723 DltServiceGetLogInfoRequest *req;
728 int num_applications=0, num_contexts=0;
729 uint16_t count_app_ids=0, count_con_ids=0;
731 #if (DLT_DEBUG_GETLOGINFO==1) 735 int32_t i,j,offset=0;
758 req = (DltServiceGetLogInfoRequest*) (msg->
databuffer);
768 if ((req->options < 3 ) || (req->options>7))
774 if (req->apid[0]!=
'\0')
779 num_applications = 1;
780 if (req->ctid[0]!=
'\0')
784 num_contexts = ((context)?1:0);
793 num_applications = 0;
807 resp.
datasize =
sizeof(uint32_t) +
sizeof(int8_t) +
sizeof(
ID4) ;
809 sizecont =
sizeof(uint32_t) ;
812 if ((req->options==4) || (req->options==6) || (req->options==7))
814 sizecont +=
sizeof(int8_t);
818 if ((req->options==5) || (req->options==6) || (req->options==7))
820 sizecont+=
sizeof(int8_t);
823 resp.
datasize+= (num_applications * (
sizeof(uint32_t) +
sizeof(uint16_t) )) +
824 (num_contexts * sizecont);
831 if (req->apid[0]!=
'\0')
833 if (req->ctid[0]!=
'\0')
862 context = &(daemon->
contexts[offset_base+j]);
928 memcpy(resp.
databuffer,&sid,
sizeof(uint32_t));
929 offset+=
sizeof(uint32_t);
931 value = (((num_applications!=0)&&(num_contexts!=0))?req->options:8);
933 memcpy(resp.
databuffer+offset,&value,
sizeof(int8_t));
934 offset+=
sizeof(int8_t);
936 count_app_ids = num_applications;
938 if (count_app_ids!=0)
940 memcpy(resp.
databuffer+offset,&count_app_ids,
sizeof(uint16_t));
941 offset+=
sizeof(uint16_t);
943 #if (DLT_DEBUG_GETLOGINFO==1) 948 for (i=0;i<count_app_ids;i++)
950 if (req->apid[0]!=
'\0')
981 #if (DLT_DEBUG_GETLOGINFO==1) 987 if (req->apid[0]!=
'\0')
989 count_con_ids = num_contexts;
996 memcpy(resp.
databuffer+offset,&count_con_ids,
sizeof(uint16_t));
997 offset+=
sizeof(uint16_t);
999 #if (DLT_DEBUG_GETLOGINFO==1) 1004 for (j=0;j<count_con_ids;j++)
1006 #if (DLT_DEBUG_GETLOGINFO==1) 1010 if (!((count_con_ids==1) && (req->apid[0]!=
'\0') && (req->ctid[0]!=
'\0')))
1012 context = &(daemon->
contexts[offset_base+j]);
1018 ((req->ctid[0]==
'\0') ||
1019 ((req->ctid[0]!=
'\0') && (memcmp(context->
ctid,req->ctid,
DLT_ID_SIZE)==0)))
1023 offset+=
sizeof(
ID4);
1025 #if (DLT_DEBUG_GETLOGINFO==1) 1032 if ((req->options==4) || (req->options==6) || (req->options==7))
1035 memcpy(resp.
databuffer+offset,&ll,
sizeof(int8_t));
1036 offset+=
sizeof(int8_t);
1040 if ((req->options==5) || (req->options==6) || (req->options==7))
1043 memcpy(resp.
databuffer+offset,&ts,
sizeof(int8_t));
1044 offset+=
sizeof(int8_t);
1048 if (req->options==7)
1053 memcpy(resp.
databuffer+offset,&len,
sizeof(uint16_t));
1054 offset+=
sizeof(uint16_t);
1061 memcpy(resp.
databuffer+offset,&len,
sizeof(uint16_t));
1062 offset+=
sizeof(uint16_t);
1066 #if (DLT_DEBUG_GETLOGINFO==1) 1072 #if (DLT_DEBUG_GETLOGINFO==1) 1078 if (req->options==7)
1083 memcpy(resp.
databuffer+offset,&len,
sizeof(uint16_t));
1084 offset+=
sizeof(uint16_t);
1091 memcpy(resp.
databuffer+offset,&len,
sizeof(uint16_t));
1092 offset+=
sizeof(uint16_t);
1112 DltServiceMessageBufferOverflowResponse *resp;
1129 msg.
datasize =
sizeof(DltServiceMessageBufferOverflowResponse);
1144 resp = (DltServiceMessageBufferOverflowResponse*) msg.
databuffer;
1148 resp->overflow_counter = overflow_counter;
1166 DltServiceResponse *resp;
1182 msg.
datasize =
sizeof(DltServiceResponse);
1198 resp->service_id = service_id;
1199 resp->status = status;
1211 DltServiceUnregisterContext *resp;
1227 msg.
datasize =
sizeof(DltServiceUnregisterContext);
1242 resp = (DltServiceUnregisterContext*) msg.
databuffer;
1265 DltServiceConnectionInfo *resp;
1281 msg.
datasize =
sizeof(DltServiceConnectionInfo);
1296 resp = (DltServiceConnectionInfo*) msg.
databuffer;
1299 resp->state = state;
1318 DltServiceTimezone *resp;
1334 msg.
datasize =
sizeof(DltServiceTimezone);
1353 time_t t = time(
NULL);
1355 localtime_r(&t, <);
1356 #if !defined(__CYGWIN__) 1357 resp->timezone = (int32_t) lt.tm_gmtoff;
1359 resp->isdst = (uint8_t) lt.tm_isdst;
1377 DltServiceMarker *resp;
1393 msg.
datasize =
sizeof(DltServiceMarker);
1428 uint32_t
id=0,id_tmp=0;
1431 int32_t data_length_inject=0;
1432 uint32_t data_length_inject_tmp=0;
1436 DltUserHeader userheader;
1437 DltUserControlMsgInjection usercontext;
1438 uint8_t *userbuffer;
1456 data_length_inject=0;
1457 data_length_inject_tmp=0;
1501 userbuffer = malloc(data_length_inject);
1509 usercontext.data_length_inject = data_length_inject;
1510 usercontext.service_id = id;
1512 memcpy(userbuffer,ptr,data_length_inject);
1517 &(usercontext),
sizeof(DltUserControlMsgInjection),
1518 userbuffer, data_length_inject);
1550 int8_t old_log_level = 0;
1562 dlt_log(LOG_ERR,
"Log level could not be sent!\n");
1585 context = &(daemon->
contexts[count]);
1597 ret = strncmp(src_str, str, len);
1602 else if ((ret > 0) && (app_flag == 1))
1620 DltServiceSetLogLevel *req =
NULL;
1622 int8_t appid_length = 0;
1623 int8_t ctxtid_length = 0;
1635 req = (DltServiceSetLogLevel*) (msg->
databuffer);
1639 appid_length = strlen(apid);
1640 ctxtid_length = strlen(ctid);
1641 if ((appid_length != 0) && (apid[appid_length-1] ==
'*') && (ctid[0] == 0))
1645 else if ((ctxtid_length != 0) && (ctid[ctxtid_length-1] ==
'*') && (apid[0] == 0))
1649 else if ((appid_length != 0) && (apid[appid_length-1] !=
'*') && (ctid[0] == 0))
1653 else if ((ctxtid_length != 0) && (ctid[ctxtid_length-1] !=
'*') && (apid[0] == 0))
1668 dlt_log(LOG_ERR,
"Context not found!\n");
1679 DltServiceSetLogLevel *req;
1683 int8_t old_trace_status;
1695 req = (DltServiceSetLogLevel*) (msg->
databuffer);
1731 DltServiceSetDefaultLogLevel *req;
1744 req = (DltServiceSetDefaultLogLevel*) (msg->
databuffer);
1767 DltServiceSetDefaultLogLevel *req =
NULL;
1769 int8_t loglevel = 0;
1781 req = (DltServiceSetDefaultLogLevel*) (msg->
databuffer);
1786 loglevel = req->log_level;
1803 DltServiceSetDefaultLogLevel *req;
1816 req = (DltServiceSetDefaultLogLevel*) (msg->
databuffer);
1839 DltServiceSetVerboseMode *req;
1852 req = (DltServiceSetVerboseMode*) (msg->
databuffer);
1853 if ((req->new_status==0) || (req->new_status==1))
1894 #if (BYTE_ORDER==BIG_ENDIAN) 1920 dlt_log(LOG_WARNING,
"Huge control message discarded!\n");
1952 if ((daemon_local ==
NULL) || (daemon ==
NULL) || (receiver ==
NULL))
1956 "%s: invalid parameters",
1962 res = read(receiver->
fd, &expir,
sizeof(expir));
1968 "%s: Fail to read timer (%s)\n", __func__, strerror(errno));
1982 "Can't send contents of ring buffer to clients\n");
1995 dlt_log(LOG_DEBUG,
"Timer timingpacket\n");
2011 if((daemon_local ==
NULL) || (daemon ==
NULL) || (receiver ==
NULL))
2015 "%s: invalid parameters",
2021 res = read(receiver->
fd, &expir,
sizeof(expir));
2027 "%s: Fail to read timer (%s)\n", __func__, strerror(errno));
2044 time_t t = time(
NULL);
2048 memset((
void*)<, 0,
sizeof(lt));
2049 localtime_r(&t, <);
2057 dlt_log(LOG_DEBUG,
"Timer ecuversion\n");
2062 #ifdef DLT_SYSTEMD_WATCHDOG_ENABLE 2074 if((daemon_local ==
NULL) || (daemon ==
NULL) || (receiver ==
NULL))
2078 "%s: invalid parameters",
2084 res = read(receiver->
fd, &expir,
sizeof(expir));
2090 "Failed to read timer_wd; %s\n",
2092 dlt_log(LOG_WARNING, local_str);
2097 if(sd_notify(0,
"WATCHDOG=1") < 0)
2099 dlt_log(LOG_CRIT,
"Could not reset systemd watchdog\n");
2102 dlt_log(LOG_DEBUG,
"Timer watchdog\n");
2117 dlt_log(LOG_DEBUG,
"Timer watchdog not enabled\n");
2125 DltServiceOfflineLogstorage *req;
2132 dlt_log(LOG_ERR,
"Invalid function parameters used for dlt_daemon_control_service_logstorage\n");
2139 dlt_log(LOG_INFO,
"Offline logstorage functionality not enabled or MAX device set is 0\n");
2148 req = (DltServiceOfflineLogstorage*) (msg->
databuffer);
2149 int device_index=-1;
2155 req->mount_point) == 0)
2163 (device_index == -1))
2169 if((device_index) == -1)
2177 dlt_log(LOG_WARNING,
"MAX devices already in use \n");
2257 DltServicePassiveNodeConnect *req;
2260 if (daemon ==
NULL || daemon_local ==
NULL || msg ==
NULL ||
2270 "Received passive node connection status request, " 2271 "but GatewayMode is disabled\n");
2289 req = (DltServicePassiveNodeConnect *) msg->
databuffer;
2294 req->connection_status,
2321 DltServicePassiveNodeConnectionInfo *resp;
2327 if (daemon ==
NULL || daemon_local ==
NULL)
2341 "Received passive node connection status request, " 2342 "but GatewayMode is disabled\n");
2356 msg.
datasize =
sizeof(DltServicePassiveNodeConnectionInfo);
2366 dlt_log(LOG_CRIT,
"Cannot allocate memory for message response\n");
2372 resp = (DltServicePassiveNodeConnectionInfo *) msg.
databuffer;
2378 for (i = 0; i < resp->num_connections; i++)
2383 "Maximal message size reached. Skip further information\n");
2390 dlt_log(LOG_CRIT,
"Passive node connection structure is NULL\n");
2405 resp->connection_status[i] = con->
status;
2406 memcpy(&resp->node_id[i * DLT_ID_SIZE], con->
ecuid, DLT_ID_SIZE);
void dlt_daemon_control_set_all_log_level(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
#define DLT_SERVICE_ID_CALLSW_CINJECTION
char runtime_application_cfg[PATH_MAX+1]
#define PRINT_FUNCTION_VERBOSE(_verbose)
#define DLT_ENDIAN_GET_32(htyp, x)
void dlt_daemon_control_set_default_log_level(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
#define DLT_DAEMON_ERROR_BUFFER_FULL
int dlt_logstorage_load_config(DltLogStorage *handle)
struct DltConnection * next
#define DLT_SERVICE_ID_SET_DEFAULT_LOG_LEVEL
DltStorageHeader * storageheader
void dlt_daemon_control_set_log_level(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
#define DLT_MSIN_CONTROL_RESPONSE
void dlt_daemon_user_send_all_update(DltDaemon *daemon, int8_t log_level, int verbose)
int dlt_daemon_control_message_timezone(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
#define DLT_DAEMON_SEM_LOCK()
#define DLT_HTYP_PROTOCOL_VERSION1
void dlt_daemon_control_passive_node_connect(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
void dlt_set_id(char *id, const char *text)
void dlt_daemon_find_multiple_context_and_send(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int8_t app_flag, char *str, int8_t len, int8_t loglevel, int verbose)
DltDaemonApplication * applications
#define DLT_USER_MESSAGE_INJECTION
#define DLT_SERVICE_ID_USE_SESSION_ID
#define DLT_SERVICE_ID_GET_LOCAL_TIME
unsigned int connection_type
#define DLT_SERVICE_ID_SET_TRACE_STATUS
int dlt_daemon_send_ringbuffer_to_client(DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
DltLogStorage * storage_handle
#define DLT_STANDARD_HEADER_EXTRA_SIZE(htyp)
void dlt_daemon_control_service_response(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, uint32_t service_id, int8_t status, int verbose)
#define DLT_CHECK_RCV_DATA_SIZE(received, required)
DltReturnValue dlt_user_log_out3(int handle, void *ptr1, size_t len1, void *ptr2, size_t len2, void *ptr3, size_t len3)
int dlt_gateway_process_on_demand_request(DltGateway *gateway, DltDaemonLocal *daemon_local, char *node_id, int connection_status, int verbose)
int dlt_logstorage_device_disconnected(DltLogStorage *handle, int reason)
#define DLT_SERVICE_ID_SET_LOG_LEVEL
#define DLT_SERVICE_ID_GET_LOG_INFO
#define DLT_SERVICE_ID_OFFLINE_LOGSTORAGE
#define DLT_DAEMON_ERROR_OK
#define DLT_MSG_READ_VALUE(dst, src, length, type)
DltReturnValue dlt_log(int prio, char *s)
int8_t default_trace_status
int dlt_daemon_control_message_marker(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
#define DLT_DAEMON_ERROR_UNKNOWN
#define DLT_SERVICE_ID_SET_COM_INTERFACE_MAX_BANDWIDTH
#define DLT_SERVICE_ID_USE_EXTENDED_HEADER
#define DLT_SERVICE_ID_MARKER
#define DLT_MSIN_CONTROL_TIME
DltBuffer client_ringbuffer
int sendECUSoftwareVersion
#define DLT_SERVICE_ID_STORE_CONFIG
#define DLT_DAEMON_REMO_STRING
DltReturnValue dlt_message_init(DltMessage *msg, int verbose)
#define DLT_SERVICE_ID_SET_DEFAULT_TRACE_STATUS
void dlt_daemon_control_message_time(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
void dlt_daemon_logstorage_reset_application_loglevel(DltDaemon *daemon, int dev_num, int max_device, int verbose)
DltExtendedHeader * extendedheader
void dlt_daemon_logstorage_write(DltDaemon *daemon, DltDaemonFlags *user_config, unsigned char *data1, int size1, unsigned char *data2, int size2, unsigned char *data3, int size3)
DltReturnValue dlt_offline_trace_write(DltOfflineTrace *trace, unsigned char *data1, int size1, unsigned char *data2, int size2, unsigned char *data3, int size3)
#define DLT_DAEMON_CTRL_CTID
#define DLT_CON_MASK_CLIENT_MSG_SERIAL
char runtime_context_cfg[PATH_MAX+1]
#define DLT_SERVICE_RESPONSE_NOT_SUPPORTED
DltOfflineTrace offlineTrace
char offlineTraceDirectory[DLT_DAEMON_FLAG_MAX]
void dlt_daemon_control_get_default_log_level(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
DltDaemonContext * contexts
#define DLT_SERVICE_ID_UNREGISTER_CONTEXT
void dlt_daemon_send_log_level(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltDaemonContext *context, int8_t loglevel, int verbose)
static char * service_id[]
int dlt_daemon_process_one_s_timer(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *receiver, int verbose)
DltReturnValue dlt_message_set_extraparameters(DltMessage *msg, int verbose)
DltReturnValue dlt_set_storageheader(DltStorageHeader *storageheader, const char *ecu)
int dlt_daemon_close_socket(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
#define DLT_IS_HTYP_UEH(htyp)
#define DLT_SERVICE_RESPONSE_ERROR
#define DLT_SERVICE_ID_USE_ECU_ID
#define DLT_DAEMON_ERROR_SEND_FAILED
#define DLT_DAEMON_SEM_FREE()
void dlt_daemon_control_callsw_cinjection(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
#define DLT_OFFLINE_LOGSTORAGE_SYNC_CACHES
void dlt_daemon_user_send_default_update(DltDaemon *daemon, int verbose)
void dlt_daemon_control_reset_to_factory_default(DltDaemon *daemon, const char *filename, const char *filename1, int InitialContextLogLevel, int InitialContextTraceStatus, int InitialEnforceLlTsStatus, int verbose)
int dlt_daemon_applications_save(DltDaemon *daemon, const char *filename, int verbose)
#define DLT_OFFLINE_LOGSTORAGE_DEVICE_DISCONNECTED
#define DLT_OFFLINE_LOGSTORAGE_DEVICE_CONNECTED
void dlt_daemon_control_passive_node_connect_status(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
void dlt_daemon_change_state(DltDaemon *daemon, DltDaemonState newState)
#define DLT_SERVICE_ID_SET_VERBOSE_MODE
uint32_t dlt_uptime(void)
int dlt_daemon_client_send_control_message(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, char *appid, char *ctid, int verbose)
#define DLT_SERVICE_ID_USE_TIMESTAMP
DltGatewayConnection * connections
#define DLT_SERVICE_ID_RESET_TO_FACTORY_DEFAULT
static int dlt_daemon_client_send_all_multiple(DltDaemon *daemon, DltDaemonLocal *daemon_local, void *data1, int size1, void *data2, int size2, int verbose)
Sends up to 2 messages to all the clients.
int dlt_daemon_client_send_all(DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
Send out message to all the clients.
int dlt_gateway_forward_control_message(DltGateway *gateway, DltDaemonLocal *daemon_local, DltMessage *msg, char *ecu, int verbose)
int dlt_daemon_control_message_unregister_context(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, char *apid, char *ctid, char *comid, int verbose)
int dlt_daemon_client_send(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, void *storage_header, int storage_header_size, void *data1, int size1, void *data2, int size2, int verbose)
DltReturnValue dlt_user_set_userheader(DltUserHeader *userheader, uint32_t mtype)
void dlt_daemon_control_get_log_info(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
void dlt_daemon_control_set_default_trace_status(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
DltConnection * connections
uint8_t headerbuffer[sizeof(DltStorageHeader)+sizeof(DltStandardHeader)+sizeof(DltStandardHeaderExtra)+sizeof(DltExtendedHeader)]
int dlt_daemon_socket_send(int sock, void *data1, int size1, void *data2, int size2, char serialheader)
int enforceContextLLAndTS
DltDaemonApplication * dlt_daemon_application_find(DltDaemon *daemon, char *apid, int verbose)
#define DLT_DAEMON_INJECTION_MIN
#define DLT_SERVICE_ID_TIMEZONE
#define DLT_DAEMON_SEND_TO_ALL
DltStandardHeaderExtra headerextra
DltConnection * dlt_connection_get_next(DltConnection *current, int type_mask)
Get the next connection filtered with a type mask.
int dlt_daemon_process_sixty_s_timer(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *receiver, int verbose)
#define DLT_DAEMON_CTRL_APID
#define DLT_DAEMON_INJECTION_MAX
unsigned int overflow_counter
int dlt_daemon_process_systemd_timer(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *receiver, int verbose)
int dlt_daemon_control_message_connection_info(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, uint8_t state, char *comid, int verbose)
void dlt_print_id(char *text, const char *id)
char device_mount_point[DLT_MOUNT_PATH_MAX]
#define DLT_SERVICE_ID_PASSIVE_NODE_CONNECT
DltStandardHeader * standardheader
int dlt_daemon_user_send_log_level(DltDaemon *daemon, DltDaemonContext *context, int verbose)
DltReturnValue dlt_message_free(DltMessage *msg, int verbose)
int offlineLogstorageMaxDevices
int dlt_connection_send_multiple(DltConnection *con, void *data1, int size1, void *data2, int size2, int sendserialheader)
Send up to two messages through a connection.
#define DLT_SERVICE_ID_SET_ALL_LOG_LEVEL
#define DLT_LOGSTORAGE_SYNC_ON_DEVICE_DISCONNECT
int dlt_buffer_push3(DltBuffer *buf, const unsigned char *data1, unsigned int size1, const unsigned char *data2, unsigned int size2, const unsigned char *data3, unsigned int size3)
#define DLT_SERVICE_ID_GET_DEFAULT_LOG_LEVEL
#define DLT_MESSAGE_BUFFER_OVERFLOW
int dlt_daemon_contexts_save(DltDaemon *daemon, const char *filename, int verbose)
#define DLT_SERVICE_ID_PASSIVE_NODE_CONNECTION_STATUS
void dlt_daemon_control_service_logstorage(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
#define DLT_SERVICE_ID_SET_COM_INTERFACE_STATUS
int dlt_daemon_client_process_control(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
void dlt_daemon_logstorage_update_application_loglevel(DltDaemon *daemon, int dev_num, int verbose)
void dlt_daemon_control_get_software_version(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose)
char * context_description
int dlt_logstorage_device_connected(DltLogStorage *handle, char *mount_point)
#define DLT_SERVICE_ID_SET_MESSAGE_FILTERING
#define DLT_SERVICE_ID_SET_TIMING_PACKETS
static char str[DLT_DAEMON_TEXTBUFSIZE]
#define DLT_DAEMON_TEXTBUFSIZE
#define DLT_SERVICE_ID_GET_SOFTWARE_VERSION
#define DLT_SERVICE_RESPONSE_OK
#define DLT_SERVICE_ID_CONNECTION_INFO
int dlt_daemon_logstorage_sync_cache(DltDaemon *daemon, DltDaemonLocal *daemon_local, char *mnt_point, int verbose)
#define DLT_CON_MASK_CLIENT_MSG_TCP
#define DLT_SERVICE_ID_MESSAGE_BUFFER_OVERFLOW
void dlt_daemon_control_set_timing_packets(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)
int dlt_daemon_control_message_buffer_overflow(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, unsigned int overflow_counter, char *apid, int verbose)
DltDaemonContext * dlt_daemon_context_find(DltDaemon *daemon, char *apid, char *ctid, int verbose)
#define DLT_DAEMON_SEND_FORCE
int dlt_daemon_serial_send(int sock, void *data1, int size1, void *data2, int size2, char serialheader)
char * application_description
void dlt_daemon_control_set_trace_status(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, DltMessage *msg, int verbose)