10826e83eSopenharmony_ci/* 20826e83eSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 30826e83eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40826e83eSopenharmony_ci * you may not use this file except in compliance with the License. 50826e83eSopenharmony_ci * You may obtain a copy of the License at 60826e83eSopenharmony_ci * 70826e83eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80826e83eSopenharmony_ci * 90826e83eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100826e83eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110826e83eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120826e83eSopenharmony_ci * See the License for the specific language governing permissions and 130826e83eSopenharmony_ci * limitations under the License. 140826e83eSopenharmony_ci */ 150826e83eSopenharmony_ci 160826e83eSopenharmony_ci#ifndef LOCATION_ADAPTER_H 170826e83eSopenharmony_ci#define LOCATION_ADAPTER_H 180826e83eSopenharmony_ci 190826e83eSopenharmony_ci#include <cstdint> 200826e83eSopenharmony_ci#include <memory> 210826e83eSopenharmony_ci#include <sys/types.h> 220826e83eSopenharmony_ci 230826e83eSopenharmony_cinamespace OHOS::NWeb { 240826e83eSopenharmony_ci 250826e83eSopenharmony_ciclass LocationRequestConfig { 260826e83eSopenharmony_cipublic: 270826e83eSopenharmony_ci enum Priority { 280826e83eSopenharmony_ci PRIORITY_UNSET = 0, 290826e83eSopenharmony_ci PRIORITY_ACCURACY, 300826e83eSopenharmony_ci PRIORITY_LOW_POWER, 310826e83eSopenharmony_ci PRIORITY_FAST_FIRST_FIX, 320826e83eSopenharmony_ci }; 330826e83eSopenharmony_ci 340826e83eSopenharmony_ci enum Scenario { 350826e83eSopenharmony_ci UNSET = 0, 360826e83eSopenharmony_ci NAVIGATION, 370826e83eSopenharmony_ci TRAJECTORY_TRACKING, 380826e83eSopenharmony_ci CAR_HAILING, 390826e83eSopenharmony_ci DAILY_LIFE_SERVICE, 400826e83eSopenharmony_ci NO_POWER, 410826e83eSopenharmony_ci }; 420826e83eSopenharmony_ci 430826e83eSopenharmony_ci LocationRequestConfig() = default; 440826e83eSopenharmony_ci 450826e83eSopenharmony_ci virtual ~LocationRequestConfig() = default; 460826e83eSopenharmony_ci 470826e83eSopenharmony_ci virtual void SetScenario(int32_t scenario) = 0; 480826e83eSopenharmony_ci 490826e83eSopenharmony_ci virtual void SetFixNumber(int32_t number) = 0; 500826e83eSopenharmony_ci 510826e83eSopenharmony_ci virtual void SetMaxAccuracy(int32_t maxAccuary) = 0; 520826e83eSopenharmony_ci 530826e83eSopenharmony_ci virtual void SetDistanceInterval(int32_t disInterval) = 0; 540826e83eSopenharmony_ci 550826e83eSopenharmony_ci virtual void SetTimeInterval(int32_t timeInterval) = 0; 560826e83eSopenharmony_ci 570826e83eSopenharmony_ci virtual void SetPriority(int32_t priority) = 0; 580826e83eSopenharmony_ci}; 590826e83eSopenharmony_ci 600826e83eSopenharmony_ciclass LocationInfo { 610826e83eSopenharmony_cipublic: 620826e83eSopenharmony_ci LocationInfo() = default; 630826e83eSopenharmony_ci 640826e83eSopenharmony_ci virtual ~LocationInfo() = default; 650826e83eSopenharmony_ci 660826e83eSopenharmony_ci virtual double GetLatitude() = 0; 670826e83eSopenharmony_ci 680826e83eSopenharmony_ci virtual double GetLongitude() = 0; 690826e83eSopenharmony_ci 700826e83eSopenharmony_ci virtual double GetAltitude() = 0; 710826e83eSopenharmony_ci 720826e83eSopenharmony_ci virtual float GetAccuracy() = 0; 730826e83eSopenharmony_ci 740826e83eSopenharmony_ci virtual float GetSpeed() = 0; 750826e83eSopenharmony_ci 760826e83eSopenharmony_ci virtual double GetDirection() = 0; 770826e83eSopenharmony_ci 780826e83eSopenharmony_ci virtual int64_t GetTimeStamp() = 0; 790826e83eSopenharmony_ci 800826e83eSopenharmony_ci virtual int64_t GetTimeSinceBoot() = 0; 810826e83eSopenharmony_ci 820826e83eSopenharmony_ci virtual std::vector<std::string> GetAdditions() = 0; 830826e83eSopenharmony_ci}; 840826e83eSopenharmony_ci 850826e83eSopenharmony_ciclass LocationCallbackAdapter { 860826e83eSopenharmony_cipublic: 870826e83eSopenharmony_ci LocationCallbackAdapter() = default; 880826e83eSopenharmony_ci 890826e83eSopenharmony_ci virtual ~LocationCallbackAdapter() = default; 900826e83eSopenharmony_ci 910826e83eSopenharmony_ci virtual void OnLocationReport(const std::shared_ptr<LocationInfo> location) = 0; 920826e83eSopenharmony_ci 930826e83eSopenharmony_ci virtual void OnLocatingStatusChange(const int status) = 0; 940826e83eSopenharmony_ci 950826e83eSopenharmony_ci virtual void OnErrorReport(const int errorCode) = 0; 960826e83eSopenharmony_ci}; 970826e83eSopenharmony_ci 980826e83eSopenharmony_ciclass LocationProxyAdapter { 990826e83eSopenharmony_cipublic: 1000826e83eSopenharmony_ci LocationProxyAdapter() = default; 1010826e83eSopenharmony_ci 1020826e83eSopenharmony_ci virtual ~LocationProxyAdapter() = default; 1030826e83eSopenharmony_ci 1040826e83eSopenharmony_ci virtual int32_t StartLocating( 1050826e83eSopenharmony_ci std::shared_ptr<LocationRequestConfig> requestConfig, std::shared_ptr<LocationCallbackAdapter> callback) = 0; 1060826e83eSopenharmony_ci 1070826e83eSopenharmony_ci virtual bool StopLocating(int32_t callbackId) = 0; 1080826e83eSopenharmony_ci 1090826e83eSopenharmony_ci virtual bool EnableAbility(bool isEnabled) = 0; 1100826e83eSopenharmony_ci 1110826e83eSopenharmony_ci virtual bool IsLocationEnabled() = 0; 1120826e83eSopenharmony_ci}; 1130826e83eSopenharmony_ci 1140826e83eSopenharmony_ciclass LocationInstance { 1150826e83eSopenharmony_cipublic: 1160826e83eSopenharmony_ci static LocationInstance& GetInstance(); 1170826e83eSopenharmony_ci 1180826e83eSopenharmony_ci virtual ~LocationInstance() = default; 1190826e83eSopenharmony_ci 1200826e83eSopenharmony_ci virtual std::shared_ptr<LocationProxyAdapter> CreateLocationProxyAdapter() = 0; 1210826e83eSopenharmony_ci 1220826e83eSopenharmony_ci virtual std::shared_ptr<LocationRequestConfig> CreateLocationRequestConfig() = 0; 1230826e83eSopenharmony_ci}; 1240826e83eSopenharmony_ci 1250826e83eSopenharmony_ci} // namespace OHOS::NWeb 1260826e83eSopenharmony_ci 1270826e83eSopenharmony_ci#endif 128