1*61c4878aSAndroid Build Coastguard Worker // Copyright 2023 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker //
3*61c4878aSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker // use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker // the License at
6*61c4878aSAndroid Build Coastguard Worker //
7*61c4878aSAndroid Build Coastguard Worker // https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker //
9*61c4878aSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker // License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker // the License.
14*61c4878aSAndroid Build Coastguard Worker #include "chre/platform/platform_nanoapp.h"
15*61c4878aSAndroid Build Coastguard Worker
16*61c4878aSAndroid Build Coastguard Worker #include "chre/util/system/napp_permissions.h"
17*61c4878aSAndroid Build Coastguard Worker #include "chre_api/chre/version.h"
18*61c4878aSAndroid Build Coastguard Worker
19*61c4878aSAndroid Build Coastguard Worker namespace chre {
20*61c4878aSAndroid Build Coastguard Worker
~PlatformNanoapp()21*61c4878aSAndroid Build Coastguard Worker PlatformNanoapp::~PlatformNanoapp() {}
22*61c4878aSAndroid Build Coastguard Worker
start()23*61c4878aSAndroid Build Coastguard Worker bool PlatformNanoapp::start() { return app_info_->entryPoints.start(); }
24*61c4878aSAndroid Build Coastguard Worker
handleEvent(uint32_t SenderInstanceId,uint16_t eventType,const void * eventData)25*61c4878aSAndroid Build Coastguard Worker void PlatformNanoapp::handleEvent(uint32_t SenderInstanceId,
26*61c4878aSAndroid Build Coastguard Worker uint16_t eventType,
27*61c4878aSAndroid Build Coastguard Worker const void* eventData) {
28*61c4878aSAndroid Build Coastguard Worker app_info_->entryPoints.handleEvent(SenderInstanceId, eventType, eventData);
29*61c4878aSAndroid Build Coastguard Worker }
30*61c4878aSAndroid Build Coastguard Worker
end()31*61c4878aSAndroid Build Coastguard Worker void PlatformNanoapp::end() { app_info_->entryPoints.end(); }
32*61c4878aSAndroid Build Coastguard Worker
getAppId() const33*61c4878aSAndroid Build Coastguard Worker uint64_t PlatformNanoapp::getAppId() const {
34*61c4878aSAndroid Build Coastguard Worker return (app_info_ == nullptr) ? 0 : app_info_->appId;
35*61c4878aSAndroid Build Coastguard Worker }
36*61c4878aSAndroid Build Coastguard Worker
getAppVersion() const37*61c4878aSAndroid Build Coastguard Worker uint32_t PlatformNanoapp::getAppVersion() const {
38*61c4878aSAndroid Build Coastguard Worker return app_info_->appVersion;
39*61c4878aSAndroid Build Coastguard Worker }
40*61c4878aSAndroid Build Coastguard Worker
getTargetApiVersion() const41*61c4878aSAndroid Build Coastguard Worker uint32_t PlatformNanoapp::getTargetApiVersion() const {
42*61c4878aSAndroid Build Coastguard Worker return CHRE_API_VERSION;
43*61c4878aSAndroid Build Coastguard Worker }
44*61c4878aSAndroid Build Coastguard Worker
getAppName() const45*61c4878aSAndroid Build Coastguard Worker const char* PlatformNanoapp::getAppName() const {
46*61c4878aSAndroid Build Coastguard Worker return (app_info_ != nullptr) ? app_info_->name : "Unknown";
47*61c4878aSAndroid Build Coastguard Worker }
48*61c4878aSAndroid Build Coastguard Worker
supportsAppPermissions() const49*61c4878aSAndroid Build Coastguard Worker bool PlatformNanoapp::supportsAppPermissions() const {
50*61c4878aSAndroid Build Coastguard Worker return (app_info_ != nullptr) ? (app_info_->structMinorVersion >=
51*61c4878aSAndroid Build Coastguard Worker CHRE_NSL_NANOAPP_INFO_STRUCT_MINOR_VERSION)
52*61c4878aSAndroid Build Coastguard Worker : false;
53*61c4878aSAndroid Build Coastguard Worker }
54*61c4878aSAndroid Build Coastguard Worker
getAppPermissions() const55*61c4878aSAndroid Build Coastguard Worker uint32_t PlatformNanoapp::getAppPermissions() const {
56*61c4878aSAndroid Build Coastguard Worker return (supportsAppPermissions())
57*61c4878aSAndroid Build Coastguard Worker ? app_info_->appPermissions
58*61c4878aSAndroid Build Coastguard Worker : static_cast<uint32_t>(chre::NanoappPermissions::CHRE_PERMS_NONE);
59*61c4878aSAndroid Build Coastguard Worker }
60*61c4878aSAndroid Build Coastguard Worker
isSystemNanoapp() const61*61c4878aSAndroid Build Coastguard Worker bool PlatformNanoapp::isSystemNanoapp() const {
62*61c4878aSAndroid Build Coastguard Worker return (app_info_ != nullptr && app_info_->isSystemNanoapp);
63*61c4878aSAndroid Build Coastguard Worker }
64*61c4878aSAndroid Build Coastguard Worker
logStateToBuffer(DebugDumpWrapper & debugDump) const65*61c4878aSAndroid Build Coastguard Worker void PlatformNanoapp::logStateToBuffer(DebugDumpWrapper& debugDump) const {
66*61c4878aSAndroid Build Coastguard Worker if (!app_info_) {
67*61c4878aSAndroid Build Coastguard Worker return;
68*61c4878aSAndroid Build Coastguard Worker }
69*61c4878aSAndroid Build Coastguard Worker debugDump.print("%s: %s", app_info_->name, app_info_->vendor);
70*61c4878aSAndroid Build Coastguard Worker }
71*61c4878aSAndroid Build Coastguard Worker
loadStatic(const struct chreNslNanoappInfo * app_info)72*61c4878aSAndroid Build Coastguard Worker void PlatformNanoappBase::loadStatic(
73*61c4878aSAndroid Build Coastguard Worker const struct chreNslNanoappInfo* app_info) {
74*61c4878aSAndroid Build Coastguard Worker app_info_ = app_info;
75*61c4878aSAndroid Build Coastguard Worker }
76*61c4878aSAndroid Build Coastguard Worker
77*61c4878aSAndroid Build Coastguard Worker } // namespace chre
78