summaryrefslogtreecommitdiffstats
path: root/libsensors/mlsdk/platform/linux/log_linux.c
diff options
context:
space:
mode:
Diffstat (limited to 'libsensors/mlsdk/platform/linux/log_linux.c')
-rw-r--r--libsensors/mlsdk/platform/linux/log_linux.c114
1 files changed, 114 insertions, 0 deletions
diff --git a/libsensors/mlsdk/platform/linux/log_linux.c b/libsensors/mlsdk/platform/linux/log_linux.c
new file mode 100644
index 0000000..7f7de0e
--- /dev/null
+++ b/libsensors/mlsdk/platform/linux/log_linux.c
@@ -0,0 +1,114 @@
+/*
+ $License:
+ Copyright 2011 InvenSense, Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ $
+ */
+/******************************************************************************
+ * $Id: log_linux.c 5629 2011-06-11 03:13:08Z mcaramello $
+ ******************************************************************************/
+
+/**
+ * @defgroup MPL_LOG
+ * @brief Logging facility for the MPL
+ *
+ * @{
+ * @file log.c
+ * @brief Core logging facility functions.
+ *
+ *
+**/
+
+#include <stdio.h>
+#include <string.h>
+#include "log.h"
+#include "mltypes.h"
+
+#define LOG_BUFFER_SIZE (256)
+
+#ifdef WIN32
+#define snprintf _snprintf
+#define vsnprintf _vsnprintf
+#endif
+
+int _MLPrintLog (int priority, const char* tag, const char* fmt, ...)
+{
+ va_list ap;
+ int result;
+
+ va_start(ap, fmt);
+ result = _MLPrintVaLog(priority,tag,fmt,ap);
+ va_end(ap);
+
+ return result;
+}
+
+int _MLPrintVaLog(int priority, const char* tag, const char* fmt, va_list args)
+{
+ int result;
+ char buf[LOG_BUFFER_SIZE];
+ char new_fmt[LOG_BUFFER_SIZE];
+ char priority_char;
+
+ if (NULL == fmt) {
+ fmt = "";
+ }
+
+ switch (priority) {
+ case MPL_LOG_UNKNOWN:
+ priority_char = 'U';
+ break;
+ case MPL_LOG_VERBOSE:
+ priority_char = 'V';
+ break;
+ case MPL_LOG_DEBUG:
+ priority_char = 'D';
+ break;
+ case MPL_LOG_INFO:
+ priority_char = 'I';
+ break;
+ case MPL_LOG_WARN:
+ priority_char = 'W';
+ break;
+ case MPL_LOG_ERROR:
+ priority_char = 'E';
+ break;
+ case MPL_LOG_SILENT:
+ priority_char = 'S';
+ break;
+ case MPL_LOG_DEFAULT:
+ default:
+ priority_char = 'D';
+ break;
+ };
+
+ result = snprintf(new_fmt, sizeof(new_fmt), "%c/%s:%s",
+ priority_char, tag, fmt);
+ if (result <= 0) {
+ return INV_ERROR_LOG_MEMORY_ERROR;
+ }
+ result = vsnprintf(buf,sizeof(buf),new_fmt, args);
+ if (result <= 0) {
+ return INV_ERROR_LOG_OUTPUT_ERROR;
+ }
+
+ result = _MLWriteLog(buf, strlen(buf));
+ return INV_SUCCESS;
+}
+
+/**
+ * @}
+**/
+
+