Mbed Development branch for MeasrueWare

Revision:
5:0728bde67bdb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/admw_log.h	Wed Jun 05 05:39:15 2019 +0000
@@ -0,0 +1,129 @@
+/*
+Copyright 2019 (c) Analog Devices, Inc.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+  - Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+  - Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+  - Neither the name of Analog Devices, Inc. nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+  - The use of this software may or may not infringe the patent rights
+    of one or more patent holders. This license does not release you
+    from the requirement that you obtain separate licenses from these
+    patent holders to use this software.
+  - Use of the software either in source or binary form, must be run
+    on or directly connected to an Analog Devices Inc. component.
+
+THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*!
+ ******************************************************************************
+ * @file:   admw_log.h
+ * @brief:  ADMW OS-dependent wrapper layer for log functions
+ *-----------------------------------------------------------------------------
+ */
+
+#ifndef __ADMW_LOG_H__
+#define __ADMW_LOG_H__
+
+#include "inc/admw_types.h"
+
+/*! @ingroup ADMW_Host */
+
+/*! @addtogroup ADMW_Log ADMW Host Logging functions
+ *  @{
+ */
+
+/*! Macro function for logging an error message */
+#define ADMW_LOG_ERROR(...)                                        \
+    admw_Log(ADMW_LOG_LEVEL_ERROR, "[ERROR] " __VA_ARGS__)
+/*! Macro function for logging a warning message */
+#define ADMW_LOG_WARN(...)  \
+    admw_Log(ADMW_LOG_LEVEL_WARN,  "[WARN] "  __VA_ARGS__)
+/*! Macro function for logging an information message */
+#define ADMW_LOG_INFO(...)  \
+    admw_Log(ADMW_LOG_LEVEL_INFO,  "[INFO] "  __VA_ARGS__)
+/*! Macro function for logging a debug message */
+#define ADMW_LOG_DEBUG(...) \
+    admw_Log(ADMW_LOG_LEVEL_DEBUG, "[DEBUG] " __VA_ARGS__)
+
+/*!
+ * Log message priority levels
+ */
+typedef enum
+{
+    ADMW_LOG_LEVEL_ERROR = 0, /*!< Error message priority */
+    ADMW_LOG_LEVEL_WARN,      /*!< Warning message priority */
+    ADMW_LOG_LEVEL_INFO,      /*!< Information message priority */
+    ADMW_LOG_LEVEL_DEBUG,     /*!< Debug message priority */
+} ADMW_LOG_LEVEL;
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*!
+ * @brief Initialise the Log interface and allocate resources.
+ *
+ * @return Status
+ *         - #ADMW_SUCCESS Call completed successfully.
+ *         - #ADMW_NO_MEM  Failed to allocate memory for device context.
+ */
+ADMW_RESULT admw_LogOpen(
+    ADMW_PLATFORM_LOG_CONFIG *pConfig);
+
+/*!
+ * @brief Close the Log interface and free resources.
+ */
+void admw_LogClose(void);
+
+/*!
+ * @brief Set the minimum priority level for the log messages.
+ *
+ * @param[in]  maxLevel priority level
+ *
+ * @details Sets the log priority level.  Messages with priority lower
+            that this level will not be passed to the log interface.
+ */
+void admw_LogLevel(
+    ADMW_LOG_LEVEL maxLevel);
+
+/*!
+ * @brief Print a log message to the platform log interface.
+ *
+ * @param[in] level  Log message priority level
+ * @param[in] format Format string and variable argument list, if any
+ */
+void admw_Log(
+    ADMW_LOG_LEVEL   level,
+    const char          * format,
+    ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+/*!
+ * @}
+ */
+
+#endif /* __ADMW_LOG_H__ */