| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*
- * Copyright (c) 2021 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.
- */
- #include <platform/CHIPDeviceLayer.h>
- #include <platform/PlatformManager.h>
- #include <app/clusters/diagnostic-logs-server/diagnostic-logs-server.h>
- #include <app/server/Server.h>
- #include <app/util/util.h>
- #include <credentials/DeviceAttestationCredsProvider.h>
- #include <credentials/examples/DeviceAttestationCredsExample.h>
- #include <lib/core/CHIPError.h>
- #include <lib/support/CHIPArgParser.hpp>
- #include <lib/support/CHIPMem.h>
- #include <lib/support/logging/CHIPLogging.h>
- #include <fstream>
- #include <iostream>
- #include <unistd.h>
- using chip::BitFlags;
- using chip::ArgParser::HelpOptions;
- using chip::ArgParser::OptionDef;
- using chip::ArgParser::OptionSet;
- using chip::ArgParser::PrintArgError;
- using chip::Messaging::ExchangeManager;
- bool HandleOptions(const char * aProgram, OptionSet * aOptions, int aIdentifier, const char * aName, const char * aValue)
- {
- // No option yet
- return true;
- }
- OptionDef cmdLineOptionsDef[] = {
- {},
- };
- OptionSet cmdLineOptions = { HandleOptions, cmdLineOptionsDef, "PROGRAM OPTIONS" };
- HelpOptions helpOptions("log-source-app", "Usage: log-source-app [options]", "1.0");
- OptionSet * allOptions[] = { &cmdLineOptions, &helpOptions, nullptr };
- static constexpr size_t kMaxLogMessageLength = 512;
- DiagnosticLogsCommandHandler & GetLogProvider()
- {
- static DiagnosticLogsCommandHandler LogProvider;
- return LogProvider;
- }
- void ENFORCE_FORMAT(3, 0) LoggingCallback(const char * module, uint8_t category, const char * msg, va_list args)
- {
- // Print the log on console for debug
- va_list argsCopy;
- va_copy(argsCopy, args);
- chip::Logging::Platform::LogV(module, category, msg, argsCopy);
- // Feed the log entry into the internal circular buffer
- char buffer1[kMaxLogMessageLength];
- char buffer2[kMaxLogMessageLength];
- int s1 = vsnprintf(buffer1, sizeof(buffer1), msg, args);
- int s2 = snprintf(buffer2, sizeof(buffer2), "%s:%.*s", module, s1, buffer1);
- size_t len = chip::CanCastTo<size_t>(s2) ? static_cast<size_t>(s2) : SIZE_MAX;
- GetLogProvider().PushLog(chip::ByteSpan(reinterpret_cast<uint8_t *>(buffer2), len));
- }
- int main(int argc, char * argv[])
- {
- if (chip::Platform::MemoryInit() != CHIP_NO_ERROR)
- {
- fprintf(stderr, "FAILED to initialize memory\n");
- return 1;
- }
- chip::Logging::SetLogRedirectCallback(&LoggingCallback);
- if (chip::DeviceLayer::PlatformMgr().InitChipStack() != CHIP_NO_ERROR)
- {
- fprintf(stderr, "FAILED to initialize chip stack\n");
- return 1;
- }
- if (!chip::ArgParser::ParseArgs(argv[0], argc, argv, allOptions))
- {
- return 1;
- }
- chip::DeviceLayer::ConfigurationMgr().LogDeviceConfig();
- static chip::CommonCaseDeviceServerInitParams initParams;
- (void) initParams.InitializeStaticResourcesBeforeServerInit();
- chip::Server::GetInstance().Init(initParams);
- // Initialize device attestation config
- SetDeviceAttestationCredentialsProvider(chip::Credentials::Examples::GetExampleDACProvider());
- chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(&GetLogProvider());
- chip::DeviceLayer::PlatformMgr().RunEventLoop();
- return 0;
- }
|