1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef NOS_CITADELD_PROXY_CLIENT_H 18 #define NOS_CITADELD_PROXY_CLIENT_H 19 20 #include <cstdint> 21 #include <vector> 22 23 #include <nos/NuggetClientInterface.h> 24 25 #include <android/hardware/citadel/ICitadeld.h> 26 27 namespace nos { 28 29 using ::android::hardware::citadel::ICitadeld; 30 31 /** 32 * Implementation of NuggetClient to proxy calls via the citadeld synchronizing 33 * daemon which coordinates communication between the HALs and Citadel. 34 */ 35 class CitadeldProxyClient : public NuggetClientInterface { 36 ::android::sp<ICitadeld> _citadeld; 37 38 public: 39 CitadeldProxyClient() = default; 40 ~CitadeldProxyClient() override; 41 42 void Open() override; 43 void Close() override; 44 bool IsOpen() const override; 45 uint32_t CallApp(uint32_t appId, uint16_t arg, 46 const std::vector<uint8_t>& request, 47 std::vector<uint8_t>* response) override; 48 49 ICitadeld& Citadeld(); 50 }; 51 52 } // namespace nos 53 54 #endif // NOS_CITADELD_PROXY_CLIENT_H 55