15c735df2Sopenharmony_ci/* 25c735df2Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 35c735df2Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 45c735df2Sopenharmony_ci * you may not use this file except in compliance with the License. 55c735df2Sopenharmony_ci * You may obtain a copy of the License at 65c735df2Sopenharmony_ci * 75c735df2Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 85c735df2Sopenharmony_ci * 95c735df2Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 105c735df2Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 115c735df2Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 125c735df2Sopenharmony_ci * See the License for the specific language governing permissions and 135c735df2Sopenharmony_ci * limitations under the License. 145c735df2Sopenharmony_ci */ 155c735df2Sopenharmony_ci 165c735df2Sopenharmony_ci#ifndef LOCATION_H 175c735df2Sopenharmony_ci#define LOCATION_H 185c735df2Sopenharmony_ci 195c735df2Sopenharmony_ci#include <parcel.h> 205c735df2Sopenharmony_ci#include <string> 215c735df2Sopenharmony_ci#include <map> 225c735df2Sopenharmony_ci 235c735df2Sopenharmony_cinamespace OHOS { 245c735df2Sopenharmony_cinamespace Location { 255c735df2Sopenharmony_ciclass Location : public Parcelable { 265c735df2Sopenharmony_cipublic: 275c735df2Sopenharmony_ci Location(); 285c735df2Sopenharmony_ci explicit Location(Location &location); 295c735df2Sopenharmony_ci ~Location() override = default; 305c735df2Sopenharmony_ci 315c735df2Sopenharmony_ci inline double GetLatitude() const 325c735df2Sopenharmony_ci { 335c735df2Sopenharmony_ci return latitude_; 345c735df2Sopenharmony_ci } 355c735df2Sopenharmony_ci 365c735df2Sopenharmony_ci inline void SetLatitude(double latitude) 375c735df2Sopenharmony_ci { 385c735df2Sopenharmony_ci latitude_ = latitude; 395c735df2Sopenharmony_ci } 405c735df2Sopenharmony_ci 415c735df2Sopenharmony_ci inline double GetLongitude() const 425c735df2Sopenharmony_ci { 435c735df2Sopenharmony_ci return longitude_; 445c735df2Sopenharmony_ci } 455c735df2Sopenharmony_ci 465c735df2Sopenharmony_ci inline void SetLongitude(double longitude) 475c735df2Sopenharmony_ci { 485c735df2Sopenharmony_ci longitude_ = longitude; 495c735df2Sopenharmony_ci } 505c735df2Sopenharmony_ci 515c735df2Sopenharmony_ci inline double GetAltitude() const 525c735df2Sopenharmony_ci { 535c735df2Sopenharmony_ci return altitude_; 545c735df2Sopenharmony_ci } 555c735df2Sopenharmony_ci 565c735df2Sopenharmony_ci inline void SetAltitude(double altitude) 575c735df2Sopenharmony_ci { 585c735df2Sopenharmony_ci altitude_ = altitude; 595c735df2Sopenharmony_ci } 605c735df2Sopenharmony_ci 615c735df2Sopenharmony_ci inline double GetAccuracy() const 625c735df2Sopenharmony_ci { 635c735df2Sopenharmony_ci return accuracy_; 645c735df2Sopenharmony_ci } 655c735df2Sopenharmony_ci 665c735df2Sopenharmony_ci inline void SetAccuracy(double accuracy) 675c735df2Sopenharmony_ci { 685c735df2Sopenharmony_ci accuracy_ = accuracy; 695c735df2Sopenharmony_ci } 705c735df2Sopenharmony_ci 715c735df2Sopenharmony_ci inline double GetSpeed() const 725c735df2Sopenharmony_ci { 735c735df2Sopenharmony_ci return speed_; 745c735df2Sopenharmony_ci } 755c735df2Sopenharmony_ci 765c735df2Sopenharmony_ci inline void SetSpeed(double speed) 775c735df2Sopenharmony_ci { 785c735df2Sopenharmony_ci speed_ = speed; 795c735df2Sopenharmony_ci } 805c735df2Sopenharmony_ci 815c735df2Sopenharmony_ci inline double GetDirection() const 825c735df2Sopenharmony_ci { 835c735df2Sopenharmony_ci return direction_; 845c735df2Sopenharmony_ci } 855c735df2Sopenharmony_ci 865c735df2Sopenharmony_ci inline void SetDirection(double direction) 875c735df2Sopenharmony_ci { 885c735df2Sopenharmony_ci direction_ = direction; 895c735df2Sopenharmony_ci } 905c735df2Sopenharmony_ci 915c735df2Sopenharmony_ci inline int64_t GetTimeStamp() const 925c735df2Sopenharmony_ci { 935c735df2Sopenharmony_ci return timeStamp_; 945c735df2Sopenharmony_ci } 955c735df2Sopenharmony_ci 965c735df2Sopenharmony_ci inline void SetTimeStamp(int64_t timeStamp) 975c735df2Sopenharmony_ci { 985c735df2Sopenharmony_ci timeStamp_ = timeStamp; 995c735df2Sopenharmony_ci } 1005c735df2Sopenharmony_ci 1015c735df2Sopenharmony_ci inline int64_t GetTimeSinceBoot() const 1025c735df2Sopenharmony_ci { 1035c735df2Sopenharmony_ci return timeSinceBoot_; 1045c735df2Sopenharmony_ci } 1055c735df2Sopenharmony_ci 1065c735df2Sopenharmony_ci inline void SetTimeSinceBoot(int64_t timeStamp) 1075c735df2Sopenharmony_ci { 1085c735df2Sopenharmony_ci timeSinceBoot_ = timeStamp; 1095c735df2Sopenharmony_ci } 1105c735df2Sopenharmony_ci 1115c735df2Sopenharmony_ci inline std::vector<std::string> GetAdditions() const 1125c735df2Sopenharmony_ci { 1135c735df2Sopenharmony_ci return additions_; 1145c735df2Sopenharmony_ci } 1155c735df2Sopenharmony_ci 1165c735df2Sopenharmony_ci inline void SetAdditions(std::vector<std::string> additions, bool ifAppend) 1175c735df2Sopenharmony_ci { 1185c735df2Sopenharmony_ci if (!ifAppend) { 1195c735df2Sopenharmony_ci std::vector<std::string>().swap(additions_); 1205c735df2Sopenharmony_ci } 1215c735df2Sopenharmony_ci for (auto it = additions.begin(); it != additions.end(); ++it) { 1225c735df2Sopenharmony_ci additions_.push_back(*it); 1235c735df2Sopenharmony_ci } 1245c735df2Sopenharmony_ci } 1255c735df2Sopenharmony_ci 1265c735df2Sopenharmony_ci inline int64_t GetAdditionSize() const 1275c735df2Sopenharmony_ci { 1285c735df2Sopenharmony_ci return additionSize_; 1295c735df2Sopenharmony_ci } 1305c735df2Sopenharmony_ci 1315c735df2Sopenharmony_ci inline void SetAdditionSize(int64_t size) 1325c735df2Sopenharmony_ci { 1335c735df2Sopenharmony_ci additionSize_ = size; 1345c735df2Sopenharmony_ci } 1355c735df2Sopenharmony_ci 1365c735df2Sopenharmony_ci inline int GetIsFromMock() const 1375c735df2Sopenharmony_ci { 1385c735df2Sopenharmony_ci return isFromMock_; 1395c735df2Sopenharmony_ci } 1405c735df2Sopenharmony_ci 1415c735df2Sopenharmony_ci inline void SetIsFromMock(int fromMock) 1425c735df2Sopenharmony_ci { 1435c735df2Sopenharmony_ci isFromMock_ = fromMock; 1445c735df2Sopenharmony_ci } 1455c735df2Sopenharmony_ci 1465c735df2Sopenharmony_ci inline int32_t GetFloorNo() const 1475c735df2Sopenharmony_ci { 1485c735df2Sopenharmony_ci return floorNo_; 1495c735df2Sopenharmony_ci } 1505c735df2Sopenharmony_ci 1515c735df2Sopenharmony_ci inline void SetFloorNo(int32_t floorNo) 1525c735df2Sopenharmony_ci { 1535c735df2Sopenharmony_ci floorNo_ = floorNo; 1545c735df2Sopenharmony_ci } 1555c735df2Sopenharmony_ci 1565c735df2Sopenharmony_ci inline int32_t GetIsSystemApp() const 1575c735df2Sopenharmony_ci { 1585c735df2Sopenharmony_ci return isSystemApp_; 1595c735df2Sopenharmony_ci } 1605c735df2Sopenharmony_ci 1615c735df2Sopenharmony_ci inline void SetIsSystemApp(int32_t isSystemApp) 1625c735df2Sopenharmony_ci { 1635c735df2Sopenharmony_ci isSystemApp_ = isSystemApp; 1645c735df2Sopenharmony_ci } 1655c735df2Sopenharmony_ci 1665c735df2Sopenharmony_ci inline int32_t GetUncertaintyOfTimeSinceBoot() const 1675c735df2Sopenharmony_ci { 1685c735df2Sopenharmony_ci return uncertaintyOfTimeSinceBoot_; 1695c735df2Sopenharmony_ci } 1705c735df2Sopenharmony_ci 1715c735df2Sopenharmony_ci inline void SetUncertaintyOfTimeSinceBoot(int32_t uncertaintyOfTimeSinceBoot) 1725c735df2Sopenharmony_ci { 1735c735df2Sopenharmony_ci uncertaintyOfTimeSinceBoot_ = uncertaintyOfTimeSinceBoot; 1745c735df2Sopenharmony_ci } 1755c735df2Sopenharmony_ci 1765c735df2Sopenharmony_ci inline double GetFloorAccuracy() const 1775c735df2Sopenharmony_ci { 1785c735df2Sopenharmony_ci return floorAccuracy_; 1795c735df2Sopenharmony_ci } 1805c735df2Sopenharmony_ci 1815c735df2Sopenharmony_ci inline void SetFloorAccuracy(double floorAccuracy) 1825c735df2Sopenharmony_ci { 1835c735df2Sopenharmony_ci floorAccuracy_ = floorAccuracy; 1845c735df2Sopenharmony_ci } 1855c735df2Sopenharmony_ci 1865c735df2Sopenharmony_ci inline double GetAltitudeAccuracy() const 1875c735df2Sopenharmony_ci { 1885c735df2Sopenharmony_ci return altitudeAccuracy_; 1895c735df2Sopenharmony_ci } 1905c735df2Sopenharmony_ci 1915c735df2Sopenharmony_ci inline void SetAltitudeAccuracy(double altitudeAccuracy) 1925c735df2Sopenharmony_ci { 1935c735df2Sopenharmony_ci altitudeAccuracy_ = altitudeAccuracy; 1945c735df2Sopenharmony_ci } 1955c735df2Sopenharmony_ci 1965c735df2Sopenharmony_ci inline double GetSpeedAccuracy() const 1975c735df2Sopenharmony_ci { 1985c735df2Sopenharmony_ci return speedAccuracy_; 1995c735df2Sopenharmony_ci } 2005c735df2Sopenharmony_ci 2015c735df2Sopenharmony_ci inline void SetSpeedAccuracy(double speedAccuracy) 2025c735df2Sopenharmony_ci { 2035c735df2Sopenharmony_ci speedAccuracy_ = speedAccuracy; 2045c735df2Sopenharmony_ci } 2055c735df2Sopenharmony_ci 2065c735df2Sopenharmony_ci inline double GetDirectionAccuracy() const 2075c735df2Sopenharmony_ci { 2085c735df2Sopenharmony_ci return directionAccuracy_; 2095c735df2Sopenharmony_ci } 2105c735df2Sopenharmony_ci 2115c735df2Sopenharmony_ci inline void SetDirectionAccuracy(double directionAccuracy) 2125c735df2Sopenharmony_ci { 2135c735df2Sopenharmony_ci directionAccuracy_ = directionAccuracy; 2145c735df2Sopenharmony_ci } 2155c735df2Sopenharmony_ci 2165c735df2Sopenharmony_ci inline int32_t GetLocationSourceType() const 2175c735df2Sopenharmony_ci { 2185c735df2Sopenharmony_ci return locationSourceType_; 2195c735df2Sopenharmony_ci } 2205c735df2Sopenharmony_ci 2215c735df2Sopenharmony_ci inline void SetLocationSourceType(int32_t locationSourceType) 2225c735df2Sopenharmony_ci { 2235c735df2Sopenharmony_ci locationSourceType_ = locationSourceType; 2245c735df2Sopenharmony_ci } 2255c735df2Sopenharmony_ci 2265c735df2Sopenharmony_ci inline std::string GetUuid() const 2275c735df2Sopenharmony_ci { 2285c735df2Sopenharmony_ci return uuid_; 2295c735df2Sopenharmony_ci } 2305c735df2Sopenharmony_ci 2315c735df2Sopenharmony_ci inline void SetUuid(std::string uuid) 2325c735df2Sopenharmony_ci { 2335c735df2Sopenharmony_ci uuid_ = uuid; 2345c735df2Sopenharmony_ci } 2355c735df2Sopenharmony_ci 2365c735df2Sopenharmony_ci inline std::map<std::string, std::string> GetAdditionsMap() const 2375c735df2Sopenharmony_ci { 2385c735df2Sopenharmony_ci return additionsMap_; 2395c735df2Sopenharmony_ci } 2405c735df2Sopenharmony_ci 2415c735df2Sopenharmony_ci inline int32_t GetFieldValidity() const 2425c735df2Sopenharmony_ci { 2435c735df2Sopenharmony_ci return fieldValidity_; 2445c735df2Sopenharmony_ci } 2455c735df2Sopenharmony_ci 2465c735df2Sopenharmony_ci inline void SetFieldValidity(int32_t fieldValidity) 2475c735df2Sopenharmony_ci { 2485c735df2Sopenharmony_ci fieldValidity_ = fieldValidity; 2495c735df2Sopenharmony_ci } 2505c735df2Sopenharmony_ci 2515c735df2Sopenharmony_ci void ReadFromParcel(Parcel& parcel); 2525c735df2Sopenharmony_ci bool Marshalling(Parcel& parcel) const override; 2535c735df2Sopenharmony_ci std::string ToString() const; 2545c735df2Sopenharmony_ci static std::unique_ptr<Location> Unmarshalling(Parcel& parcel); 2555c735df2Sopenharmony_ci static std::shared_ptr<Location> UnmarshallingShared(Parcel& parcel); 2565c735df2Sopenharmony_ci bool LocationEqual(const std::unique_ptr<Location>& location); 2575c735df2Sopenharmony_ci bool AdditionEqual(const std::unique_ptr<Location>& location); 2585c735df2Sopenharmony_ci void VectorString16ToVectorString8(const std::vector<std::u16string>& additions); 2595c735df2Sopenharmony_ci std::vector<std::u16string> VectorString8ToVectorString16() const; 2605c735df2Sopenharmony_ciprivate: 2615c735df2Sopenharmony_ci double latitude_; 2625c735df2Sopenharmony_ci double longitude_; 2635c735df2Sopenharmony_ci double altitude_; 2645c735df2Sopenharmony_ci double accuracy_; 2655c735df2Sopenharmony_ci double speed_; 2665c735df2Sopenharmony_ci double direction_; 2675c735df2Sopenharmony_ci int64_t timeStamp_; 2685c735df2Sopenharmony_ci int64_t timeSinceBoot_; 2695c735df2Sopenharmony_ci std::vector<std::string> additions_; 2705c735df2Sopenharmony_ci int64_t additionSize_; 2715c735df2Sopenharmony_ci bool isFromMock_; 2725c735df2Sopenharmony_ci int32_t isSystemApp_; 2735c735df2Sopenharmony_ci int32_t floorNo_; 2745c735df2Sopenharmony_ci double floorAccuracy_; 2755c735df2Sopenharmony_ci std::map<std::string, std::string> additionsMap_; 2765c735df2Sopenharmony_ci double altitudeAccuracy_; 2775c735df2Sopenharmony_ci double speedAccuracy_; 2785c735df2Sopenharmony_ci double directionAccuracy_; 2795c735df2Sopenharmony_ci int64_t uncertaintyOfTimeSinceBoot_; 2805c735df2Sopenharmony_ci int32_t locationSourceType_; 2815c735df2Sopenharmony_ci std::string uuid_; 2825c735df2Sopenharmony_ci int32_t fieldValidity_; 2835c735df2Sopenharmony_ci}; 2845c735df2Sopenharmony_ci} // namespace Location 2855c735df2Sopenharmony_ci} // namespace OHOS 2865c735df2Sopenharmony_ci#endif // LOCATION_H