1*4d7e907cSAndroid Build Coastguard Worker /*
2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2020 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker *
4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker *
8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker *
10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker */
16*4d7e907cSAndroid Build Coastguard Worker
17*4d7e907cSAndroid Build Coastguard Worker #define LOG_TAG "GnssCallbackAidl"
18*4d7e907cSAndroid Build Coastguard Worker
19*4d7e907cSAndroid Build Coastguard Worker #include "GnssCallbackAidl.h"
20*4d7e907cSAndroid Build Coastguard Worker #include <log/log.h>
21*4d7e907cSAndroid Build Coastguard Worker #include <utils/SystemClock.h>
22*4d7e907cSAndroid Build Coastguard Worker
23*4d7e907cSAndroid Build Coastguard Worker using android::binder::Status;
24*4d7e907cSAndroid Build Coastguard Worker using android::hardware::gnss::GnssLocation;
25*4d7e907cSAndroid Build Coastguard Worker using GnssSvInfo = android::hardware::gnss::IGnssCallback::GnssSvInfo;
26*4d7e907cSAndroid Build Coastguard Worker using GnssSystemInfo = android::hardware::gnss::IGnssCallback::GnssSystemInfo;
27*4d7e907cSAndroid Build Coastguard Worker using GnssSignalType = android::hardware::gnss::GnssSignalType;
28*4d7e907cSAndroid Build Coastguard Worker
gnssSetCapabilitiesCb(const int capabilities)29*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssSetCapabilitiesCb(const int capabilities) {
30*4d7e907cSAndroid Build Coastguard Worker ALOGI("Capabilities received %#08x", capabilities);
31*4d7e907cSAndroid Build Coastguard Worker capabilities_cbq_.store(capabilities);
32*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
33*4d7e907cSAndroid Build Coastguard Worker }
34*4d7e907cSAndroid Build Coastguard Worker
gnssSetSignalTypeCapabilitiesCb(const std::vector<GnssSignalType> & signalTypes)35*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssSetSignalTypeCapabilitiesCb(
36*4d7e907cSAndroid Build Coastguard Worker const std::vector<GnssSignalType>& signalTypes) {
37*4d7e907cSAndroid Build Coastguard Worker ALOGI("SignalTypeCapabilities received");
38*4d7e907cSAndroid Build Coastguard Worker std::ostringstream ss;
39*4d7e907cSAndroid Build Coastguard Worker for (auto& signalType : signalTypes) {
40*4d7e907cSAndroid Build Coastguard Worker ss << "[constellation=" << (int)signalType.constellation
41*4d7e907cSAndroid Build Coastguard Worker << ", carrierFrequencyHz=" << signalType.carrierFrequencyHz
42*4d7e907cSAndroid Build Coastguard Worker << ", codeType=" << signalType.codeType << "], ";
43*4d7e907cSAndroid Build Coastguard Worker }
44*4d7e907cSAndroid Build Coastguard Worker ALOGI("%s", ss.str().c_str());
45*4d7e907cSAndroid Build Coastguard Worker signal_type_capabilities_cbq_.store(signalTypes);
46*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
47*4d7e907cSAndroid Build Coastguard Worker }
48*4d7e907cSAndroid Build Coastguard Worker
gnssStatusCb(const GnssStatusValue)49*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssStatusCb(const GnssStatusValue /* status */) {
50*4d7e907cSAndroid Build Coastguard Worker ALOGI("gnssStatusCb");
51*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
52*4d7e907cSAndroid Build Coastguard Worker }
53*4d7e907cSAndroid Build Coastguard Worker
gnssSvStatusCb(const std::vector<GnssSvInfo> & svInfoList)54*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssSvStatusCb(const std::vector<GnssSvInfo>& svInfoList) {
55*4d7e907cSAndroid Build Coastguard Worker ALOGI("gnssSvStatusCb. Size = %d", (int)svInfoList.size());
56*4d7e907cSAndroid Build Coastguard Worker sv_info_list_cbq_.store(svInfoList);
57*4d7e907cSAndroid Build Coastguard Worker sv_info_list_timestamps_millis_cbq_.store(::android::elapsedRealtime());
58*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
59*4d7e907cSAndroid Build Coastguard Worker }
60*4d7e907cSAndroid Build Coastguard Worker
gnssLocationCb(const GnssLocation & location)61*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssLocationCb(const GnssLocation& location) {
62*4d7e907cSAndroid Build Coastguard Worker ALOGI("Location received");
63*4d7e907cSAndroid Build Coastguard Worker location_cbq_.store(location);
64*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
65*4d7e907cSAndroid Build Coastguard Worker }
66*4d7e907cSAndroid Build Coastguard Worker
gnssNmeaCb(const int64_t timestamp,const std::string & nmea)67*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssNmeaCb(const int64_t timestamp, const std::string& nmea) {
68*4d7e907cSAndroid Build Coastguard Worker nmea_cbq_.store(std::make_pair(timestamp, nmea));
69*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
70*4d7e907cSAndroid Build Coastguard Worker }
71*4d7e907cSAndroid Build Coastguard Worker
gnssAcquireWakelockCb()72*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssAcquireWakelockCb() {
73*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
74*4d7e907cSAndroid Build Coastguard Worker }
75*4d7e907cSAndroid Build Coastguard Worker
gnssReleaseWakelockCb()76*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssReleaseWakelockCb() {
77*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
78*4d7e907cSAndroid Build Coastguard Worker }
79*4d7e907cSAndroid Build Coastguard Worker
gnssSetSystemInfoCb(const GnssSystemInfo & info)80*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssSetSystemInfoCb(const GnssSystemInfo& info) {
81*4d7e907cSAndroid Build Coastguard Worker ALOGI("gnssSetSystemInfoCb, year=%d, name=%s", info.yearOfHw, info.name.c_str());
82*4d7e907cSAndroid Build Coastguard Worker info_cbq_.store(info);
83*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
84*4d7e907cSAndroid Build Coastguard Worker }
85*4d7e907cSAndroid Build Coastguard Worker
gnssRequestTimeCb()86*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssRequestTimeCb() {
87*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
88*4d7e907cSAndroid Build Coastguard Worker }
89*4d7e907cSAndroid Build Coastguard Worker
gnssRequestLocationCb(const bool,const bool)90*4d7e907cSAndroid Build Coastguard Worker Status GnssCallbackAidl::gnssRequestLocationCb(const bool /* independentFromGnss */,
91*4d7e907cSAndroid Build Coastguard Worker const bool /* isUserEmergency */) {
92*4d7e907cSAndroid Build Coastguard Worker return Status::ok();
93*4d7e907cSAndroid Build Coastguard Worker }
94