123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- /* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /*
- Changes from Qualcomm Innovation Center are provided under the following license:
- Copyright (c) 2022, 2023 Qualcomm Innovation Center, Inc. All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted (subject to the limitations in the
- disclaimer below) provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
- NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
- GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
- HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef LOCATION_INTERFACE_H
- #define LOCATION_INTERFACE_H
- #include <LocationAPI.h>
- #include <gps_extended_c.h>
- #include <functional>
- /* Used for callback to deliver GNSS energy consumed */
- /** @fn
- @brief Used by query API that retrieves energy consumed by
- modem GNSS engine.
- @param gnssEnergyConsumedFromFirstBoot:
- Energy consumed by the GNSS engine since the first bootup
- in units of 0.1 milli watt seconds.
- A value of 0xffffffffffffffff indicates an invalid reading.
- */
- typedef std::function<void(
- uint64_t gnssEnergyConsumedFromFirstBoot
- )> GnssEnergyConsumedCallback;
- typedef void (*removeClientCompleteCallback)(LocationAPI* client);
- struct GnssInterface {
- size_t size;
- void (*initialize)(void);
- void (*deinitialize)(void);
- void (*addClient)(LocationAPI* client, const LocationCallbacks& callbacks);
- void (*removeClient)(LocationAPI* client, removeClientCompleteCallback rmClientCb);
- void (*requestCapabilities)(LocationAPI* client);
- uint32_t (*startTracking)(LocationAPI* client, TrackingOptions&);
- void (*updateTrackingOptions)(LocationAPI* client, uint32_t id, TrackingOptions&);
- void (*stopTracking)(LocationAPI* client, uint32_t id);
- void (*gnssNiResponse)(LocationAPI* client, uint32_t id, GnssNiResponse response);
- void (*setControlCallbacks)(LocationControlCallbacks& controlCallbacks);
- uint32_t (*enable)(LocationTechnologyType techType);
- void (*disable)(uint32_t id);
- uint32_t* (*gnssUpdateConfig)(const GnssConfig& config);
- uint32_t* (*gnssGetConfig)(GnssConfigFlagsMask config);
- void (*gnssUpdateSvTypeConfig)(GnssSvTypeConfig& config);
- void (*gnssGetSvTypeConfig)(GnssSvTypeConfigCallback& callback);
- void (*gnssResetSvTypeConfig)();
- uint32_t (*gnssDeleteAidingData)(GnssAidingData& data);
- void (*gnssUpdateXtraThrottle)(const bool enabled);
- void (*injectLocation)(double latitude, double longitude, float accuracy);
- void (*injectTime)(int64_t time, int64_t timeReference, int32_t uncertainty);
- void (*agpsInit)(const AgpsCbInfo& cbInfo);
- void (*agpsDataConnOpen)(AGpsExtType agpsType, const char* apnName, int apnLen, int ipType);
- void (*agpsDataConnClosed)(AGpsExtType agpsType);
- void (*agpsDataConnFailed)(AGpsExtType agpsType);
- void (*getDebugReport)(GnssDebugReport& report);
- void (*updateConnectionStatus)(bool connected, int8_t type, bool roaming,
- NetworkHandle networkHandle, std::string& apn);
- void (*odcpiInit)(const OdcpiRequestCallback& callback, OdcpiPrioritytype priority,
- OdcpiCallbackTypeMask typeMask);
- void (*deRegisterOdcpi)(OdcpiPrioritytype priority, OdcpiCallbackTypeMask typeMask);
- void (*odcpiInject)(const Location& location);
- void (*blockCPI)(double latitude, double longitude, float accuracy,
- int blockDurationMsec, double latLonDiffThreshold);
- void (*getGnssEnergyConsumed)(GnssEnergyConsumedCallback energyConsumedCb);
- void (*enableNfwLocationAccess)(std::vector<std::string>& enabledNfws);
- void (*nfwInit)(const NfwCbInfo& cbInfo);
- void (*getPowerStateChanges)(std::function<void(bool)> powerStateCb);
- void (*injectLocationExt)(const GnssLocationInfoNotification &locationInfo);
- void (*updateBatteryStatus)(bool charging);
- void (*updateSystemPowerState)(PowerStateType systemPowerState);
- uint32_t (*setConstrainedTunc) (bool enable, float tuncConstraint, uint32_t energyBudget);
- uint32_t (*setPositionAssistedClockEstimator) (bool enable);
- uint32_t (*gnssUpdateSvConfig)(const GnssSvTypeConfig& constellationEnablementConfig,
- const GnssSvIdConfig& blacklistSvConfig);
- uint32_t (*configLeverArm)(const LeverArmConfigInfo& configInfo);
- bool (*measCorrInit)(const measCorrSetCapabilitiesCb setCapabilitiesCb);
- bool (*measCorrSetCorrections)(const GnssMeasurementCorrections gnssMeasCorr);
- void (*measCorrClose)();
- uint32_t (*antennaInfoInit)(const antennaInfoCb antennaInfoCallback);
- void (*antennaInfoClose) ();
- uint32_t (*configRobustLocation)(bool enable, bool enableForE911);
- uint32_t (*configMinGpsWeek)(uint16_t minGpsWeek);
- uint32_t (*configDeadReckoningEngineParams)(const DeadReckoningEngineConfig& dreConfig);
- void (*updateNTRIPGGAConsent)(bool consentAccepted);
- void (*enablePPENtripStream)(const GnssNtripConnectionParams& params, bool enableRTKEngine);
- void (*disablePPENtripStream)();
- uint32_t (*gnssUpdateSecondaryBandConfig)(const GnssSvTypeConfig& secondaryBandConfig);
- uint32_t (*gnssGetSecondaryBandConfig)();
- void (*resetNetworkInfo)();
- uint32_t (*configEngineRunState)(PositioningEngineMask engType,
- LocEngineRunState engState);
- uint32_t (*configOutputNmeaTypes)(GnssNmeaTypesMask enabledNmeaTypes);
- void (*powerIndicationInit)(const powerIndicationCb powerIndicationCallback);
- void (*powerIndicationRequest)();
- void (*setAddressRequestCb)(std::function<void(const Location&)> addressRequestCb);
- void (*injectLocationAndAddr)(const Location& location, const GnssCivicAddress& addr);
- uint32_t (*setOptInStatus)(bool userConsent);
- };
- struct BatchingInterface {
- size_t size;
- void (*initialize)(void);
- void (*deinitialize)(void);
- void (*addClient)(LocationAPI* client, const LocationCallbacks& callbacks);
- void (*removeClient)(LocationAPI* client, removeClientCompleteCallback rmClientCb);
- void (*requestCapabilities)(LocationAPI* client);
- uint32_t (*startBatching)(LocationAPI* client, BatchingOptions&);
- void (*stopBatching)(LocationAPI* client, uint32_t id);
- void (*updateBatchingOptions)(LocationAPI* client, uint32_t id, BatchingOptions&);
- void (*getBatchedLocations)(LocationAPI* client, uint32_t id, size_t count);
- void (*updateSystemPowerState)(PowerStateType systemPowerState);
- };
- struct GeofenceInterface {
- size_t size;
- void (*initialize)(void);
- void (*deinitialize)(void);
- void (*addClient)(LocationAPI* client, const LocationCallbacks& callbacks);
- void (*removeClient)(LocationAPI* client, removeClientCompleteCallback rmClientCb);
- void (*requestCapabilities)(LocationAPI* client);
- uint32_t* (*addGeofences)(LocationAPI* client, size_t count, GeofenceOption*, GeofenceInfo*);
- void (*removeGeofences)(LocationAPI* client, size_t count, uint32_t* ids);
- void (*modifyGeofences)(LocationAPI* client, size_t count, uint32_t* ids,
- GeofenceOption* options);
- void (*pauseGeofences)(LocationAPI* client, size_t count, uint32_t* ids);
- void (*resumeGeofences)(LocationAPI* client, size_t count, uint32_t* ids);
- void (*updateSystemPowerState)(PowerStateType systemPowerState);
- };
- #endif /* LOCATION_INTERFACE_H */
|