// 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/platform_nanoapp.h" #include "chre/util/system/napp_permissions.h" #include "chre_api/chre/version.h" namespace chre { PlatformNanoapp::~PlatformNanoapp() {} bool PlatformNanoapp::start() { return app_info_->entryPoints.start(); } void PlatformNanoapp::handleEvent(uint32_t SenderInstanceId, uint16_t eventType, const void* eventData) { app_info_->entryPoints.handleEvent(SenderInstanceId, eventType, eventData); } void PlatformNanoapp::end() { app_info_->entryPoints.end(); } uint64_t PlatformNanoapp::getAppId() const { return (app_info_ == nullptr) ? 0 : app_info_->appId; } uint32_t PlatformNanoapp::getAppVersion() const { return app_info_->appVersion; } uint32_t PlatformNanoapp::getTargetApiVersion() const { return CHRE_API_VERSION; } const char* PlatformNanoapp::getAppName() const { return (app_info_ != nullptr) ? app_info_->name : "Unknown"; } bool PlatformNanoapp::supportsAppPermissions() const { return (app_info_ != nullptr) ? (app_info_->structMinorVersion >= CHRE_NSL_NANOAPP_INFO_STRUCT_MINOR_VERSION) : false; } uint32_t PlatformNanoapp::getAppPermissions() const { return (supportsAppPermissions()) ? app_info_->appPermissions : static_cast(chre::NanoappPermissions::CHRE_PERMS_NONE); } bool PlatformNanoapp::isSystemNanoapp() const { return (app_info_ != nullptr && app_info_->isSystemNanoapp); } void PlatformNanoapp::logStateToBuffer(DebugDumpWrapper& debugDump) const { if (!app_info_) { return; } debugDump.print("%s: %s", app_info_->name, app_info_->vendor); } void PlatformNanoappBase::loadStatic( const struct chreNslNanoappInfo* app_info) { app_info_ = app_info; } } // namespace chre