diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/LocAdapterBase.cpp | 41 | ||||
-rw-r--r-- | core/LocAdapterBase.h | 40 | ||||
-rw-r--r-- | core/LocApiBase.cpp | 8 | ||||
-rw-r--r-- | core/LocApiBase.h | 10 |
4 files changed, 98 insertions, 1 deletions
diff --git a/core/LocAdapterBase.cpp b/core/LocAdapterBase.cpp index 95f2728..21975ed 100644 --- a/core/LocAdapterBase.cpp +++ b/core/LocAdapterBase.cpp @@ -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) diff --git a/core/LocAdapterBase.h b/core/LocAdapterBase.h index 51b2306..f2ae52e 100644 --- a/core/LocAdapterBase.h +++ b/core/LocAdapterBase.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. +*/ + #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); }; diff --git a/core/LocApiBase.cpp b/core/LocApiBase.cpp index 860da2e..b571e36 100644 --- a/core/LocApiBase.cpp +++ b/core/LocApiBase.cpp @@ -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) diff --git a/core/LocApiBase.h b/core/LocApiBase.h index cbe5f9f..6f1b04f 100644 --- a/core/LocApiBase.h +++ b/core/LocApiBase.h @@ -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 { |