1 /*
2  * Copyright (c) 2018 - 2020 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/kernel.h>
8 #include <zephyr/logging/log_core.h>
9 #include <stdarg.h>
10 
11 #include <openthread/platform/logging.h>
12 
13 #include "platform-zephyr.h"
14 
15 #if defined(CONFIG_LOG)
16 /* Convert OT log level to zephyr log level. */
log_translate(otLogLevel aLogLevel)17 static inline int log_translate(otLogLevel aLogLevel)
18 {
19 	switch (aLogLevel) {
20 	case OT_LOG_LEVEL_NONE:
21 	case OT_LOG_LEVEL_CRIT:
22 		return LOG_LEVEL_ERR;
23 	case OT_LOG_LEVEL_WARN:
24 		return LOG_LEVEL_WRN;
25 	case OT_LOG_LEVEL_NOTE:
26 	case OT_LOG_LEVEL_INFO:
27 		return LOG_LEVEL_INF;
28 	case OT_LOG_LEVEL_DEBG:
29 		return LOG_LEVEL_DBG;
30 	default:
31 		break;
32 	}
33 
34 	return -1;
35 }
36 #endif
37 
otPlatLog(otLogLevel aLogLevel,otLogRegion aLogRegion,const char * aFormat,...)38 void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...)
39 {
40 	ARG_UNUSED(aLogRegion);
41 
42 #if defined(CONFIG_LOG)
43 	int level = log_translate(aLogLevel);
44 	va_list param_list;
45 
46 	if (level < 0 || level > CONFIG_OPENTHREAD_PLATFORM_LOG_LEVEL) {
47 		return;
48 	}
49 
50 	va_start(param_list, aFormat);
51 	log_generic(level, aFormat, param_list);
52 	va_end(param_list);
53 #else
54 	ARG_UNUSED(aLogLevel);
55 	ARG_UNUSED(aFormat);
56 #endif
57 
58 }
59