1*4d7e907cSAndroid Build Coastguard Worker #define LOG_TAG "GnssConfiguration" 2*4d7e907cSAndroid Build Coastguard Worker 3*4d7e907cSAndroid Build Coastguard Worker #include "GnssConfiguration.h" 4*4d7e907cSAndroid Build Coastguard Worker #include <log/log.h> 5*4d7e907cSAndroid Build Coastguard Worker 6*4d7e907cSAndroid Build Coastguard Worker namespace android { 7*4d7e907cSAndroid Build Coastguard Worker namespace hardware { 8*4d7e907cSAndroid Build Coastguard Worker namespace gnss { 9*4d7e907cSAndroid Build Coastguard Worker namespace V1_1 { 10*4d7e907cSAndroid Build Coastguard Worker namespace implementation { 11*4d7e907cSAndroid Build Coastguard Worker 12*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hardware::gnss::V1_0::IGnssConfiguration follow. setSuplEs(bool)13*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setSuplEs(bool) { 14*4d7e907cSAndroid Build Coastguard Worker // TODO implement 15*4d7e907cSAndroid Build Coastguard Worker return bool{}; 16*4d7e907cSAndroid Build Coastguard Worker } 17*4d7e907cSAndroid Build Coastguard Worker setSuplVersion(uint32_t)18*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setSuplVersion(uint32_t) { 19*4d7e907cSAndroid Build Coastguard Worker // TODO implement 20*4d7e907cSAndroid Build Coastguard Worker return bool{}; 21*4d7e907cSAndroid Build Coastguard Worker } 22*4d7e907cSAndroid Build Coastguard Worker setSuplMode(hidl_bitfield<SuplMode>)23*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setSuplMode(hidl_bitfield<SuplMode>) { 24*4d7e907cSAndroid Build Coastguard Worker // TODO implement 25*4d7e907cSAndroid Build Coastguard Worker return bool{}; 26*4d7e907cSAndroid Build Coastguard Worker } 27*4d7e907cSAndroid Build Coastguard Worker setGpsLock(hidl_bitfield<GpsLock>)28*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setGpsLock(hidl_bitfield<GpsLock>) { 29*4d7e907cSAndroid Build Coastguard Worker // TODO implement 30*4d7e907cSAndroid Build Coastguard Worker return bool{}; 31*4d7e907cSAndroid Build Coastguard Worker } 32*4d7e907cSAndroid Build Coastguard Worker setLppProfile(hidl_bitfield<LppProfile>)33*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setLppProfile(hidl_bitfield<LppProfile>) { 34*4d7e907cSAndroid Build Coastguard Worker // TODO implement 35*4d7e907cSAndroid Build Coastguard Worker return bool{}; 36*4d7e907cSAndroid Build Coastguard Worker } 37*4d7e907cSAndroid Build Coastguard Worker setGlonassPositioningProtocol(hidl_bitfield<GlonassPosProtocol>)38*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setGlonassPositioningProtocol(hidl_bitfield<GlonassPosProtocol>) { 39*4d7e907cSAndroid Build Coastguard Worker // TODO implement 40*4d7e907cSAndroid Build Coastguard Worker return bool{}; 41*4d7e907cSAndroid Build Coastguard Worker } 42*4d7e907cSAndroid Build Coastguard Worker setEmergencySuplPdn(bool)43*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setEmergencySuplPdn(bool) { 44*4d7e907cSAndroid Build Coastguard Worker // TODO implement 45*4d7e907cSAndroid Build Coastguard Worker return bool{}; 46*4d7e907cSAndroid Build Coastguard Worker } 47*4d7e907cSAndroid Build Coastguard Worker 48*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hardware::gnss::V1_1::IGnssConfiguration follow. setBlacklist(const hidl_vec<BlacklistedSource> & sourceList)49*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::setBlacklist(const hidl_vec<BlacklistedSource>& sourceList) { 50*4d7e907cSAndroid Build Coastguard Worker std::unique_lock<std::recursive_mutex> lock(mMutex); 51*4d7e907cSAndroid Build Coastguard Worker mBlacklistedConstellationSet.clear(); 52*4d7e907cSAndroid Build Coastguard Worker mBlacklistedSourceSet.clear(); 53*4d7e907cSAndroid Build Coastguard Worker for (auto source : sourceList) { 54*4d7e907cSAndroid Build Coastguard Worker if (source.svid == 0) { 55*4d7e907cSAndroid Build Coastguard Worker // Wildcard blacklist, i.e., blacklist entire constellation. 56*4d7e907cSAndroid Build Coastguard Worker mBlacklistedConstellationSet.insert(source.constellation); 57*4d7e907cSAndroid Build Coastguard Worker } else { 58*4d7e907cSAndroid Build Coastguard Worker mBlacklistedSourceSet.insert(source); 59*4d7e907cSAndroid Build Coastguard Worker } 60*4d7e907cSAndroid Build Coastguard Worker } 61*4d7e907cSAndroid Build Coastguard Worker return true; 62*4d7e907cSAndroid Build Coastguard Worker } 63*4d7e907cSAndroid Build Coastguard Worker isBlacklisted(const GnssSvInfo & gnssSvInfo) const64*4d7e907cSAndroid Build Coastguard WorkerReturn<bool> GnssConfiguration::isBlacklisted(const GnssSvInfo& gnssSvInfo) const { 65*4d7e907cSAndroid Build Coastguard Worker std::unique_lock<std::recursive_mutex> lock(mMutex); 66*4d7e907cSAndroid Build Coastguard Worker if (mBlacklistedConstellationSet.find(gnssSvInfo.constellation) != 67*4d7e907cSAndroid Build Coastguard Worker mBlacklistedConstellationSet.end()) { 68*4d7e907cSAndroid Build Coastguard Worker return true; 69*4d7e907cSAndroid Build Coastguard Worker } 70*4d7e907cSAndroid Build Coastguard Worker BlacklistedSource source = {.constellation = gnssSvInfo.constellation, .svid = gnssSvInfo.svid}; 71*4d7e907cSAndroid Build Coastguard Worker return (mBlacklistedSourceSet.find(source) != mBlacklistedSourceSet.end()); 72*4d7e907cSAndroid Build Coastguard Worker } 73*4d7e907cSAndroid Build Coastguard Worker getMutex() const74*4d7e907cSAndroid Build Coastguard Workerstd::recursive_mutex& GnssConfiguration::getMutex() const { 75*4d7e907cSAndroid Build Coastguard Worker return mMutex; 76*4d7e907cSAndroid Build Coastguard Worker } 77*4d7e907cSAndroid Build Coastguard Worker 78*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hidl::base::V1_0::IBase follow. 79*4d7e907cSAndroid Build Coastguard Worker 80*4d7e907cSAndroid Build Coastguard Worker } // namespace implementation 81*4d7e907cSAndroid Build Coastguard Worker } // namespace V1_1 82*4d7e907cSAndroid Build Coastguard Worker } // namespace gnss 83*4d7e907cSAndroid Build Coastguard Worker } // namespace hardware 84*4d7e907cSAndroid Build Coastguard Worker } // namespace android 85