blob: 5c907690141c8ad12360045889dce103d08cf27b [file] [log] [blame]
// 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<uint32_t>(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