xref: /aosp_15_r20/hardware/interfaces/gnss/1.1/default/GnssConfiguration.h (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker #ifndef ANDROID_HARDWARE_GNSS_V1_1_GNSSCONFIGURATION_H
2*4d7e907cSAndroid Build Coastguard Worker #define ANDROID_HARDWARE_GNSS_V1_1_GNSSCONFIGURATION_H
3*4d7e907cSAndroid Build Coastguard Worker 
4*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/gnss/1.1/IGnssCallback.h>
5*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/gnss/1.1/IGnssConfiguration.h>
6*4d7e907cSAndroid Build Coastguard Worker #include <hidl/MQDescriptor.h>
7*4d7e907cSAndroid Build Coastguard Worker #include <hidl/Status.h>
8*4d7e907cSAndroid Build Coastguard Worker #include <mutex>
9*4d7e907cSAndroid Build Coastguard Worker #include <unordered_set>
10*4d7e907cSAndroid Build Coastguard Worker 
11*4d7e907cSAndroid Build Coastguard Worker namespace android {
12*4d7e907cSAndroid Build Coastguard Worker namespace hardware {
13*4d7e907cSAndroid Build Coastguard Worker namespace gnss {
14*4d7e907cSAndroid Build Coastguard Worker namespace V1_1 {
15*4d7e907cSAndroid Build Coastguard Worker namespace implementation {
16*4d7e907cSAndroid Build Coastguard Worker 
17*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::hidl_array;
18*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::hidl_memory;
19*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::hidl_string;
20*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::hidl_vec;
21*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::Return;
22*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::Void;
23*4d7e907cSAndroid Build Coastguard Worker using ::android::sp;
24*4d7e907cSAndroid Build Coastguard Worker 
25*4d7e907cSAndroid Build Coastguard Worker using BlacklistedSource = ::android::hardware::gnss::V1_1::IGnssConfiguration::BlacklistedSource;
26*4d7e907cSAndroid Build Coastguard Worker using GnssConstellationType = V1_0::GnssConstellationType;
27*4d7e907cSAndroid Build Coastguard Worker using GnssSvInfo = V1_0::IGnssCallback::GnssSvInfo;
28*4d7e907cSAndroid Build Coastguard Worker 
29*4d7e907cSAndroid Build Coastguard Worker struct BlacklistedSourceHash {
operatorBlacklistedSourceHash30*4d7e907cSAndroid Build Coastguard Worker     inline int operator()(const BlacklistedSource& source) const {
31*4d7e907cSAndroid Build Coastguard Worker         return int(source.constellation) * 1000 + int(source.svid);
32*4d7e907cSAndroid Build Coastguard Worker     }
33*4d7e907cSAndroid Build Coastguard Worker };
34*4d7e907cSAndroid Build Coastguard Worker 
35*4d7e907cSAndroid Build Coastguard Worker struct BlacklistedSourceEqual {
operatorBlacklistedSourceEqual36*4d7e907cSAndroid Build Coastguard Worker     inline bool operator()(const BlacklistedSource& s1, const BlacklistedSource& s2) const {
37*4d7e907cSAndroid Build Coastguard Worker         return (s1.constellation == s2.constellation) && (s1.svid == s2.svid);
38*4d7e907cSAndroid Build Coastguard Worker     }
39*4d7e907cSAndroid Build Coastguard Worker };
40*4d7e907cSAndroid Build Coastguard Worker 
41*4d7e907cSAndroid Build Coastguard Worker using BlacklistedSourceSet =
42*4d7e907cSAndroid Build Coastguard Worker     std::unordered_set<BlacklistedSource, BlacklistedSourceHash, BlacklistedSourceEqual>;
43*4d7e907cSAndroid Build Coastguard Worker using BlacklistedConstellationSet = std::unordered_set<GnssConstellationType>;
44*4d7e907cSAndroid Build Coastguard Worker 
45*4d7e907cSAndroid Build Coastguard Worker struct GnssConfiguration : public IGnssConfiguration {
46*4d7e907cSAndroid Build Coastguard Worker     // Methods from ::android::hardware::gnss::V1_0::IGnssConfiguration follow.
47*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setSuplEs(bool enabled) override;
48*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setSuplVersion(uint32_t version) override;
49*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setSuplMode(hidl_bitfield<SuplMode> mode) override;
50*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setGpsLock(hidl_bitfield<GpsLock> lock) override;
51*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setLppProfile(hidl_bitfield<LppProfile> lppProfile) override;
52*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setGlonassPositioningProtocol(hidl_bitfield<GlonassPosProtocol> protocol) override;
53*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setEmergencySuplPdn(bool enable) override;
54*4d7e907cSAndroid Build Coastguard Worker 
55*4d7e907cSAndroid Build Coastguard Worker     // Methods from ::android::hardware::gnss::V1_1::IGnssConfiguration follow.
56*4d7e907cSAndroid Build Coastguard Worker     Return<bool> setBlacklist(const hidl_vec<BlacklistedSource>& blacklist) override;
57*4d7e907cSAndroid Build Coastguard Worker 
58*4d7e907cSAndroid Build Coastguard Worker     Return<bool> isBlacklisted(const GnssSvInfo& gnssSvInfo) const;
59*4d7e907cSAndroid Build Coastguard Worker     std::recursive_mutex& getMutex() const;
60*4d7e907cSAndroid Build Coastguard Worker 
61*4d7e907cSAndroid Build Coastguard Worker    private:
62*4d7e907cSAndroid Build Coastguard Worker     BlacklistedSourceSet mBlacklistedSourceSet;
63*4d7e907cSAndroid Build Coastguard Worker     BlacklistedConstellationSet mBlacklistedConstellationSet;
64*4d7e907cSAndroid Build Coastguard Worker     mutable std::recursive_mutex mMutex;
65*4d7e907cSAndroid Build Coastguard Worker };
66*4d7e907cSAndroid Build Coastguard Worker 
67*4d7e907cSAndroid Build Coastguard Worker }  // namespace implementation
68*4d7e907cSAndroid Build Coastguard Worker }  // namespace V1_1
69*4d7e907cSAndroid Build Coastguard Worker }  // namespace gnss
70*4d7e907cSAndroid Build Coastguard Worker }  // namespace hardware
71*4d7e907cSAndroid Build Coastguard Worker }  // namespace android
72*4d7e907cSAndroid Build Coastguard Worker 
73*4d7e907cSAndroid Build Coastguard Worker #endif  // ANDROID_HARDWARE_GNSS_V1_1_GNSSCONFIGURATION_H
74