Skip to content

Commit

Permalink
Add a log backend, update copyrights
Browse files Browse the repository at this point in the history
  • Loading branch information
andy31415 committed Nov 6, 2024
1 parent 737d723 commit 1586898
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .gn
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [
Expand Down
2 changes: 1 addition & 1 deletion src/backends/assert/public/pw_assert_matter/handler.h
Original file line number Diff line number Diff line change
@@ -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");
Expand Down
Original file line number Diff line number Diff line change
@@ -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");
Expand Down
68 changes: 68 additions & 0 deletions src/backends/log/BUILD.gn
Original file line number Diff line number Diff line change
@@ -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 = [ ]
}
52 changes: 52 additions & 0 deletions src/backends/log/public/pw_log_matter/log_matter.h
Original file line number Diff line number Diff line change
@@ -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 <lib/support/logging/TextOnlyLogging.h>
#include <pw_log/levels.h>

// 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__)
20 changes: 20 additions & 0 deletions src/backends/log/public_overrides/pw_log_backend/log_backend.h
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit 1586898

Please sign in to comment.