sdm660-common: GPS: Update from LA.UM.11.2.1.r1-02500-sdm660.0
Signed-off-by: pix106 <sbordenave@gmail.com>
This commit is contained in:
parent
aa76e60586
commit
cb79a6f914
12 changed files with 471 additions and 45 deletions
|
@ -26,6 +26,43 @@
|
|||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
|
||||
Copyright (c) 2022 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.
|
||||
*/
|
||||
|
||||
#define LOG_NDEBUG 0
|
||||
#define LOG_TAG "LocSvc_BatchingAdapter"
|
||||
|
||||
|
@ -162,6 +199,41 @@ BatchingAdapter::updateClientsEventMask()
|
|||
updateEvtMask(mask, LOC_REGISTRATION_MASK_SET);
|
||||
}
|
||||
|
||||
void
|
||||
BatchingAdapter::handleEngineLockStatusEvent(EngineLockState engineLockState) {
|
||||
|
||||
LOC_LOGD("%s]: Old Engine state %d, New Engine state : %d,", __func__,
|
||||
mLocApi->getEngineLockState(), engineLockState);
|
||||
|
||||
struct MsgEngineLockStateEvent : public LocMsg {
|
||||
BatchingAdapter& mAdapter;
|
||||
EngineLockState mEngineLockState;
|
||||
|
||||
inline MsgEngineLockStateEvent(BatchingAdapter& adapter, EngineLockState engineLockState) :
|
||||
LocMsg(),
|
||||
mAdapter(adapter),
|
||||
mEngineLockState(engineLockState){}
|
||||
|
||||
virtual void proc() const {
|
||||
mAdapter.handleEngineLockStatus(mEngineLockState);
|
||||
}
|
||||
};
|
||||
|
||||
sendMsg(new MsgEngineLockStateEvent(*this, engineLockState));
|
||||
}
|
||||
|
||||
void
|
||||
BatchingAdapter::handleEngineLockStatus(EngineLockState engineLockState) {
|
||||
|
||||
LOC_LOGd("lock state %d, pending msgs %zu", engineLockState, mPendingGnssEnabledMsgs.size());
|
||||
if (ENGINE_LOCK_STATE_ENABLED == engineLockState) {
|
||||
for (auto msg: mPendingGnssEnabledMsgs) {
|
||||
sendMsg(msg);
|
||||
}
|
||||
mPendingGnssEnabledMsgs.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
BatchingAdapter::handleEngineUpEvent()
|
||||
{
|
||||
|
@ -178,11 +250,13 @@ BatchingAdapter::handleEngineUpEvent()
|
|||
mAdapter.broadcastCapabilities(mAdapter.getCapabilities());
|
||||
mApi.setBatchSize(mAdapter.getBatchSize());
|
||||
mApi.setTripBatchSize(mAdapter.getTripBatchSize());
|
||||
mAdapter.restartSessions();
|
||||
for (auto msg: mAdapter.mPendingMsgs) {
|
||||
mAdapter.sendMsg(msg);
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mApi.getEngineLockState()) {
|
||||
mAdapter.restartSessions();
|
||||
for (auto msg: mAdapter.mPendingMsgs) {
|
||||
mAdapter.sendMsg(msg);
|
||||
}
|
||||
mAdapter.mPendingMsgs.clear();
|
||||
}
|
||||
mAdapter.mPendingMsgs.clear();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -354,7 +428,8 @@ BatchingAdapter::startBatchingCommand(
|
|||
if (LOCATION_ERROR_SUCCESS == err) {
|
||||
if (mBatchingOptions.batchingMode == BATCHING_MODE_ROUTINE ||
|
||||
mBatchingOptions.batchingMode == BATCHING_MODE_NO_AUTO_REPORT) {
|
||||
mAdapter.startBatching(mClient, mSessionId, mBatchingOptions);
|
||||
mAdapter.startBatching(
|
||||
mClient, mSessionId, mBatchingOptions, new MsgStartBatching(*this));
|
||||
} else if (mBatchingOptions.batchingMode == BATCHING_MODE_TRIP) {
|
||||
mAdapter.startTripBatchingMultiplex(mClient, mSessionId, mBatchingOptions);
|
||||
} else {
|
||||
|
@ -371,7 +446,7 @@ BatchingAdapter::startBatchingCommand(
|
|||
|
||||
void
|
||||
BatchingAdapter::startBatching(LocationAPI* client, uint32_t sessionId,
|
||||
const BatchingOptions& batchingOptions)
|
||||
const BatchingOptions& batchingOptions, LocMsg* pendingMsg)
|
||||
{
|
||||
if (batchingOptions.batchingMode != BATCHING_MODE_NO_AUTO_REPORT &&
|
||||
0 == autoReportBatchingSessionsCount()) {
|
||||
|
@ -385,8 +460,9 @@ BatchingAdapter::startBatching(LocationAPI* client, uint32_t sessionId,
|
|||
saveBatchingSession(client, sessionId, batchingOptions);
|
||||
mLocApi->startBatching(sessionId, batchingOptions, getBatchingAccuracy(), getBatchingTimeout(),
|
||||
new LocApiResponse(*getContext(),
|
||||
[this, client, sessionId, batchingOptions] (LocationError err) {
|
||||
if (LOCATION_ERROR_SUCCESS != err) {
|
||||
[this, client, sessionId, batchingOptions, pendingMsg] (LocationError err) {
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mLocApi->getEngineLockState() &&
|
||||
LOCATION_ERROR_SUCCESS != err) {
|
||||
eraseBatchingSession(client, sessionId);
|
||||
}
|
||||
|
||||
|
@ -399,6 +475,13 @@ BatchingAdapter::startBatching(LocationAPI* client, uint32_t sessionId,
|
|||
LOC_REGISTRATION_MASK_DISABLED);
|
||||
}
|
||||
|
||||
if (LOCATION_ERROR_GNSS_DISABLED == err && pendingMsg != nullptr) {
|
||||
LOC_LOGd("GNSS_DISABLED, add request to pending queue");
|
||||
mPendingGnssEnabledMsgs.push_back(pendingMsg);
|
||||
} else if (pendingMsg != nullptr) {
|
||||
delete pendingMsg;
|
||||
}
|
||||
|
||||
reportResponse(client, err, sessionId);
|
||||
}));
|
||||
}
|
||||
|
@ -509,7 +592,8 @@ BatchingAdapter::stopBatching(LocationAPI* client, uint32_t sessionId, bool rest
|
|||
new LocApiResponse(*getContext(),
|
||||
[this, client, sessionId, flpOptions, restartNeeded, batchOptions]
|
||||
(LocationError err) {
|
||||
if (LOCATION_ERROR_SUCCESS != err) {
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mLocApi->getEngineLockState() &&
|
||||
LOCATION_ERROR_SUCCESS != err) {
|
||||
saveBatchingSession(client, sessionId, batchOptions);
|
||||
} else {
|
||||
// if stopBatching is success, unregister for batch full event if this was the last
|
||||
|
@ -766,7 +850,8 @@ BatchingAdapter::startTripBatchingMultiplex(LocationAPI* client, uint32_t sessio
|
|||
mLocApi->startOutdoorTripBatching(batchingOptions.minDistance,
|
||||
batchingOptions.minInterval, getBatchingTimeout(), new LocApiResponse(*getContext(),
|
||||
[this, client, sessionId, batchingOptions] (LocationError err) {
|
||||
if (err == LOCATION_ERROR_SUCCESS) {
|
||||
if (ENGINE_LOCK_STATE_DISABLED == mLocApi->getEngineLockState() ||
|
||||
err == LOCATION_ERROR_SUCCESS) {
|
||||
mOngoingTripDistance = batchingOptions.minDistance;
|
||||
mOngoingTripTBFInterval = batchingOptions.minInterval;
|
||||
LOC_LOGD("%s] New Trip started ...", __func__);
|
||||
|
|
|
@ -26,6 +26,43 @@
|
|||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
|
||||
Copyright (c) 2022 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 BATCHING_ADAPTER_H
|
||||
#define BATCHING_ADAPTER_H
|
||||
|
||||
|
@ -114,7 +151,7 @@ public:
|
|||
void eraseBatchingSession(LocationAPI* client, uint32_t sessionId);
|
||||
uint32_t autoReportBatchingSessionsCount();
|
||||
void startBatching(LocationAPI* client, uint32_t sessionId,
|
||||
const BatchingOptions& batchingOptions);
|
||||
const BatchingOptions& batchingOptions, LocMsg* pendingMsg = nullptr);
|
||||
void stopBatching(LocationAPI* client, uint32_t sessionId, bool restartNeeded,
|
||||
const BatchingOptions& batchOptions);
|
||||
void stopBatching(LocationAPI* client, uint32_t sessionId) {
|
||||
|
@ -123,6 +160,8 @@ public:
|
|||
};
|
||||
|
||||
/* ==== REPORTS ======================================================================== */
|
||||
virtual void handleEngineLockStatusEvent(EngineLockState engineLockState);
|
||||
void handleEngineLockStatus(EngineLockState engineLockState);
|
||||
/* ======== EVENTS ====(Called from QMI Thread)========================================= */
|
||||
void reportLocationsEvent(const Location* locations, size_t count,
|
||||
BatchingMode batchingMode);
|
||||
|
@ -146,7 +185,6 @@ public:
|
|||
uint32_t getBatchingTimeout() { return mBatchingTimeout; }
|
||||
void setBatchingAccuracy(uint32_t accuracy) { mBatchingAccuracy = accuracy; }
|
||||
uint32_t getBatchingAccuracy() { return mBatchingAccuracy; }
|
||||
|
||||
};
|
||||
|
||||
#endif /* BATCHING_ADAPTER_H */
|
||||
|
|
|
@ -26,6 +26,43 @@
|
|||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
|
||||
Copyright (c) 2022 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.
|
||||
*/
|
||||
|
||||
#define LOG_NDEBUG 0
|
||||
#define LOG_TAG "LocSvc_LocAdapterBase"
|
||||
|
||||
|
@ -432,6 +469,10 @@ void
|
|||
LocAdapterBase::reportLatencyInfoEvent(const GnssLatencyInfo& /*gnssLatencyInfo*/)
|
||||
DEFAULT_IMPL()
|
||||
|
||||
void
|
||||
LocAdapterBase::handleEngineLockStatusEvent(const EngineLockState engineLockState)
|
||||
DEFAULT_IMPL()
|
||||
|
||||
bool LocAdapterBase::
|
||||
reportQwesCapabilities(const std::unordered_map<LocationQwesFeatureType, bool> &featureMap)
|
||||
DEFAULT_IMPL(false)
|
||||
|
|
|
@ -26,6 +26,43 @@
|
|||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
|
||||
Copyright (c) 2022 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 LOC_API_ADAPTER_BASE_H
|
||||
#define LOC_API_ADAPTER_BASE_H
|
||||
|
||||
|
@ -80,6 +117,8 @@ protected:
|
|||
typedef std::map<LocationAPI*, LocationCallbacks> ClientDataMap;
|
||||
ClientDataMap mClientData;
|
||||
std::vector<LocMsg*> mPendingMsgs; // For temporal storage of msgs before Open is completed
|
||||
std::vector<LocMsg*> mPendingGnssEnabledMsgs; // For temporal storage of msgs failed with
|
||||
// GNSS disabled error
|
||||
/* ======== UTILITIES ================================================================== */
|
||||
void saveClient(LocationAPI* client, const LocationCallbacks& callbacks);
|
||||
void eraseClient(LocationAPI* client);
|
||||
|
@ -237,6 +276,7 @@ public:
|
|||
void requestCapabilitiesCommand(LocationAPI* client);
|
||||
|
||||
virtual void reportLatencyInfoEvent(const GnssLatencyInfo& gnssLatencyInfo);
|
||||
virtual void handleEngineLockStatusEvent(EngineLockState engineLockState);
|
||||
virtual bool reportQwesCapabilities(
|
||||
const std::unordered_map<LocationQwesFeatureType, bool> &featureMap);
|
||||
};
|
||||
|
|
|
@ -155,7 +155,7 @@ volatile int32_t LocApiBase::mMsgTaskRefCount = 0;
|
|||
LocApiBase::LocApiBase(LOC_API_ADAPTER_EVENT_MASK_T excludedMask,
|
||||
ContextBase* context) :
|
||||
mContext(context),
|
||||
mMask(0), mExcludedMask(excludedMask)
|
||||
mMask(0), mExcludedMask(excludedMask), mEngineLockState(ENGINE_LOCK_STATE_ENABLED)
|
||||
{
|
||||
memset(mLocAdapters, 0, sizeof(mLocAdapters));
|
||||
|
||||
|
@ -615,6 +615,12 @@ void LocApiBase::reportLatencyInfo(GnssLatencyInfo& gnssLatencyInfo)
|
|||
TO_ALL_LOCADAPTERS(mLocAdapters[i]->reportLatencyInfoEvent(gnssLatencyInfo));
|
||||
}
|
||||
|
||||
void LocApiBase::reportEngineLockStatus(EngineLockState engineLockState)
|
||||
{
|
||||
// loop through adapters, and deliver to the All handling adapter.
|
||||
TO_ALL_LOCADAPTERS(mLocAdapters[i]->handleEngineLockStatusEvent(engineLockState));
|
||||
}
|
||||
|
||||
enum loc_api_adapter_err LocApiBase::
|
||||
open(LOC_API_ADAPTER_EVENT_MASK_T /*mask*/)
|
||||
DEFAULT_IMPL(LOC_API_ADAPTER_ERR_SUCCESS)
|
||||
|
|
|
@ -137,6 +137,7 @@ protected:
|
|||
bool isInSession();
|
||||
const LOC_API_ADAPTER_EVENT_MASK_T mExcludedMask;
|
||||
bool isMaster();
|
||||
EngineLockState mEngineLockState;
|
||||
|
||||
public:
|
||||
inline void sendMsg(const LocMsg* msg) const {
|
||||
|
@ -203,6 +204,7 @@ public:
|
|||
void sendNfwNotification(GnssNfwNotification& notification);
|
||||
void reportGnssConfig(uint32_t sessionId, const GnssConfig& gnssConfig);
|
||||
void reportLatencyInfo(GnssLatencyInfo& gnssLatencyInfo);
|
||||
void reportEngineLockStatus(EngineLockState engineLockState);
|
||||
void reportQwesCapabilities
|
||||
(
|
||||
const std::unordered_map<LocationQwesFeatureType, bool> &featureMap
|
||||
|
@ -345,6 +347,14 @@ public:
|
|||
LocApiResponse* adapterResponse=nullptr);
|
||||
virtual void getConstellationMultiBandConfig(uint32_t sessionId,
|
||||
LocApiResponse* adapterResponse=nullptr);
|
||||
|
||||
inline EngineLockState getEngineLockState() {
|
||||
return mEngineLockState;
|
||||
}
|
||||
|
||||
inline void setEngineLockState(EngineLockState engineLockState) {
|
||||
mEngineLockState = engineLockState;
|
||||
}
|
||||
};
|
||||
|
||||
class ElapsedRealtimeEstimator {
|
||||
|
|
|
@ -26,6 +26,43 @@
|
|||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
|
||||
Copyright (c) 2022 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.
|
||||
*/
|
||||
|
||||
#define LOG_TAG "LocSvc_GeofenceAdapter"
|
||||
|
||||
#include <GeofenceAdapter.h>
|
||||
|
@ -116,26 +153,63 @@ GeofenceAdapter::getGeofenceKeyFromHwId(uint32_t hwId, GeofenceKey& key)
|
|||
return LOCATION_ERROR_ID_UNKNOWN;
|
||||
}
|
||||
|
||||
void
|
||||
GeofenceAdapter::handleEngineLockStatusEvent(EngineLockState engineLockState) {
|
||||
|
||||
LOC_LOGD("%s]: Old Engine state %d, New Engine state : %d,", __func__,
|
||||
mLocApi->getEngineLockState(), engineLockState);
|
||||
|
||||
struct MsgEngineLockStateEvent : public LocMsg {
|
||||
GeofenceAdapter& mAdapter;
|
||||
EngineLockState mEngineLockState;
|
||||
|
||||
inline MsgEngineLockStateEvent(GeofenceAdapter& adapter, EngineLockState engineLockState) :
|
||||
LocMsg(),
|
||||
mAdapter(adapter),
|
||||
mEngineLockState(engineLockState){}
|
||||
|
||||
virtual void proc() const {
|
||||
mAdapter.handleEngineLockStatus(mEngineLockState);
|
||||
}
|
||||
};
|
||||
|
||||
sendMsg(new MsgEngineLockStateEvent(*this, engineLockState));
|
||||
}
|
||||
|
||||
void
|
||||
GeofenceAdapter::handleEngineLockStatus(EngineLockState engineLockState) {
|
||||
|
||||
if (ENGINE_LOCK_STATE_ENABLED == engineLockState) {
|
||||
for (auto msg: mPendingGnssEnabledMsgs) {
|
||||
sendMsg(msg);
|
||||
}
|
||||
mPendingGnssEnabledMsgs.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
GeofenceAdapter::handleEngineUpEvent()
|
||||
{
|
||||
struct MsgSSREvent : public LocMsg {
|
||||
GeofenceAdapter& mAdapter;
|
||||
inline MsgSSREvent(GeofenceAdapter& adapter) :
|
||||
LocApiBase& mApi;
|
||||
inline MsgSSREvent(GeofenceAdapter& adapter, LocApiBase& api) :
|
||||
LocMsg(),
|
||||
mAdapter(adapter) {}
|
||||
mAdapter(adapter),
|
||||
mApi(api) {}
|
||||
virtual void proc() const {
|
||||
mAdapter.setEngineCapabilitiesKnown(true);
|
||||
mAdapter.broadcastCapabilities(mAdapter.getCapabilities());
|
||||
mAdapter.restartGeofences();
|
||||
for (auto msg: mAdapter.mPendingMsgs) {
|
||||
mAdapter.sendMsg(msg);
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mApi.getEngineLockState()) {
|
||||
mAdapter.restartGeofences();
|
||||
for (auto msg: mAdapter.mPendingMsgs) {
|
||||
mAdapter.sendMsg(msg);
|
||||
}
|
||||
}
|
||||
mAdapter.mPendingMsgs.clear();
|
||||
}
|
||||
};
|
||||
|
||||
sendMsg(new MsgSSREvent(*this));
|
||||
sendMsg(new MsgSSREvent(*this, *mLocApi));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -231,7 +305,7 @@ GeofenceAdapter::addGeofencesCommand(LocationAPI* client, size_t count, Geofence
|
|||
mCount(count),
|
||||
mIds(ids),
|
||||
mOptions(options),
|
||||
mInfos(infos) {}
|
||||
mInfos(infos){}
|
||||
inline virtual void proc() const {
|
||||
LocationError* errs = new LocationError[mCount];
|
||||
if (nullptr == errs) {
|
||||
|
@ -249,9 +323,10 @@ GeofenceAdapter::addGeofencesCommand(LocationAPI* client, size_t count, Geofence
|
|||
mApi.addGeofence(mIds[i], mOptions[i], mInfos[i],
|
||||
new LocApiResponseData<LocApiGeofenceData>(*mAdapter.getContext(),
|
||||
[&mAdapter = mAdapter, mOptions = mOptions, mClient = mClient,
|
||||
mCount = mCount, mIds = mIds, mInfos = mInfos, errs, i]
|
||||
mCount = mCount, mIds = mIds, mInfos = mInfos, errs, i, &mApi = mApi]
|
||||
(LocationError err, LocApiGeofenceData data) {
|
||||
if (LOCATION_ERROR_SUCCESS == err) {
|
||||
if (ENGINE_LOCK_STATE_DISABLED == mApi.getEngineLockState() ||
|
||||
LOCATION_ERROR_SUCCESS == err) {
|
||||
mAdapter.saveGeofenceItem(mClient,
|
||||
mIds[i],
|
||||
data.hwId,
|
||||
|
@ -353,8 +428,9 @@ GeofenceAdapter::removeGeofencesCommand(LocationAPI* client, size_t count, uint3
|
|||
mApi.removeGeofence(hwId, mIds[i],
|
||||
new LocApiResponse(*mAdapter.getContext(),
|
||||
[&mAdapter = mAdapter, mCount = mCount, mClient = mClient, mIds = mIds,
|
||||
hwId, errs, i] (LocationError err ) {
|
||||
if (LOCATION_ERROR_SUCCESS == err) {
|
||||
hwId, errs, i, &mApi = mApi] (LocationError err ) {
|
||||
if (ENGINE_LOCK_STATE_DISABLED == mApi.getEngineLockState() ||
|
||||
LOCATION_ERROR_SUCCESS == err) {
|
||||
mAdapter.removeGeofenceItem(hwId);
|
||||
}
|
||||
errs[i] = err;
|
||||
|
@ -587,9 +663,10 @@ GeofenceAdapter::modifyGeofencesCommand(LocationAPI* client, size_t count, uint3
|
|||
mApi.modifyGeofence(hwId, mIds[i], mOptions[i],
|
||||
new LocApiResponse(*mAdapter.getContext(),
|
||||
[&mAdapter = mAdapter, mCount = mCount, mClient = mClient,
|
||||
mIds = mIds, mOptions = mOptions, hwId, errs, i]
|
||||
mIds = mIds, mOptions = mOptions, hwId, errs, i, &mApi = mApi]
|
||||
(LocationError err ) {
|
||||
if (LOCATION_ERROR_SUCCESS == err) {
|
||||
if (ENGINE_LOCK_STATE_DISABLED == mApi.getEngineLockState() ||
|
||||
LOCATION_ERROR_SUCCESS == err) {
|
||||
errs[i] = err;
|
||||
|
||||
mAdapter.modifyGeofenceItem(hwId, mOptions[i]);
|
||||
|
|
|
@ -26,6 +26,43 @@
|
|||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
|
||||
Copyright (c) 2022 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 GEOFENCE_ADAPTER_H
|
||||
#define GEOFENCE_ADAPTER_H
|
||||
|
||||
|
@ -121,8 +158,9 @@ public:
|
|||
LocationError getHwIdFromClient(LocationAPI* client, uint32_t clientId, uint32_t& hwId);
|
||||
LocationError getGeofenceKeyFromHwId(uint32_t hwId, GeofenceKey& key);
|
||||
void dump();
|
||||
|
||||
/* ==== REPORTS ======================================================================== */
|
||||
virtual void handleEngineLockStatusEvent(EngineLockState engineLockState);
|
||||
void handleEngineLockStatus(EngineLockState engineLockState);
|
||||
/* ======== EVENTS ====(Called from QMI Thread)========================================= */
|
||||
void geofenceBreachEvent(size_t count, uint32_t* hwIds, Location& location,
|
||||
GeofenceBreachType breachType, uint64_t timestamp);
|
||||
|
|
|
@ -170,7 +170,6 @@ GnssAdapter::GnssAdapter() :
|
|||
readConfigCommand();
|
||||
initDefaultAgpsCommand();
|
||||
initEngHubProxyCommand();
|
||||
|
||||
// at last step, let us inform adapater base that we are done
|
||||
// with initialization, e.g.: ready to process handleEngineUpEvent
|
||||
doneInit();
|
||||
|
@ -2564,6 +2563,40 @@ GnssAdapter::updateClientsEventMask()
|
|||
updateEvtMask(mask, LOC_REGISTRATION_MASK_SET);
|
||||
}
|
||||
|
||||
void
|
||||
GnssAdapter::handleEngineLockStatusEvent(EngineLockState engineLockState) {
|
||||
|
||||
LOC_LOGD("%s]: Old Engine state %d, New Engine state : %d,",
|
||||
__func__, mLocApi->getEngineLockState(), engineLockState);
|
||||
|
||||
struct MsgEngineLockStateEvent : public LocMsg {
|
||||
GnssAdapter& mAdapter;
|
||||
EngineLockState mEngineLockState;
|
||||
|
||||
inline MsgEngineLockStateEvent(GnssAdapter& adapter, EngineLockState engineLockState) :
|
||||
LocMsg(),
|
||||
mAdapter(adapter),
|
||||
mEngineLockState(engineLockState) {}
|
||||
|
||||
virtual void proc() const {
|
||||
mAdapter.handleEngineLockStatus(mEngineLockState);
|
||||
}
|
||||
};
|
||||
|
||||
sendMsg(new MsgEngineLockStateEvent(*this, engineLockState));
|
||||
}
|
||||
|
||||
void
|
||||
GnssAdapter::handleEngineLockStatus(EngineLockState engineLockState) {
|
||||
|
||||
if (ENGINE_LOCK_STATE_ENABLED == engineLockState) {
|
||||
for (auto msg: mPendingGnssEnabledMsgs) {
|
||||
sendMsg(msg);
|
||||
}
|
||||
mPendingGnssEnabledMsgs.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
GnssAdapter::handleEngineUpEvent()
|
||||
{
|
||||
|
@ -2571,9 +2604,11 @@ GnssAdapter::handleEngineUpEvent()
|
|||
|
||||
struct MsgHandleEngineUpEvent : public LocMsg {
|
||||
GnssAdapter& mAdapter;
|
||||
inline MsgHandleEngineUpEvent(GnssAdapter& adapter) :
|
||||
LocApiBase& mApi;
|
||||
inline MsgHandleEngineUpEvent(GnssAdapter& adapter, LocApiBase& api) :
|
||||
LocMsg(),
|
||||
mAdapter(adapter) {}
|
||||
mAdapter(adapter),
|
||||
mApi(api) {}
|
||||
virtual void proc() const {
|
||||
mAdapter.setEngineCapabilitiesKnown(true);
|
||||
mAdapter.broadcastCapabilities(mAdapter.getCapabilities());
|
||||
|
@ -2585,17 +2620,19 @@ GnssAdapter::handleEngineUpEvent()
|
|||
mAdapter.gnssSecondaryBandConfigUpdate();
|
||||
// start CDFW service
|
||||
mAdapter.initCDFWService();
|
||||
// restart sessions
|
||||
mAdapter.restartSessions(true);
|
||||
for (auto msg: mAdapter.mPendingMsgs) {
|
||||
mAdapter.sendMsg(msg);
|
||||
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mApi.getEngineLockState()) {
|
||||
// restart sessions
|
||||
mAdapter.restartSessions(true);
|
||||
for (auto msg: mAdapter.mPendingMsgs) {
|
||||
mAdapter.sendMsg(msg);
|
||||
}
|
||||
}
|
||||
mAdapter.mPendingMsgs.clear();
|
||||
}
|
||||
};
|
||||
|
||||
readConfigCommand();
|
||||
sendMsg(new MsgHandleEngineUpEvent(*this));
|
||||
sendMsg(new MsgHandleEngineUpEvent(*this, *mLocApi));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2972,9 +3009,11 @@ GnssAdapter::startTrackingCommand(LocationAPI* client, TrackingOptions& options)
|
|||
mAdapter.saveTrackingSession(mClient, mSessionId, mOptions);
|
||||
mApi.startDistanceBasedTracking(mSessionId, mOptions,
|
||||
new LocApiResponse(*mAdapter.getContext(),
|
||||
[&mAdapter = mAdapter, mSessionId = mSessionId, mClient = mClient]
|
||||
[&mAdapter = mAdapter, mSessionId = mSessionId, mClient = mClient,
|
||||
&mApi = mApi]
|
||||
(LocationError err) {
|
||||
if (LOCATION_ERROR_SUCCESS != err) {
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mApi.getEngineLockState() &&
|
||||
LOCATION_ERROR_SUCCESS != err) {
|
||||
mAdapter.eraseTrackingSession(mClient, mSessionId);
|
||||
}
|
||||
mAdapter.reportResponse(mClient, err, mSessionId);
|
||||
|
@ -3081,7 +3120,8 @@ GnssAdapter::startTimeBasedTracking(LocationAPI* client, uint32_t sessionId,
|
|||
if (!checkAndSetSPEToRunforNHz(tempOptions)) {
|
||||
mLocApi->startTimeBasedTracking(tempOptions, new LocApiResponse(*getContext(),
|
||||
[this, client, sessionId] (LocationError err) {
|
||||
if (LOCATION_ERROR_SUCCESS != err) {
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mLocApi->getEngineLockState() &&
|
||||
LOCATION_ERROR_SUCCESS != err) {
|
||||
eraseTrackingSession(client, sessionId);
|
||||
} else {
|
||||
checkUpdateDgnssNtrip(false);
|
||||
|
@ -3116,7 +3156,8 @@ GnssAdapter::updateTracking(LocationAPI* client, uint32_t sessionId,
|
|||
if(!checkAndSetSPEToRunforNHz(tempOptions)) {
|
||||
mLocApi->startTimeBasedTracking(tempOptions, new LocApiResponse(*getContext(),
|
||||
[this, client, sessionId, oldOptions] (LocationError err) {
|
||||
if (LOCATION_ERROR_SUCCESS != err) {
|
||||
if (ENGINE_LOCK_STATE_ENABLED == mLocApi->getEngineLockState() &&
|
||||
LOCATION_ERROR_SUCCESS != err) {
|
||||
// restore the old LocationOptions
|
||||
saveTrackingSession(client, sessionId, oldOptions);
|
||||
}
|
||||
|
@ -3231,9 +3272,10 @@ GnssAdapter::updateTrackingOptionsCommand(LocationAPI* client, uint32_t id,
|
|||
if (LOCATION_ERROR_SUCCESS == err) {
|
||||
mApi.startDistanceBasedTracking(mSessionId, mOptions,
|
||||
new LocApiResponse(*mAdapter.getContext(),
|
||||
[&mAdapter, mClient, mSessionId, mOptions]
|
||||
[&mAdapter, mClient, mSessionId, mOptions, &mApi = mApi]
|
||||
(LocationError err) {
|
||||
if (LOCATION_ERROR_SUCCESS == err) {
|
||||
if (ENGINE_LOCK_STATE_DISABLED == mApi.getEngineLockState() ||
|
||||
LOCATION_ERROR_SUCCESS == err) {
|
||||
mAdapter.saveTrackingSession(mClient, mSessionId, mOptions);
|
||||
}
|
||||
mAdapter.reportResponse(mClient, err, mSessionId);
|
||||
|
@ -3347,9 +3389,11 @@ GnssAdapter::stopTrackingCommand(LocationAPI* client, uint32_t id)
|
|||
} else if (isDistanceBased) {
|
||||
mApi.stopDistanceBasedTracking(mSessionId, new LocApiResponse(
|
||||
*mAdapter.getContext(),
|
||||
[&mAdapter = mAdapter, mSessionId = mSessionId, mClient = mClient]
|
||||
[&mAdapter = mAdapter, mSessionId = mSessionId, mClient = mClient,
|
||||
&mApi = mApi]
|
||||
(LocationError err) {
|
||||
if (LOCATION_ERROR_SUCCESS == err) {
|
||||
if (ENGINE_LOCK_STATE_DISABLED == mApi.getEngineLockState() ||
|
||||
LOCATION_ERROR_SUCCESS == err) {
|
||||
mAdapter.eraseTrackingSession(mClient, mSessionId);
|
||||
}
|
||||
mAdapter.reportResponse(mClient, err, mSessionId);
|
||||
|
|
|
@ -26,6 +26,43 @@
|
|||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
|
||||
Copyright (c) 2022 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 GNSS_ADAPTER_H
|
||||
#define GNSS_ADAPTER_H
|
||||
|
||||
|
@ -487,6 +524,8 @@ public:
|
|||
void odcpiTimerExpireEvent();
|
||||
|
||||
/* ==== REPORTS ======================================================================== */
|
||||
virtual void handleEngineLockStatusEvent(EngineLockState engineLockState);
|
||||
void handleEngineLockStatus(EngineLockState engineLockState);
|
||||
/* ======== EVENTS ====(Called from QMI/EngineHub Thread)===================================== */
|
||||
virtual void reportPositionEvent(const UlpLocation& ulpLocation,
|
||||
const GpsLocationExtended& locationExtended,
|
||||
|
|
|
@ -63,6 +63,7 @@ typedef enum {
|
|||
LOCATION_ERROR_GEOFENCES_AT_MAX,
|
||||
LOCATION_ERROR_NOT_SUPPORTED,
|
||||
LOCATION_ERROR_TIMEOUT,
|
||||
LOCATION_ERROR_GNSS_DISABLED,
|
||||
} LocationError;
|
||||
|
||||
// Flags to indicate which values are valid in a Location
|
||||
|
|
|
@ -2422,6 +2422,13 @@ typedef uint64_t NetworkHandle;
|
|||
#define NETWORK_HANDLE_UNKNOWN ~0
|
||||
#define MAX_NETWORK_HANDLES 10
|
||||
|
||||
typedef enum {
|
||||
ENGINE_LOCK_STATE_INVALID = 0,
|
||||
ENGINE_LOCK_STATE_ENABLED = 1, /**< Location engine is enabled. */
|
||||
ENGINE_LOCK_STATE_DISABLED = 2, /**< location engine is disabled. */
|
||||
ENGINE_LOCK_STATE_MAX,
|
||||
}EngineLockState;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
|
Loading…
Reference in a new issue