1 /*
2  * Copyright (c) 2021, 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 #include "CarTelemetryImpl.h"
18 
19 #include "BufferedCarData.h"
20 
21 #include <aidl/android/frameworks/automotive/telemetry/CarData.h>
22 #include <android/binder_ibinder.h>
23 
24 #include <stdio.h>
25 
26 #include <memory>
27 
28 namespace android {
29 namespace automotive {
30 namespace telemetry {
31 
CarTelemetryImpl(TelemetryServer * server)32 CarTelemetryImpl::CarTelemetryImpl(TelemetryServer* server) : mTelemetryServer(server) {}
33 
write(const std::vector<CarData> & dataList)34 ndk::ScopedAStatus CarTelemetryImpl::write(const std::vector<CarData>& dataList) {
35     uid_t publisherUid = ::AIBinder_getCallingUid();
36     mTelemetryServer->writeCarData(dataList, publisherUid);
37     return ndk::ScopedAStatus::ok();
38 }
39 
addCallback(const CallbackConfig & config,const std::shared_ptr<ICarTelemetryCallback> & callback)40 ndk::ScopedAStatus CarTelemetryImpl::addCallback(
41         const CallbackConfig& config, const std::shared_ptr<ICarTelemetryCallback>& callback) {
42     auto result = mTelemetryServer->addCallback(config, callback);
43     if (!result.ok()) {
44         return ndk::ScopedAStatus::fromExceptionCodeWithMessage(result.error().code(),
45                                                                 result.error().message().c_str());
46     }
47     return ndk::ScopedAStatus::ok();
48 }
49 
removeCallback(const std::shared_ptr<ICarTelemetryCallback> & callback)50 ndk::ScopedAStatus CarTelemetryImpl::removeCallback(
51         const std::shared_ptr<ICarTelemetryCallback>& callback) {
52     auto result = mTelemetryServer->removeCallback(callback);
53     if (!result.ok()) {
54         return ndk::ScopedAStatus::fromExceptionCodeWithMessage(result.error().code(),
55                                                                 result.error().message().c_str());
56     }
57     return ndk::ScopedAStatus::ok();
58 }
59 
60 }  // namespace telemetry
61 }  // namespace automotive
62 }  // namespace android
63