/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define LOG_TAG "GnssConfiguration" #include "GnssConfiguration.h" #include namespace android { namespace hardware { namespace gnss { namespace V2_1 { namespace implementation { // Methods from ::android::hardware::gnss::V1_0::IGnssConfiguration follow. Return GnssConfiguration::setSuplEs(bool enable) { ALOGD("setSuplEs enable: %d", enable); // Method deprecated in 2.0 and not expected to be called by the framework. return false; } Return GnssConfiguration::setSuplVersion(uint32_t) { return true; } Return GnssConfiguration::setSuplMode(hidl_bitfield) { return true; } Return GnssConfiguration::setGpsLock(hidl_bitfield gpsLock) { ALOGD("setGpsLock gpsLock: %hhu", static_cast(gpsLock)); // Method deprecated in 2.0 and not expected to be called by the framework. return false; } Return GnssConfiguration::setLppProfile(hidl_bitfield) { return true; } Return GnssConfiguration::setGlonassPositioningProtocol(hidl_bitfield) { return true; } Return GnssConfiguration::setEmergencySuplPdn(bool) { return true; } // Methods from ::android::hardware::gnss::V1_1::IGnssConfiguration follow. Return GnssConfiguration::setBlacklist( const hidl_vec&) { // TODO (b/122463906): Reuse 1.1 implementation. return bool{}; } // Methods from ::android::hardware::gnss::V2_0::IGnssConfiguration follow. Return GnssConfiguration::setEsExtensionSec(uint32_t emergencyExtensionSeconds) { ALOGD("setEsExtensionSec emergencyExtensionSeconds: %d", emergencyExtensionSeconds); return true; } // Methods from ::android::hardware::gnss::V2_1::IGnssConfiguration follow. Return GnssConfiguration::setBlacklist_2_1( const hidl_vec& sourceList) { std::unique_lock lock(mMutex); mBlacklistedConstellationSet.clear(); mBlacklistedSourceSet.clear(); for (auto source : sourceList) { if (source.svid == 0) { // Wildcard blacklist, i.e., blacklist entire constellation. mBlacklistedConstellationSet.insert(source.constellation); } else { mBlacklistedSourceSet.insert(source); } } return true; } Return GnssConfiguration::isBlacklistedV2_1(const GnssSvInfoV2_1& gnssSvInfo) const { std::unique_lock lock(mMutex); if (mBlacklistedConstellationSet.find(gnssSvInfo.v2_0.constellation) != mBlacklistedConstellationSet.end()) { return true; } BlacklistedSourceV2_1 source = {.constellation = gnssSvInfo.v2_0.constellation, .svid = gnssSvInfo.v2_0.v1_0.svid}; return (mBlacklistedSourceSet.find(source) != mBlacklistedSourceSet.end()); } } // namespace implementation } // namespace V2_1 } // namespace gnss } // namespace hardware } // namespace android