1e656c62eSopenharmony_ci/*
2e656c62eSopenharmony_ci * Copyright (C) 2022 Huawei Technologies Co., Ltd.
3e656c62eSopenharmony_ci * Licensed under the Mulan PSL v2.
4e656c62eSopenharmony_ci * You can use this software according to the terms and conditions of the Mulan PSL v2.
5e656c62eSopenharmony_ci * You may obtain a copy of Mulan PSL v2 at:
6e656c62eSopenharmony_ci *     http://license.coscl.org.cn/MulanPSL2
7e656c62eSopenharmony_ci * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8e656c62eSopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9e656c62eSopenharmony_ci * PURPOSE.
10e656c62eSopenharmony_ci * See the Mulan PSL v2 for more details.
11e656c62eSopenharmony_ci */
12e656c62eSopenharmony_ci#include <stdbool.h>
13e656c62eSopenharmony_ci#include <hilog/log_c.h>
14e656c62eSopenharmony_ci#include <securec.h>
15e656c62eSopenharmony_ci#include "tee_log.h"
16e656c62eSopenharmony_ci#include "tlogcat.h"
17e656c62eSopenharmony_ci#include "proc_tag.h"
18e656c62eSopenharmony_ci
19e656c62eSopenharmony_ci#ifdef LOG_TAG
20e656c62eSopenharmony_ci#undef LOG_TAG
21e656c62eSopenharmony_ci#endif
22e656c62eSopenharmony_ci#define LOG_TAG "tlogcat"
23e656c62eSopenharmony_ci
24e656c62eSopenharmony_ci#ifdef LOG_DOMAIN
25e656c62eSopenharmony_ci#undef LOG_DOMAIN
26e656c62eSopenharmony_ci#endif
27e656c62eSopenharmony_ci#define LOG_DOMAIN 0xD002F00
28e656c62eSopenharmony_ci
29e656c62eSopenharmony_cistatic char g_logItemBuffer[LOG_ITEM_MAX_LEN];
30e656c62eSopenharmony_ci
31e656c62eSopenharmony_civoid OpenTeeLog(void)
32e656c62eSopenharmony_ci{
33e656c62eSopenharmony_ci}
34e656c62eSopenharmony_ci
35e656c62eSopenharmony_civoid CloseTeeLog(void)
36e656c62eSopenharmony_ci{
37e656c62eSopenharmony_ci}
38e656c62eSopenharmony_ci
39e656c62eSopenharmony_cistatic void TeeHilogPrint(const struct LogItem *logItem, const char *logItemBuffer, bool isTa)
40e656c62eSopenharmony_ci{
41e656c62eSopenharmony_ci    uint8_t logLevel = logItem->logLevel;
42e656c62eSopenharmony_ci    uint32_t hiLogLevel[TOTAL_LEVEL_NUMS] = {LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_DEBUG};
43e656c62eSopenharmony_ci    const char *logTag = LOG_TEEOS_TAG;
44e656c62eSopenharmony_ci
45e656c62eSopenharmony_ci    JudgeLogTag(logItem, isTa, &logTag);
46e656c62eSopenharmony_ci
47e656c62eSopenharmony_ci    if (logLevel < TOTAL_LEVEL_NUMS) {
48e656c62eSopenharmony_ci        logLevel = hiLogLevel[logLevel];
49e656c62eSopenharmony_ci    } else {
50e656c62eSopenharmony_ci        logLevel = LOG_INFO;
51e656c62eSopenharmony_ci    }
52e656c62eSopenharmony_ci
53e656c62eSopenharmony_ci    (void)HiLogPrint(LOG_CORE, logLevel, LOG_DOMAIN, logTag, "index: %{public}u: %{public}s",
54e656c62eSopenharmony_ci        logItem->serialNo, logItemBuffer);
55e656c62eSopenharmony_ci}
56e656c62eSopenharmony_ci
57e656c62eSopenharmony_civoid LogWriteSysLog(const struct LogItem *logItem, bool isTa)
58e656c62eSopenharmony_ci{
59e656c62eSopenharmony_ci    if (logItem == NULL || logItem->logRealLen <= 0) {
60e656c62eSopenharmony_ci        return;
61e656c62eSopenharmony_ci    }
62e656c62eSopenharmony_ci    if (memcpy_s(g_logItemBuffer, LOG_ITEM_MAX_LEN, logItem->logBuffer, logItem->logRealLen) == EOK) {
63e656c62eSopenharmony_ci        g_logItemBuffer[logItem->logRealLen - 1] = '\0';
64e656c62eSopenharmony_ci        TeeHilogPrint(logItem, (const char*)g_logItemBuffer, isTa);
65e656c62eSopenharmony_ci    }
66e656c62eSopenharmony_ci}