From 1586898189176115b3a6ebef437e17b00d5273ee Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 30 Oct 2024 10:40:04 -0400 Subject: [PATCH] Add a log backend, update copyrights --- .gn | 2 +- .../assert/public/pw_assert_matter/handler.h | 2 +- .../pw_assert_backend/check_backend.h | 2 +- src/backends/log/BUILD.gn | 68 +++++++++++++++++++ .../log/public/pw_log_matter/log_matter.h | 52 ++++++++++++++ .../pw_log_backend/log_backend.h | 20 ++++++ 6 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 src/backends/log/BUILD.gn create mode 100644 src/backends/log/public/pw_log_matter/log_matter.h create mode 100644 src/backends/log/public_overrides/pw_log_backend/log_backend.h diff --git a/.gn b/.gn index ee06aad4503e28..466dbf94a7d59d 100644 --- a/.gn +++ b/.gn @@ -36,7 +36,7 @@ default_args = { # Required for pw_unit_test pw_sys_io_BACKEND = "$dir_pw_sys_io_stdio" pw_assert_BACKEND = "//src/backends/assert" - pw_log_BACKEND = "$dir_pw_log_basic" + pw_log_BACKEND = "//src/backends/log" # TODO: Make sure only unit tests link against this pw_build_LINK_DEPS = [ diff --git a/src/backends/assert/public/pw_assert_matter/handler.h b/src/backends/assert/public/pw_assert_matter/handler.h index ffc12c69877f43..efeac9a1c71d4b 100644 --- a/src/backends/assert/public/pw_assert_matter/handler.h +++ b/src/backends/assert/public/pw_assert_matter/handler.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2024 Project CHIP Authors * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/backends/assert/public_overrides/pw_assert_backend/check_backend.h b/src/backends/assert/public_overrides/pw_assert_backend/check_backend.h index c8413b51603c51..d4a5a11d3c49e7 100644 --- a/src/backends/assert/public_overrides/pw_assert_backend/check_backend.h +++ b/src/backends/assert/public_overrides/pw_assert_backend/check_backend.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2024 Project CHIP Authors * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/backends/log/BUILD.gn b/src/backends/log/BUILD.gn new file mode 100644 index 00000000000000..c38ab2884ec487 --- /dev/null +++ b/src/backends/log/BUILD.gn @@ -0,0 +1,68 @@ +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/pigweed.gni") + +import("$dir_pw_build/facade.gni") + +config("public_include_path") { + include_dirs = [ "public" ] + visibility = [ ":*" ] +} + +config("backend_config") { + include_dirs = [ "public_overrides" ] + visibility = [ ":*" ] +} + +pw_facade("handler") { + backend = "${chip_root}/src/backends/log:log.impl" + public_configs = [ ":public_include_path" ] + public_deps = [ "$dir_pw_preprocessor" ] + public = [ "public/pw_log_matter/log_matter.h" ] +} + +pw_source_set("log") { + public_configs = [ + ":backend_config", + ":public_include_path", + ] + public = [ + "public/pw_log_matter/log_matter.h", + ] + public_deps = [ ":handler.facade" ] +} + +# A basic handler backend using pw_sys_io. +pw_source_set("log.impl") { + # Turn off GN check since this target intentionally leaves out deps to avoid + # circular dependencies. + check_includes = false + + configs = [ + "$dir_pw_string:public_include_path", + "$dir_pw_result:public_include_path", + ] + + deps = [ + ":handler.facade", + "$dir_pw_log:config", + "$dir_pw_preprocessor", + "$dir_pw_string:builder", + "${chip_root}/src/lib/support", + ] + sources = [ ] +} diff --git a/src/backends/log/public/pw_log_matter/log_matter.h b/src/backends/log/public/pw_log_matter/log_matter.h new file mode 100644 index 00000000000000..38b492c1f6ff95 --- /dev/null +++ b/src/backends/log/public/pw_log_matter/log_matter.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include "lib/support/logging/Constants.h" +#include +#include + +// Pigweed defines more granular logging than CHIP. +// we match the following: +// - Detail == DEBUG +// - Progress == INFO +// - ERROR = WARN, ERROR, CRITICAL + +constexpr chip::Logging::LogCategory PwLogLevelToChipLogCategory(int level) +{ + switch (level) + { + case PW_LOG_LEVEL_DEBUG: + return chip::Logging::kLogCategory_Detail; + case PW_LOG_LEVEL_INFO: + return chip::Logging::kLogCategory_Progress; + default: + return chip::Logging::kLogCategory_Error; + } +} + +#define PW_LOG_DEBUG(...) ChipLogDetail(NotSpecified, __VA_ARGS__) +#define PW_LOG_INFO(...) ChipLogProgress(NotSpecified, __VA_ARGS__) +#define PW_LOG_WARN(...) ChipLogError(NotSpecified, __VA_ARGS__) +#define PW_LOG_ERROR(...) ChipLogError(NotSpecified, __VA_ARGS__) +#define PW_LOG_CRITICAL(...) ChipLogError(NotSpecified, __VA_ARGS__) + +// Log a message with many attributes included. +// +// This is the main macro that functions not included above will use +#define PW_HANDLE_LOG(level, module, flags, message, ...) \ + ChipInternalLogImpl(Application, PwLogLevelToChipLogCategory(level), message, __VA_ARGS__) diff --git a/src/backends/log/public_overrides/pw_log_backend/log_backend.h b/src/backends/log/public_overrides/pw_log_backend/log_backend.h new file mode 100644 index 00000000000000..81e6a456663d53 --- /dev/null +++ b/src/backends/log/public_overrides/pw_log_backend/log_backend.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include "pw_log_matter/log_matter.h" +