summaryrefslogtreecommitdiff
path: root/loc_api/libloc_api_50001/LocEngAdapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'loc_api/libloc_api_50001/LocEngAdapter.cpp')
-rw-r--r--loc_api/libloc_api_50001/LocEngAdapter.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/loc_api/libloc_api_50001/LocEngAdapter.cpp b/loc_api/libloc_api_50001/LocEngAdapter.cpp
index 1e6e4e1..184f83d 100644
--- a/loc_api/libloc_api_50001/LocEngAdapter.cpp
+++ b/loc_api/libloc_api_50001/LocEngAdapter.cpp
@@ -128,37 +128,42 @@ void LocEngAdapter::setUlpProxy(UlpProxyBase* ulp)
mUlp = ulp;
}
-void LocEngAdapter::requestPowerVote()
+int LocEngAdapter::setGpsLockMsg(LOC_GPS_LOCK_MASK lockMask)
{
- struct LocEngAdapterVotePower : public LocMsg {
+ struct LocEngAdapterGpsLock : public LocMsg {
LocEngAdapter* mAdapter;
- const bool mPowerUp;
- inline LocEngAdapterVotePower(LocEngAdapter* adapter, bool powerUp) :
- LocMsg(), mAdapter(adapter), mPowerUp(powerUp)
+ LOC_GPS_LOCK_MASK mLockMask;
+ inline LocEngAdapterGpsLock(LocEngAdapter* adapter, LOC_GPS_LOCK_MASK lockMask) :
+ LocMsg(), mAdapter(adapter), mLockMask(lockMask)
{
locallog();
}
inline virtual void proc() const {
- /* Power voting without engine lock:
- * 101: vote down, 102-104 - vote up
- * These codes are used not to confuse with actual engine lock
- * functionality, that can't be used in SSR scenario, as it
- * conflicts with initialization sequence.
- */
- int mode = mPowerUp ? 103 : 101;
- mAdapter->setGpsLock(mode);
+ mAdapter->setGpsLock(mLockMask);
}
inline void locallog() const {
- LOC_LOGV("LocEngAdapterVotePower - Vote Power: %d",
- (int)mPowerUp);
+ LOC_LOGV("LocEngAdapterGpsLock - mLockMask: %x", mLockMask);
}
inline virtual void log() const {
locallog();
}
};
+ sendMsg(new LocEngAdapterGpsLock(this, lockMask));
+ return 0;
+}
+void LocEngAdapter::requestPowerVote()
+{
if (getPowerVoteRight()) {
- sendMsg(new LocEngAdapterVotePower(this, getPowerVote()));
+ /* Power voting without engine lock:
+ * 101: vote down, 102-104 - vote up
+ * These codes are used not to confuse with actual engine lock
+ * functionality, that can't be used in SSR scenario, as it
+ * conflicts with initialization sequence.
+ */
+ bool powerUp = getPowerVote();
+ LOC_LOGV("LocEngAdapterVotePower - Vote Power: %d", (int)powerUp);
+ setGpsLock(powerUp ? 103 : 101);
}
}