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 class Location : public Parcelable { 26 public: 27 Location(); 28 explicit Location(Location &location); 29 ~Location() override = default; 30 GetLatitude()31 inline double GetLatitude() const 32 { 33 return latitude_; 34 } 35 SetLatitude(double latitude)36 inline void SetLatitude(double latitude) 37 { 38 latitude_ = latitude; 39 } 40 GetLongitude()41 inline double GetLongitude() const 42 { 43 return longitude_; 44 } 45 SetLongitude(double longitude)46 inline void SetLongitude(double longitude) 47 { 48 longitude_ = longitude; 49 } 50 GetAltitude()51 inline double GetAltitude() const 52 { 53 return altitude_; 54 } 55 SetAltitude(double altitude)56 inline void SetAltitude(double altitude) 57 { 58 altitude_ = altitude; 59 } 60 GetAccuracy()61 inline double GetAccuracy() const 62 { 63 return accuracy_; 64 } 65 SetAccuracy(double accuracy)66 inline void SetAccuracy(double accuracy) 67 { 68 accuracy_ = accuracy; 69 } 70 GetSpeed()71 inline double GetSpeed() const 72 { 73 return speed_; 74 } 75 SetSpeed(double speed)76 inline void SetSpeed(double speed) 77 { 78 speed_ = speed; 79 } 80 GetDirection()81 inline double GetDirection() const 82 { 83 return direction_; 84 } 85 SetDirection(double direction)86 inline void SetDirection(double direction) 87 { 88 direction_ = direction; 89 } 90 GetTimeStamp()91 inline int64_t GetTimeStamp() const 92 { 93 return timeStamp_; 94 } 95 SetTimeStamp(int64_t timeStamp)96 inline void SetTimeStamp(int64_t timeStamp) 97 { 98 timeStamp_ = timeStamp; 99 } 100 GetTimeSinceBoot()101 inline int64_t GetTimeSinceBoot() const 102 { 103 return timeSinceBoot_; 104 } 105 SetTimeSinceBoot(int64_t timeStamp)106 inline void SetTimeSinceBoot(int64_t timeStamp) 107 { 108 timeSinceBoot_ = timeStamp; 109 } 110 GetAdditions()111 inline std::vector<std::string> GetAdditions() const 112 { 113 return additions_; 114 } 115 SetAdditions(std::vector<std::string> additions,bool ifAppend)116 inline void SetAdditions(std::vector<std::string> additions, bool ifAppend) 117 { 118 if (!ifAppend) { 119 additions_.clear(); 120 } 121 for (auto it = additions.begin(); it != additions.end(); ++it) { 122 additions_.push_back(*it); 123 } 124 } 125 GetAdditionSize()126 inline int64_t GetAdditionSize() const 127 { 128 return additionSize_; 129 } 130 SetAdditionSize(int64_t size)131 inline void SetAdditionSize(int64_t size) 132 { 133 additionSize_ = size; 134 } 135 GetIsFromMock()136 inline int GetIsFromMock() const 137 { 138 return isFromMock_; 139 } 140 SetIsFromMock(int fromMock)141 inline void SetIsFromMock(int fromMock) 142 { 143 isFromMock_ = fromMock; 144 } 145 GetFloorNo()146 inline int32_t GetFloorNo() const 147 { 148 return floorNo_; 149 } 150 SetFloorNo(int32_t floorNo)151 inline void SetFloorNo(int32_t floorNo) 152 { 153 floorNo_ = floorNo; 154 } 155 GetIsSystemApp()156 inline int32_t GetIsSystemApp() const 157 { 158 return isSystemApp_; 159 } 160 SetIsSystemApp(int32_t isSystemApp)161 inline void SetIsSystemApp(int32_t isSystemApp) 162 { 163 isSystemApp_ = isSystemApp; 164 } 165 GetUncertaintyOfTimeSinceBoot()166 inline int32_t GetUncertaintyOfTimeSinceBoot() const 167 { 168 return uncertaintyOfTimeSinceBoot_; 169 } 170 SetUncertaintyOfTimeSinceBoot(int32_t uncertaintyOfTimeSinceBoot)171 inline void SetUncertaintyOfTimeSinceBoot(int32_t uncertaintyOfTimeSinceBoot) 172 { 173 uncertaintyOfTimeSinceBoot_ = uncertaintyOfTimeSinceBoot; 174 } 175 GetFloorAccuracy()176 inline double GetFloorAccuracy() const 177 { 178 return floorAccuracy_; 179 } 180 SetFloorAccuracy(double floorAccuracy)181 inline void SetFloorAccuracy(double floorAccuracy) 182 { 183 floorAccuracy_ = floorAccuracy; 184 } 185 GetAltitudeAccuracy()186 inline double GetAltitudeAccuracy() const 187 { 188 return altitudeAccuracy_; 189 } 190 SetAltitudeAccuracy(double altitudeAccuracy)191 inline void SetAltitudeAccuracy(double altitudeAccuracy) 192 { 193 altitudeAccuracy_ = altitudeAccuracy; 194 } 195 GetSpeedAccuracy()196 inline double GetSpeedAccuracy() const 197 { 198 return speedAccuracy_; 199 } 200 SetSpeedAccuracy(double speedAccuracy)201 inline void SetSpeedAccuracy(double speedAccuracy) 202 { 203 speedAccuracy_ = speedAccuracy; 204 } 205 GetDirectionAccuracy()206 inline double GetDirectionAccuracy() const 207 { 208 return directionAccuracy_; 209 } 210 SetDirectionAccuracy(double directionAccuracy)211 inline void SetDirectionAccuracy(double directionAccuracy) 212 { 213 directionAccuracy_ = directionAccuracy; 214 } 215 GetLocationSourceType()216 inline int32_t GetLocationSourceType() const 217 { 218 return locationSourceType_; 219 } 220 SetLocationSourceType(int32_t locationSourceType)221 inline void SetLocationSourceType(int32_t locationSourceType) 222 { 223 locationSourceType_ = locationSourceType; 224 } 225 GetUuid()226 inline std::string GetUuid() const 227 { 228 return uuid_; 229 } 230 SetUuid(std::string uuid)231 inline void SetUuid(std::string uuid) 232 { 233 uuid_ = uuid; 234 } 235 GetAdditionsMap()236 inline std::map<std::string, std::string> GetAdditionsMap() const 237 { 238 return additionsMap_; 239 } 240 241 void ReadFromParcel(Parcel& parcel); 242 bool Marshalling(Parcel& parcel) const override; 243 std::string ToString() const; 244 static std::unique_ptr<Location> Unmarshalling(Parcel& parcel); 245 static std::shared_ptr<Location> UnmarshallingShared(Parcel& parcel); 246 bool LocationEqual(const std::unique_ptr<Location>& location); 247 bool AdditionEqual(const std::unique_ptr<Location>& location); 248 void VectorString16ToVectorString8(const std::vector<std::u16string>& additions); 249 std::vector<std::u16string> VectorString8ToVectorString16() const; 250 private: 251 double latitude_; 252 double longitude_; 253 double altitude_; 254 double accuracy_; 255 double speed_; 256 double direction_; 257 int64_t timeStamp_; 258 int64_t timeSinceBoot_; 259 std::vector<std::string> additions_; 260 int64_t additionSize_; 261 bool isFromMock_; 262 int32_t isSystemApp_; 263 int32_t floorNo_; 264 double floorAccuracy_; 265 std::map<std::string, std::string> additionsMap_; 266 double altitudeAccuracy_; 267 double speedAccuracy_; 268 double directionAccuracy_; 269 int64_t uncertaintyOfTimeSinceBoot_; 270 int32_t locationSourceType_; 271 std::string uuid_; 272 }; 273 } // namespace Location 274 } // namespace OHOS 275 #endif // LOCATION_H