13d0407baSopenharmony_ci/*
23d0407baSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
33d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43d0407baSopenharmony_ci * you may not use this file except in compliance with the License.
53d0407baSopenharmony_ci * You may obtain a copy of the License at
63d0407baSopenharmony_ci *
73d0407baSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
83d0407baSopenharmony_ci *
93d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123d0407baSopenharmony_ci * See the License for the specific language governing permissions and
133d0407baSopenharmony_ci * limitations under the License.
143d0407baSopenharmony_ci */
153d0407baSopenharmony_ci
163d0407baSopenharmony_ci#ifndef DISP_COMMON_H
173d0407baSopenharmony_ci#define DISP_COMMON_H
183d0407baSopenharmony_ci#include <string.h>
193d0407baSopenharmony_ci#include <stdint.h>
203d0407baSopenharmony_ci#include "hilog/log.h"
213d0407baSopenharmony_ci#include "stdio.h"
223d0407baSopenharmony_ci#ifdef HDF_LOG_TAG
233d0407baSopenharmony_ci#undef HDF_LOG_TAG
243d0407baSopenharmony_ci#endif
253d0407baSopenharmony_ci
263d0407baSopenharmony_ci#if defined(__cplusplus)
273d0407baSopenharmony_ciextern "C" {
283d0407baSopenharmony_ci#endif
293d0407baSopenharmony_ci
303d0407baSopenharmony_ci#undef LOG_TAG
313d0407baSopenharmony_ci#undef LOG_DOMAIN
323d0407baSopenharmony_ci#define LOG_TAG "DISP"
333d0407baSopenharmony_ci#define LOG_DOMAIN 0xD001400
343d0407baSopenharmony_ci
353d0407baSopenharmony_ci#ifndef DISPLAY_UNUSED
363d0407baSopenharmony_ci#define DISPLAY_UNUSED(x) (void)(x)
373d0407baSopenharmony_ci#endif
383d0407baSopenharmony_ci
393d0407baSopenharmony_ci#define FILENAME (strrchr(__FILE__, '/') ? (strrchr(__FILE__, '/') + 1) : __FILE__)
403d0407baSopenharmony_ci
413d0407baSopenharmony_ci#ifndef DISPLAY_DEBUGLOG_SWITCH
423d0407baSopenharmony_ci#define DISPLAY_DEBUGLOG_SWITCH 0
433d0407baSopenharmony_ci#endif
443d0407baSopenharmony_ci#ifndef DISPLAY_DEBUGLOG
453d0407baSopenharmony_ci#define DISPLAY_DEBUGLOG(format, ...)                                                                                  \
463d0407baSopenharmony_ci    do {                                                                                                               \
473d0407baSopenharmony_ci        if (DISPLAY_DEBUGLOG_SWITCH) {                                                                                 \
483d0407baSopenharmony_ci            HILOG_DEBUG(LOG_CORE, "[%{public}s@%{public}s:%{public}d] " format "\n", __FUNCTION__, FILENAME, __LINE__, \
493d0407baSopenharmony_ci                        ##__VA_ARGS__);                                                                                \
503d0407baSopenharmony_ci        }                                                                                                              \
513d0407baSopenharmony_ci    } while (0)
523d0407baSopenharmony_ci#endif
533d0407baSopenharmony_ci
543d0407baSopenharmony_ci#ifndef DISPLAY_LOGI
553d0407baSopenharmony_ci#define DISPLAY_LOGI(format, ...)                                                                                      \
563d0407baSopenharmony_ci    do {                                                                                                               \
573d0407baSopenharmony_ci        HILOG_INFO(LOG_CORE, "[%{public}s@%{public}s:%{public}d] " format "\n", __FUNCTION__, FILENAME, __LINE__,      \
583d0407baSopenharmony_ci                   ##__VA_ARGS__);                                                                                     \
593d0407baSopenharmony_ci    } while (0)
603d0407baSopenharmony_ci#endif
613d0407baSopenharmony_ci
623d0407baSopenharmony_ci#ifndef DISPLAY_LOGW
633d0407baSopenharmony_ci#define DISPLAY_LOGW(format, ...)                                                                                      \
643d0407baSopenharmony_ci    do {                                                                                                               \
653d0407baSopenharmony_ci        HILOG_WARN(LOG_CORE, "[%{public}s@%{public}s:%{public}d] " format "\n", __FUNCTION__, FILENAME, __LINE__,      \
663d0407baSopenharmony_ci                   ##__VA_ARGS__);                                                                                     \
673d0407baSopenharmony_ci    } while (0)
683d0407baSopenharmony_ci#endif
693d0407baSopenharmony_ci
703d0407baSopenharmony_ci#ifndef DISPLAY_LOGE
713d0407baSopenharmony_ci#define DISPLAY_LOGE(format, ...)                                                                                      \
723d0407baSopenharmony_ci    do {                                                                                                               \
733d0407baSopenharmony_ci        HILOG_ERROR(LOG_CORE,                                                                                          \
743d0407baSopenharmony_ci                    "\033[0;32;31m"                                                                                    \
753d0407baSopenharmony_ci                    "[%{public}s@%{public}s:%{public}d] " format "\033[m"                                              \
763d0407baSopenharmony_ci                    "\n",                                                                                              \
773d0407baSopenharmony_ci                    __FUNCTION__, FILENAME, __LINE__, ##__VA_ARGS__);                                                  \
783d0407baSopenharmony_ci    } while (0)
793d0407baSopenharmony_ci#endif
803d0407baSopenharmony_ci
813d0407baSopenharmony_ci#ifndef CHECK_NULLPOINTER_RETURN_VALUE
823d0407baSopenharmony_ci#define CHECK_NULLPOINTER_RETURN_VALUE(pointer, ret)                                                                   \
833d0407baSopenharmony_ci    do {                                                                                                               \
843d0407baSopenharmony_ci        if ((pointer) == NULL) {                                                                                       \
853d0407baSopenharmony_ci            DISPLAY_LOGE("pointer is null and return ret\n");                                                          \
863d0407baSopenharmony_ci            return (ret);                                                                                              \
873d0407baSopenharmony_ci        }                                                                                                              \
883d0407baSopenharmony_ci    } while (0)
893d0407baSopenharmony_ci#endif
903d0407baSopenharmony_ci
913d0407baSopenharmony_ci#ifndef CHECK_NULLPOINTER_RETURN
923d0407baSopenharmony_ci#define CHECK_NULLPOINTER_RETURN(pointer)                                                                              \
933d0407baSopenharmony_ci    do {                                                                                                               \
943d0407baSopenharmony_ci        if ((pointer) == NULL) {                                                                                       \
953d0407baSopenharmony_ci            DISPLAY_LOGE("pointer is null and return\n");                                                              \
963d0407baSopenharmony_ci            return;                                                                                                    \
973d0407baSopenharmony_ci        }                                                                                                              \
983d0407baSopenharmony_ci    } while (0)
993d0407baSopenharmony_ci#endif
1003d0407baSopenharmony_ci
1013d0407baSopenharmony_ci#ifndef DISPLAY_CHK_RETURN
1023d0407baSopenharmony_ci#define DISPLAY_CHK_RETURN(val, ret, ...)                                                                              \
1033d0407baSopenharmony_ci    do {                                                                                                               \
1043d0407baSopenharmony_ci        if (val) {                                                                                                     \
1053d0407baSopenharmony_ci            __VA_ARGS__;                                                                                               \
1063d0407baSopenharmony_ci            return (ret);                                                                                              \
1073d0407baSopenharmony_ci        }                                                                                                              \
1083d0407baSopenharmony_ci    } while (0)
1093d0407baSopenharmony_ci#endif
1103d0407baSopenharmony_ci
1113d0407baSopenharmony_ci#ifndef DISPLAY_CHK_RETURN_NOT_VALUE
1123d0407baSopenharmony_ci#define DISPLAY_CHK_RETURN_NOT_VALUE(val, ret, ...)                                                                    \
1133d0407baSopenharmony_ci    do {                                                                                                               \
1143d0407baSopenharmony_ci        if (val) {                                                                                                     \
1153d0407baSopenharmony_ci            __VA_ARGS__;                                                                                               \
1163d0407baSopenharmony_ci            return;                                                                                                    \
1173d0407baSopenharmony_ci        }                                                                                                              \
1183d0407baSopenharmony_ci    } while (0)
1193d0407baSopenharmony_ci#endif
1203d0407baSopenharmony_ci
1213d0407baSopenharmony_ci#ifdef __cplusplus
1223d0407baSopenharmony_ci}
1233d0407baSopenharmony_ci#endif
1243d0407baSopenharmony_ci
1253d0407baSopenharmony_ci#endif /* DISP_COMMON_H */
126