blob: cd8f07fcc4e73f939a169ec50bb6e933274de00f [file] [log] [blame]
Sasha Kuznetsov845f6d52019-12-04 12:17:50 -08001/*
2 * Copyright (C) 2019 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 "GnssConfiguration"
18
19#include "GnssConfiguration.h"
20#include <log/log.h>
21
22namespace android {
23namespace hardware {
24namespace gnss {
25namespace V2_1 {
26namespace implementation {
27
28// Methods from ::android::hardware::gnss::V1_0::IGnssConfiguration follow.
29Return<bool> GnssConfiguration::setSuplEs(bool enable) {
30 ALOGD("setSuplEs enable: %d", enable);
31 // Method deprecated in 2.0 and not expected to be called by the framework.
32 return false;
33}
34
35Return<bool> GnssConfiguration::setSuplVersion(uint32_t) {
36 return true;
37}
38
39Return<bool> GnssConfiguration::setSuplMode(hidl_bitfield<SuplMode>) {
40 return true;
41}
42
43Return<bool> GnssConfiguration::setGpsLock(hidl_bitfield<GpsLock> gpsLock) {
44 ALOGD("setGpsLock gpsLock: %hhu", static_cast<GpsLock>(gpsLock));
45 // Method deprecated in 2.0 and not expected to be called by the framework.
46 return false;
47}
48
49Return<bool> GnssConfiguration::setLppProfile(hidl_bitfield<LppProfile>) {
50 return true;
51}
52
53Return<bool> GnssConfiguration::setGlonassPositioningProtocol(hidl_bitfield<GlonassPosProtocol>) {
54 return true;
55}
56
57Return<bool> GnssConfiguration::setEmergencySuplPdn(bool) {
58 return true;
59}
60
61// Methods from ::android::hardware::gnss::V1_1::IGnssConfiguration follow.
62Return<bool> GnssConfiguration::setBlacklist(
63 const hidl_vec<V1_1::IGnssConfiguration::BlacklistedSource>&) {
64 // TODO (b/122463906): Reuse 1.1 implementation.
65 return bool{};
66}
67
68// Methods from ::android::hardware::gnss::V2_0::IGnssConfiguration follow.
69Return<bool> GnssConfiguration::setEsExtensionSec(uint32_t emergencyExtensionSeconds) {
70 ALOGD("setEsExtensionSec emergencyExtensionSeconds: %d", emergencyExtensionSeconds);
71 return true;
72}
73
74// Methods from ::android::hardware::gnss::V2_1::IGnssConfiguration follow.
75Return<bool> GnssConfiguration::setBlacklist_2_1(
76 const hidl_vec<V2_1::IGnssConfiguration::BlacklistedSource>& sourceList) {
77 std::unique_lock<std::recursive_mutex> lock(mMutex);
78 mBlacklistedConstellationSet.clear();
79 mBlacklistedSourceSet.clear();
80 for (auto source : sourceList) {
81 if (source.svid == 0) {
82 // Wildcard blacklist, i.e., blacklist entire constellation.
83 mBlacklistedConstellationSet.insert(source.constellation);
84 } else {
85 mBlacklistedSourceSet.insert(source);
86 }
87 }
88 return true;
89}
90
91Return<bool> GnssConfiguration::isBlacklistedV2_1(const GnssSvInfoV2_1& gnssSvInfo) const {
92 std::unique_lock<std::recursive_mutex> lock(mMutex);
93 if (mBlacklistedConstellationSet.find(gnssSvInfo.v2_0.constellation) !=
94 mBlacklistedConstellationSet.end()) {
95 return true;
96 }
97 BlacklistedSourceV2_1 source = {.constellation = gnssSvInfo.v2_0.constellation,
98 .svid = gnssSvInfo.v2_0.v1_0.svid};
99 return (mBlacklistedSourceSet.find(source) != mBlacklistedSourceSet.end());
100}
101
102} // namespace implementation
103} // namespace V2_1
104} // namespace gnss
105} // namespace hardware
106} // namespace android