blob: 69bafc9c6d690e9a7c6c6371ce53c704163ede0b [file] [log] [blame]
Marcin Niestroja418ad42022-06-14 19:17:28 +02001/*
2 * Copyright (c) 2018 Nordic Semiconductor ASA
3 * Copyright (c) 2022 Marcin Niestroj
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#include <zephyr/logging/log.h>
9LOG_MODULE_REGISTER(mbedtls, CONFIG_MBEDTLS_LOG_LEVEL);
10
11#include "zephyr_mbedtls_priv.h"
12
13void zephyr_mbedtls_debug(void *ctx, int level, const char *file, int line, const char *str)
14{
Marcin Niestroje4c11fd2022-06-15 12:39:17 +020015 const char *p, *basename = file;
Marcin Niestrojfa5937a2022-06-15 00:22:03 +020016 int str_len;
Marcin Niestroja418ad42022-06-14 19:17:28 +020017
18 ARG_UNUSED(ctx);
19
20 if (!file || !str) {
21 return;
22 }
23
24 /* Extract basename from file */
Marcin Niestroje4c11fd2022-06-15 12:39:17 +020025 if (IS_ENABLED(CONFIG_MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_RUNTIME)) {
26 for (p = basename = file; *p != '\0'; p++) {
27 if (*p == '/' || *p == '\\') {
28 basename = p + 1;
29 }
Marcin Niestroja418ad42022-06-14 19:17:28 +020030 }
31 }
32
Marcin Niestrojfa5937a2022-06-15 00:22:03 +020033 str_len = strlen(str);
34
35 if (IS_ENABLED(CONFIG_MBEDTLS_DEBUG_STRIP_NEWLINE)) {
36 /* Remove newline only when it exists */
37 if (str_len > 0 && str[str_len - 1] == '\n') {
38 str_len--;
39 }
40 }
41
Marcin Niestrojaf37c092022-06-15 00:32:24 +020042 switch (level) {
43 case 0:
44 case 1:
Marcin Niestrojfa5937a2022-06-15 00:22:03 +020045 LOG_ERR("%s:%04d: %.*s", basename, line, str_len, str);
Marcin Niestrojaf37c092022-06-15 00:32:24 +020046 break;
47 case 2:
Marcin Niestrojfa5937a2022-06-15 00:22:03 +020048 LOG_WRN("%s:%04d: %.*s", basename, line, str_len, str);
Marcin Niestrojaf37c092022-06-15 00:32:24 +020049 break;
50 case 3:
Marcin Niestrojfa5937a2022-06-15 00:22:03 +020051 LOG_INF("%s:%04d: %.*s", basename, line, str_len, str);
Marcin Niestrojaf37c092022-06-15 00:32:24 +020052 break;
53 default:
Marcin Niestrojfa5937a2022-06-15 00:22:03 +020054 LOG_DBG("%s:%04d: %.*s", basename, line, str_len, str);
Marcin Niestrojaf37c092022-06-15 00:32:24 +020055 break;
56 }
Marcin Niestroja418ad42022-06-14 19:17:28 +020057}