* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef LOCATOR_H
#define LOCATOR_H
#include <list>
#include <vector>
#include "iremote_object.h"
#include "constant_definition.h"
#include "country_code.h"
#include "geo_address.h"
#include "geocoding_mock_info.h"
#include "i_cached_locations_callback.h"
#include "i_locator_callback.h"
#include "location.h"
#include "locator_impl.h"
#include "request_config.h"
namespace OHOS {
namespace Location {
class Locator {
public:
static std::shared_ptr<LocatorImpl> GetInstance();
virtual ~Locator();
virtual bool IsLocationEnabled() = 0;
virtual void RequestEnableLocation() = 0;
virtual void EnableAbility(bool enable) = 0;
virtual void StartLocating(std::unique_ptr<RequestConfig>& requestConfig,
sptr<ILocatorCallback>& callback) = 0;
virtual void StopLocating(sptr<ILocatorCallback>& callback) = 0;
virtual std::unique_ptr<Location> GetCachedLocation() = 0;
virtual bool RegisterSwitchCallback(const sptr<IRemoteObject>& callback, pid_t uid) = 0;
virtual bool UnregisterSwitchCallback(const sptr<IRemoteObject>& callback) = 0;
virtual void ShowNotification() = 0;
virtual void RequestPermission() = 0;
virtual bool IsGeoServiceAvailable() = 0;
virtual void GetAddressByCoordinate(MessageParcel &data, std::list<std::shared_ptr<GeoAddress>>& replyList) = 0;
virtual void GetAddressByLocationName(MessageParcel &data, std::list<std::shared_ptr<GeoAddress>>& replyList) = 0;
virtual bool IsLocationPrivacyConfirmed(const int type) = 0;
virtual int SetLocationPrivacyConfirmStatus(const int type, bool isConfirmed) = 0;
virtual bool RegisterGnssStatusCallback(const sptr<IRemoteObject>& callback, pid_t uid) = 0;
virtual bool UnregisterGnssStatusCallback(const sptr<IRemoteObject>& callback) = 0;
virtual bool RegisterNmeaMessageCallback(const sptr<IRemoteObject>& callback, pid_t uid) = 0;
virtual bool UnregisterNmeaMessageCallback(const sptr<IRemoteObject>& callback) = 0;
virtual bool RegisterCountryCodeCallback(const sptr<IRemoteObject>& callback, pid_t uid) = 0;
virtual bool UnregisterCountryCodeCallback(const sptr<IRemoteObject>& callback) = 0;
virtual void RegisterCachedLocationCallback(std::unique_ptr<CachedGnssLocationsRequest>& request,
sptr<ICachedLocationsCallback>& callback) = 0;
virtual void UnregisterCachedLocationCallback(sptr<ICachedLocationsCallback>& callback) = 0;
virtual int GetCachedGnssLocationsSize() = 0;
virtual int FlushCachedGnssLocations() = 0;
virtual bool SendCommand(std::unique_ptr<LocationCommand>& commands) = 0;
virtual bool EnableReverseGeocodingMock() = 0;
virtual bool DisableReverseGeocodingMock() = 0;
virtual bool SetReverseGeocodingMockInfo(std::vector<std::shared_ptr<GeocodingMockInfo>>& mockInfo) = 0;
virtual std::shared_ptr<CountryCode> GetIsoCountryCode() = 0;
virtual bool EnableLocationMock() = 0;
virtual bool DisableLocationMock() = 0;
virtual bool SetMockedLocations(
const int timeInterval, const std::vector<std::shared_ptr<Location>> &location) = 0;
virtual LocationErrCode IsLocationEnabledV9(bool &isEnabled) = 0;
virtual LocationErrCode EnableAbilityV9(bool enable) = 0;
virtual LocationErrCode StartLocatingV9(std::unique_ptr<RequestConfig>& requestConfig,
sptr<ILocatorCallback>& callback) = 0;
virtual LocationErrCode StopLocatingV9(sptr<ILocatorCallback>& callback) = 0;
virtual LocationErrCode GetCachedLocationV9(std::unique_ptr<Location> &loc) = 0;
virtual LocationErrCode RegisterSwitchCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode UnregisterSwitchCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode IsGeoServiceAvailableV9(bool &isAvailable) = 0;
virtual LocationErrCode GetAddressByCoordinateV9(MessageParcel &data,
std::list<std::shared_ptr<GeoAddress>>& replyList) = 0;
virtual LocationErrCode GetAddressByLocationNameV9(MessageParcel &data,
std::list<std::shared_ptr<GeoAddress>>& replyList) = 0;
virtual LocationErrCode IsLocationPrivacyConfirmedV9(const int type, bool &isConfirmed) = 0;
virtual LocationErrCode SetLocationPrivacyConfirmStatusV9(const int type, bool isConfirmed) = 0;
virtual LocationErrCode RegisterGnssStatusCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode UnregisterGnssStatusCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode RegisterNmeaMessageCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode UnregisterNmeaMessageCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode RegisterCountryCodeCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode UnregisterCountryCodeCallbackV9(const sptr<IRemoteObject>& callback) = 0;
virtual LocationErrCode RegisterCachedLocationCallbackV9(std::unique_ptr<CachedGnssLocationsRequest>& request,
sptr<ICachedLocationsCallback>& callback) = 0;
virtual LocationErrCode UnregisterCachedLocationCallbackV9(sptr<ICachedLocationsCallback>& callback) = 0;
virtual LocationErrCode GetCachedGnssLocationsSizeV9(int &size) = 0;
virtual LocationErrCode FlushCachedGnssLocationsV9() = 0;
virtual LocationErrCode SendCommandV9(std::unique_ptr<LocationCommand>& commands) = 0;
virtual LocationErrCode EnableReverseGeocodingMockV9() = 0;
virtual LocationErrCode DisableReverseGeocodingMockV9() = 0;
virtual LocationErrCode SetReverseGeocodingMockInfoV9(
std::vector<std::shared_ptr<GeocodingMockInfo>>& mockInfo) = 0;
virtual LocationErrCode GetIsoCountryCodeV9(std::shared_ptr<CountryCode>& countryCode) = 0;
virtual LocationErrCode EnableLocationMockV9() = 0;
virtual LocationErrCode DisableLocationMockV9() = 0;
virtual LocationErrCode SetMockedLocationsV9(
const int timeInterval, const std::vector<std::shared_ptr<Location>> &location) = 0;
virtual LocationErrCode ProxyForFreeze(std::set<int> pidList, bool isProxy) = 0;
virtual LocationErrCode ResetAllProxy() = 0;
virtual LocationErrCode IsGnssServiceSupported(bool &isSupported) = 0;
virtual LocationErrCode IsGnssFenceServiceSupported(bool &isSupported) = 0;
virtual LocationErrCode IsCachedGnssServiceSupported(bool &isSupported) = 0;
private:
static std::shared_ptr<LocatorImpl> instance_;
static std::mutex mutex_;
};
}
}
#endif