Bug 84 - Adding utf8 support to dlt-daemon, dlt-viewer. Modified patch, originally...
[profile/ivi/dlt-daemon.git] / src / lib / dlt_user.c
index c327491..1f43801 100644 (file)
@@ -438,6 +438,10 @@ int dlt_init_common(void)
 
 void dlt_user_atexit_handler(void)
 {
+    if (dlt_user_initialised==0)
+    {
+        return;
+    }
 
        /* Try to resend potential log messages in the user buffer */
        int count = dlt_user_atexit_blow_out_user_buffer();
@@ -1110,7 +1114,7 @@ int dlt_forward_msg(void *msgdata,size_t size)
 
             if(dlt_user_queue_resend() < 0 && dlt_user.dlt_log_handle >= 0)
             {
-               dlt_log(LOG_WARNING, "Failed to queue resending.\n");
+                dlt_log(LOG_WARNING, "dlt_forward_msg: Failed to queue resending.\n");
             }
         }
 
@@ -1764,7 +1768,50 @@ int dlt_user_log_write_string(DltContextData *log, const char *text)
             return -1;
         }
 
-        type_info = DLT_TYPE_INFO_STRG;
+        type_info = DLT_TYPE_INFO_STRG | DLT_SCOD_ASCII;
+
+        memcpy((log->buffer)+log->size,&(type_info),sizeof(uint32_t));
+        log->size += sizeof(uint32_t);
+    }
+
+    arg_size = strlen(text) + 1;
+
+    memcpy((log->buffer)+log->size,&(arg_size),sizeof(uint16_t));
+    log->size += sizeof(uint16_t);
+
+    memcpy((log->buffer)+log->size,text,arg_size);
+    log->size += arg_size;
+
+    log->args_num ++;
+
+    return 0;
+}
+
+int dlt_user_log_write_utf8_string(DltContextData *log, const char *text)
+{
+    uint16_t arg_size;
+    uint32_t type_info;
+
+    if ((log==0) || (text==0))
+    {
+        return -1;
+    }
+
+    arg_size = strlen(text)+1;
+
+    if ((log->size+arg_size+sizeof(uint16_t))>DLT_USER_BUF_MAX_SIZE)
+    {
+        return -1;
+    }
+
+    if (dlt_user.verbose_mode)
+    {
+        if ((log->size+arg_size+sizeof(uint32_t)+sizeof(uint16_t))>DLT_USER_BUF_MAX_SIZE)
+        {
+            return -1;
+        }
+
+        type_info = DLT_TYPE_INFO_STRG | DLT_SCOD_UTF8;
 
         memcpy((log->buffer)+log->size,&(type_info),sizeof(uint32_t));
         log->size += sizeof(uint32_t);
@@ -2962,7 +3009,7 @@ DltReturnValue dlt_user_log_send_log(DltContextData *log, int mtype)
                // Fail silenty if FIFO is not open
             if(dlt_user_queue_resend() < 0 && dlt_user.dlt_log_handle >= 0)
             {
-               dlt_log(LOG_WARNING, "Failed to queue resending.\n");
+                dlt_log(LOG_WARNING, "dlt_user_log_send_log: Failed to queue resending.\n");
             }
         }
 
@@ -3075,7 +3122,7 @@ int dlt_user_log_send_register_application(void)
 
         if(dlt_user_queue_resend() < 0 && dlt_user.dlt_log_handle >= 0)
         {
-               dlt_log(LOG_WARNING, "Failed to queue resending.\n");
+            dlt_log(LOG_WARNING, "dlt_user_log_send_register_application: Failed to queue resending.\n");
         }
     }
 
@@ -3186,7 +3233,7 @@ int dlt_user_log_send_register_context(DltContextData *log)
 
         if(dlt_user_queue_resend() < 0 && dlt_user.dlt_log_handle >= 0)
         {
-               dlt_log(LOG_WARNING, "Failed to queue resending.\n");
+            dlt_log(LOG_WARNING, "dlt_user_log_send_register_context: Failed to queue resending.\n");
         }
     }