1 /* 2 * Copyright (c) 2023 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_ADAPTER_H 17 #define LOCATION_ADAPTER_H 18 19 #include <cstdint> 20 #include <memory> 21 #include <sys/types.h> 22 23 namespace OHOS::NWeb { 24 class LocationRequestConfig { 25 public: 26 enum Priority { 27 PRIORITY_UNSET = 0, 28 PRIORITY_ACCURACY, 29 PRIORITY_LOW_POWER, 30 PRIORITY_FAST_FIRST_FIX, 31 }; 32 33 enum Scenario { 34 UNSET = 0, 35 NAVIGATION, 36 TRAJECTORY_TRACKING, 37 CAR_HAILING, 38 DAILY_LIFE_SERVICE, 39 NO_POWER, 40 }; 41 42 LocationRequestConfig() = default; 43 44 virtual ~LocationRequestConfig() = default; 45 46 virtual void SetScenario(int32_t scenario) = 0; 47 48 virtual void SetFixNumber(int32_t number) = 0; 49 50 virtual void SetMaxAccuracy(int32_t maxAccuary) = 0; 51 52 virtual void SetDistanceInterval(int32_t disInterval) = 0; 53 54 virtual void SetTimeInterval(int32_t timeInterval) = 0; 55 56 virtual void SetPriority(int32_t priority) = 0; 57 }; 58 59 class LocationInfo { 60 public: 61 LocationInfo() = default; 62 63 virtual ~LocationInfo() = default; 64 65 virtual double GetLatitude() const = 0; 66 67 virtual double GetLongitude() const = 0; 68 69 virtual double GetAltitude() const = 0; 70 71 virtual float GetAccuracy() const = 0; 72 73 virtual float GetSpeed() const = 0; 74 75 virtual double GetDirection() const = 0; 76 77 virtual int64_t GetTimeStamp() const = 0; 78 79 virtual int64_t GetTimeSinceBoot() const = 0; 80 81 virtual std::string GetAdditions() const = 0; 82 }; 83 84 class LocationCallbackAdapter { 85 public: 86 LocationCallbackAdapter() = default; 87 88 virtual ~LocationCallbackAdapter() = default; 89 90 virtual void OnLocationReport( 91 const std::unique_ptr<LocationInfo>& location) = 0; 92 93 virtual void OnLocatingStatusChange(const int status) = 0; 94 95 virtual void OnErrorReport(const int errorCode) = 0; 96 }; 97 98 class LocationProxyAdapter { 99 public: 100 LocationProxyAdapter() = default; 101 102 virtual ~LocationProxyAdapter() = default; 103 104 virtual bool StartLocating( 105 std::unique_ptr<LocationRequestConfig>& requestConfig, 106 std::shared_ptr<LocationCallbackAdapter> callback) = 0; 107 108 virtual bool StopLocating(std::shared_ptr<LocationCallbackAdapter> callback) = 0; 109 110 virtual bool EnableAbility(bool isEnabled) = 0; 111 112 virtual bool IsLocationEnabled() = 0; 113 }; 114 115 class LocationInstance { 116 public: 117 static LocationInstance& GetInstance(); 118 119 std::unique_ptr<LocationProxyAdapter> CreateLocationProxyAdapter(); 120 121 std::unique_ptr<LocationRequestConfig> CreateLocationRequestConfig(); 122 }; 123 } 124 125 #endif