xref: /aosp_15_r20/external/pigweed/pw_chre/platform_nanoapp.cc (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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