blob: 7f1ef9bdf8361ac72030c6d35cdbfedcd8a81e5b [file] [log] [blame]
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -08001/*
2 * Copyright (C) 2018 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#define LOG_TAG "Gnss"
18
19#include "Gnss.h"
20#include <log/log.h>
Anil Admalb02bcc12018-11-14 10:23:45 -080021#include "AGnssRil.h"
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080022
23namespace android {
24namespace hardware {
25namespace gnss {
26namespace V2_0 {
27namespace implementation {
28
gomo1da4b5c2018-12-02 02:49:10 -080029sp<V2_0::IGnssCallback> Gnss::sGnssCallback_2_0 = nullptr;
30sp<V1_1::IGnssCallback> Gnss::sGnssCallback_1_1 = nullptr;
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080031
32// Methods from V1_0::IGnss follow.
33Return<bool> Gnss::setCallback(const sp<V1_0::IGnssCallback>&) {
34 // TODO implement
35 return bool{};
36}
37
38Return<bool> Gnss::start() {
39 // TODO implement
40 return bool{};
41}
42
43Return<bool> Gnss::stop() {
44 // TODO implement
45 return bool{};
46}
47
48Return<void> Gnss::cleanup() {
49 // TODO implement
50 return Void();
51}
52
53Return<bool> Gnss::injectTime(int64_t, int64_t, int32_t) {
54 // TODO implement
55 return bool{};
56}
57
58Return<bool> Gnss::injectLocation(double, double, float) {
59 // TODO implement
60 return bool{};
61}
62
63Return<void> Gnss::deleteAidingData(V1_0::IGnss::GnssAidingData) {
64 // TODO implement
65 return Void();
66}
67
68Return<bool> Gnss::setPositionMode(V1_0::IGnss::GnssPositionMode,
69 V1_0::IGnss::GnssPositionRecurrence, uint32_t, uint32_t,
70 uint32_t) {
71 // TODO implement
72 return bool{};
73}
74
75Return<sp<V1_0::IAGnssRil>> Gnss::getExtensionAGnssRil() {
76 // TODO implement
77 return sp<V1_0::IAGnssRil>{};
78}
79
80Return<sp<V1_0::IGnssGeofencing>> Gnss::getExtensionGnssGeofencing() {
81 // TODO implement
82 return sp<V1_0::IGnssGeofencing>{};
83}
84
85Return<sp<V1_0::IAGnss>> Gnss::getExtensionAGnss() {
86 // TODO implement
87 return sp<V1_0::IAGnss>{};
88}
89
90Return<sp<V1_0::IGnssNi>> Gnss::getExtensionGnssNi() {
91 // TODO implement
92 return sp<V1_0::IGnssNi>{};
93}
94
95Return<sp<V1_0::IGnssMeasurement>> Gnss::getExtensionGnssMeasurement() {
96 // TODO implement
97 return sp<V1_0::IGnssMeasurement>{};
98}
99
100Return<sp<V1_0::IGnssNavigationMessage>> Gnss::getExtensionGnssNavigationMessage() {
101 // TODO implement
102 return sp<V1_0::IGnssNavigationMessage>{};
103}
104
105Return<sp<V1_0::IGnssXtra>> Gnss::getExtensionXtra() {
106 // TODO implement
107 return sp<V1_0::IGnssXtra>{};
108}
109
110Return<sp<V1_0::IGnssConfiguration>> Gnss::getExtensionGnssConfiguration() {
111 // TODO implement
112 return sp<V1_0::IGnssConfiguration>{};
113}
114
115Return<sp<V1_0::IGnssDebug>> Gnss::getExtensionGnssDebug() {
116 // TODO implement
117 return sp<V1_0::IGnssDebug>{};
118}
119
120Return<sp<V1_0::IGnssBatching>> Gnss::getExtensionGnssBatching() {
121 // TODO implement
122 return sp<V1_0::IGnssBatching>{};
123}
124
125// Methods from V1_1::IGnss follow.
126Return<bool> Gnss::setCallback_1_1(const sp<V1_1::IGnssCallback>& callback) {
127 ALOGD("Gnss::setCallback_1_1");
128 if (callback == nullptr) {
129 ALOGE("%s: Null callback ignored", __func__);
130 return false;
131 }
132
gomo1da4b5c2018-12-02 02:49:10 -0800133 sGnssCallback_1_1 = callback;
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -0800134
135 uint32_t capabilities = 0x0;
gomo1da4b5c2018-12-02 02:49:10 -0800136 auto ret = sGnssCallback_1_1->gnssSetCapabilitesCb(capabilities);
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -0800137 if (!ret.isOk()) {
138 ALOGE("%s: Unable to invoke callback", __func__);
139 }
140
141 V1_1::IGnssCallback::GnssSystemInfo gnssInfo = {.yearOfHw = 2019};
142
gomo1da4b5c2018-12-02 02:49:10 -0800143 ret = sGnssCallback_1_1->gnssSetSystemInfoCb(gnssInfo);
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -0800144 if (!ret.isOk()) {
145 ALOGE("%s: Unable to invoke callback", __func__);
146 }
147
148 auto gnssName = "Google Mock GNSS Implementation v2.0";
gomo1da4b5c2018-12-02 02:49:10 -0800149 ret = sGnssCallback_1_1->gnssNameCb(gnssName);
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -0800150 if (!ret.isOk()) {
151 ALOGE("%s: Unable to invoke callback", __func__);
152 }
153
154 return true;
155}
156
157Return<bool> Gnss::setPositionMode_1_1(V1_0::IGnss::GnssPositionMode,
158 V1_0::IGnss::GnssPositionRecurrence, uint32_t, uint32_t,
159 uint32_t, bool) {
160 // TODO implement
161 return bool{};
162}
163
164Return<sp<V1_1::IGnssConfiguration>> Gnss::getExtensionGnssConfiguration_1_1() {
165 // TODO implement
166 return sp<V1_1::IGnssConfiguration>{};
167}
168
169Return<sp<V1_1::IGnssMeasurement>> Gnss::getExtensionGnssMeasurement_1_1() {
170 // TODO implement
171 return sp<V1_1::IGnssMeasurement>{};
172}
173
174Return<bool> Gnss::injectBestLocation(const V1_0::GnssLocation&) {
175 // TODO implement
176 return bool{};
177}
178
179// Methods from V2_0::IGnss follow.
Anil Admalb02bcc12018-11-14 10:23:45 -0800180Return<sp<V2_0::IAGnssRil>> Gnss::getExtensionAGnssRil_2_0() {
181 return new AGnssRil{};
182}
183
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -0800184Return<sp<V2_0::IGnssMeasurement>> Gnss::getExtensionGnssMeasurement_2_0() {
185 // TODO implement
186 return sp<V2_0::IGnssMeasurement>{};
187}
188
gomo1da4b5c2018-12-02 02:49:10 -0800189Return<sp<measurement_corrections::V1_0::IMeasurementCorrections>>
190Gnss::getExtensionMeasurementCorrections() {
191 // TODO implement
192 return sp<measurement_corrections::V1_0::IMeasurementCorrections>{};
193}
194
195Return<bool> Gnss::setCallback_2_0(const sp<V2_0::IGnssCallback>& callback) {
196 ALOGD("Gnss::setCallback_2_0");
197 if (callback == nullptr) {
198 ALOGE("%s: Null callback ignored", __func__);
199 return false;
200 }
201
202 sGnssCallback_2_0 = callback;
203
204 uint32_t capabilities = 0x0;
205 auto ret = sGnssCallback_2_0->gnssSetCapabilitesCb(capabilities);
206 if (!ret.isOk()) {
207 ALOGE("%s: Unable to invoke callback", __func__);
208 }
209
210 V1_1::IGnssCallback::GnssSystemInfo gnssInfo = {.yearOfHw = 2019};
211
212 ret = sGnssCallback_2_0->gnssSetSystemInfoCb(gnssInfo);
213 if (!ret.isOk()) {
214 ALOGE("%s: Unable to invoke callback", __func__);
215 }
216
217 auto gnssName = "Google Mock GNSS Implementation v2.0";
218 ret = sGnssCallback_2_0->gnssNameCb(gnssName);
219 if (!ret.isOk()) {
220 ALOGE("%s: Unable to invoke callback", __func__);
221 }
222
223 return true;
224}
225
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -0800226} // namespace implementation
227} // namespace V2_0
228} // namespace gnss
229} // namespace hardware
230} // namespace android