// Copyright 2023 The Pigweed 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 // // https://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. #include "chre/platform/log.h" #include "chre/util/macros.h" #include "chre_api/chre/re.h" #include "pw_log/log.h" #include "pw_string/format.h" namespace { int ToPigweedLogLevel(enum chreLogLevel level) { switch (level) { case CHRE_LOG_ERROR: return PW_LOG_LEVEL_ERROR; case CHRE_LOG_WARN: return PW_LOG_LEVEL_WARN; case CHRE_LOG_INFO: return PW_LOG_LEVEL_INFO; case CHRE_LOG_DEBUG: return PW_LOG_LEVEL_DEBUG; } } } // namespace DLL_EXPORT void chreLog(enum chreLogLevel level, const char* format_string, ...) { char log[512]; va_list args; va_start(args, format_string); pw::StatusWithSize status = pw::string::Format(log, format_string, args); PW_ASSERT(status.ok()); va_end(args); PW_LOG( ToPigweedLogLevel(level), PW_LOG_LEVEL, "CHRE", PW_LOG_FLAGS, "%s", log); }