• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef LOCATION_H
17 #define LOCATION_H
18 
19 #include <parcel.h>
20 #include <string>
21 #include <map>
22 
23 namespace OHOS {
24 namespace Location {
25 
26 typedef struct Poi {
27     std::string id = "";
28     double confidence = 0.0;
29     std::string name = "";
30     double latitude = 0.0;
31     double longitude = 0.0;
32     std::string administrativeArea = "";
33     std::string subAdministrativeArea = "";
34     std::string locality = "";
35     std::string subLocality = "";
36     std::string address = "";
37 } Poi;
38 
39 typedef struct PoiInfo {
40     std::vector<Poi> poiArray;
41     uint64_t timestamp = 0;
42 } PoiInfo;
43 
44 class Location : public Parcelable {
45 public:
46     Location();
47     explicit Location(const Location &location);
48     ~Location() override = default;
49 
GetLatitude()50     inline double GetLatitude() const
51     {
52         return latitude_;
53     }
54 
SetLatitude(double latitude)55     inline void SetLatitude(double latitude)
56     {
57         latitude_ = latitude;
58     }
59 
GetLongitude()60     inline double GetLongitude() const
61     {
62         return longitude_;
63     }
64 
SetLongitude(double longitude)65     inline void SetLongitude(double longitude)
66     {
67         longitude_ = longitude;
68     }
69 
GetAltitude()70     inline double GetAltitude() const
71     {
72         return altitude_;
73     }
74 
SetAltitude(double altitude)75     inline void SetAltitude(double altitude)
76     {
77         altitude_ = altitude;
78     }
79 
GetAccuracy()80     inline double GetAccuracy() const
81     {
82         return accuracy_;
83     }
84 
SetAccuracy(double accuracy)85     inline void SetAccuracy(double accuracy)
86     {
87         accuracy_ = accuracy;
88     }
89 
GetSpeed()90     inline double GetSpeed() const
91     {
92         return speed_;
93     }
94 
SetSpeed(double speed)95     inline void SetSpeed(double speed)
96     {
97         speed_ = speed;
98     }
99 
GetDirection()100     inline double GetDirection() const
101     {
102         return direction_;
103     }
104 
SetDirection(double direction)105     inline void SetDirection(double direction)
106     {
107         direction_ = direction;
108     }
109 
GetTimeStamp()110     inline int64_t GetTimeStamp() const
111     {
112         return timeStamp_;
113     }
114 
SetTimeStamp(int64_t timeStamp)115     inline void SetTimeStamp(int64_t timeStamp)
116     {
117         timeStamp_ = timeStamp;
118     }
119 
GetTimeSinceBoot()120     inline int64_t GetTimeSinceBoot() const
121     {
122         return timeSinceBoot_;
123     }
124 
SetTimeSinceBoot(int64_t timeStamp)125     inline void SetTimeSinceBoot(int64_t timeStamp)
126     {
127         timeSinceBoot_ = timeStamp;
128     }
129 
GetAdditions()130     inline std::vector<std::string> GetAdditions() const
131     {
132         return additions_;
133     }
134 
SetAdditions(std::vector<std::string> additions,bool ifAppend)135     inline void SetAdditions(std::vector<std::string> additions, bool ifAppend)
136     {
137         if (!ifAppend) {
138             std::vector<std::string>().swap(additions_);
139         }
140         for (auto it = additions.begin(); it != additions.end(); ++it) {
141             additions_.push_back(*it);
142         }
143     }
144 
GetAdditionSize()145     inline int64_t GetAdditionSize() const
146     {
147         return additionSize_;
148     }
149 
SetAdditionSize(int64_t size)150     inline void SetAdditionSize(int64_t size)
151     {
152         additionSize_ = size;
153     }
154 
GetIsFromMock()155     inline int GetIsFromMock() const
156     {
157         return isFromMock_;
158     }
159 
SetIsFromMock(int fromMock)160     inline void SetIsFromMock(int fromMock)
161     {
162         isFromMock_ = fromMock;
163     }
164 
GetFloorNo()165     inline int32_t GetFloorNo() const
166     {
167         return floorNo_;
168     }
169 
SetFloorNo(int32_t floorNo)170     inline void SetFloorNo(int32_t floorNo)
171     {
172         floorNo_ = floorNo;
173     }
174 
GetIsSystemApp()175     inline int32_t GetIsSystemApp() const
176     {
177         return isSystemApp_;
178     }
179 
SetIsSystemApp(int32_t isSystemApp)180     inline void SetIsSystemApp(int32_t isSystemApp)
181     {
182         isSystemApp_ = isSystemApp;
183     }
184 
GetUncertaintyOfTimeSinceBoot()185     inline int64_t GetUncertaintyOfTimeSinceBoot() const
186     {
187         return uncertaintyOfTimeSinceBoot_;
188     }
189 
SetUncertaintyOfTimeSinceBoot(int64_t uncertaintyOfTimeSinceBoot)190     inline void SetUncertaintyOfTimeSinceBoot(int64_t uncertaintyOfTimeSinceBoot)
191     {
192         uncertaintyOfTimeSinceBoot_ = uncertaintyOfTimeSinceBoot;
193     }
194 
GetFloorAccuracy()195     inline double GetFloorAccuracy() const
196     {
197         return floorAccuracy_;
198     }
199 
SetFloorAccuracy(double floorAccuracy)200     inline void SetFloorAccuracy(double floorAccuracy)
201     {
202         floorAccuracy_ = floorAccuracy;
203     }
204 
GetAltitudeAccuracy()205     inline double GetAltitudeAccuracy() const
206     {
207         return altitudeAccuracy_;
208     }
209 
SetAltitudeAccuracy(double altitudeAccuracy)210     inline void SetAltitudeAccuracy(double altitudeAccuracy)
211     {
212         altitudeAccuracy_ = altitudeAccuracy;
213     }
214 
GetSpeedAccuracy()215     inline double GetSpeedAccuracy() const
216     {
217         return speedAccuracy_;
218     }
219 
SetSpeedAccuracy(double speedAccuracy)220     inline void SetSpeedAccuracy(double speedAccuracy)
221     {
222         speedAccuracy_ = speedAccuracy;
223     }
224 
GetDirectionAccuracy()225     inline double GetDirectionAccuracy() const
226     {
227         return directionAccuracy_;
228     }
229 
SetDirectionAccuracy(double directionAccuracy)230     inline void SetDirectionAccuracy(double directionAccuracy)
231     {
232         directionAccuracy_ = directionAccuracy;
233     }
234 
GetLocationSourceType()235     inline int32_t GetLocationSourceType() const
236     {
237         return locationSourceType_;
238     }
239 
SetLocationSourceType(int32_t locationSourceType)240     inline void SetLocationSourceType(int32_t locationSourceType)
241     {
242         locationSourceType_ = locationSourceType;
243     }
244 
GetUuid()245     inline std::string GetUuid() const
246     {
247         return uuid_;
248     }
249 
SetUuid(std::string uuid)250     inline void SetUuid(std::string uuid)
251     {
252         uuid_ = uuid;
253     }
254 
GetAdditionsMap()255     inline std::map<std::string, std::string> GetAdditionsMap() const
256     {
257         return additionsMap_;
258     }
259 
GetFieldValidity()260     inline int32_t GetFieldValidity() const
261     {
262         return fieldValidity_;
263     }
264 
SetFieldValidity(int32_t fieldValidity)265     inline void SetFieldValidity(int32_t fieldValidity)
266     {
267         fieldValidity_ = fieldValidity;
268     }
269 
GetPoiInfo()270     inline PoiInfo GetPoiInfo() const
271     {
272         return poiInfo_;
273     }
274 
SetPoiInfo(PoiInfo poiInfo)275     inline void SetPoiInfo(PoiInfo poiInfo)
276     {
277         poiInfo_ = poiInfo;
278     }
279 
280     void ReadFromParcel(Parcel& parcel);
281     bool Marshalling(Parcel& parcel) const override;
282     std::string ToString() const;
283     static Location* Unmarshalling(Parcel& parcel);
284     static std::unique_ptr<Location> UnmarshallingMakeUnique(Parcel& parcel);
285     static std::shared_ptr<Location> UnmarshallingShared(Parcel& parcel);
286     bool LocationEqual(const std::unique_ptr<Location>& location);
287     bool AdditionEqual(const std::unique_ptr<Location>& location);
288     static double GetDistanceBetweenLocations(const double lat1, const double lon1,
289         const double lat2, const double lon2);
290     static bool isValidLatitude(double latitude);
291     static bool isValidLongitude(double longitude);
292     void VectorString16ToVectorString8(const std::vector<std::u16string>& additions);
293     std::vector<std::u16string> VectorString8ToVectorString16() const;
294     static bool WritePoiInfoToParcel(const PoiInfo& data, Parcel& parcel);
295     static PoiInfo ReadPoiInfoFromParcel(Parcel& parcel);
296 private:
297     double latitude_;
298     double longitude_;
299     double altitude_;
300     double accuracy_;
301     double speed_;
302     double direction_;
303     int64_t timeStamp_;
304     int64_t timeSinceBoot_;
305     std::vector<std::string> additions_;
306     int64_t additionSize_;
307     bool isFromMock_;
308     int32_t isSystemApp_;
309     int32_t floorNo_;
310     double floorAccuracy_;
311     std::map<std::string, std::string> additionsMap_;
312     double altitudeAccuracy_;
313     double speedAccuracy_;
314     double directionAccuracy_;
315     int64_t uncertaintyOfTimeSinceBoot_;
316     int32_t locationSourceType_;
317     std::string uuid_;
318     int32_t fieldValidity_;
319     PoiInfo poiInfo_;
320 };
321 } // namespace Location
322 } // namespace OHOS
323 #endif // LOCATION_H