enhance ulp handshake
send ULP the position mode if it is valid when ULP handle is first received. This helps handling a race condition where ULP handshake happens when a GPS session is about to happen or already happening. Change-Id: I029e5c3bbb9d8e89b220ca44e9704b5a1d1451ff CRs-Fixed: 554340
This commit is contained in:
parent
db74b5e449
commit
351cb70668
3 changed files with 20 additions and 3 deletions
|
@ -161,7 +161,8 @@ typedef enum loc_server_type {
|
||||||
} LocServerType;
|
} LocServerType;
|
||||||
|
|
||||||
typedef enum loc_position_mode_type {
|
typedef enum loc_position_mode_type {
|
||||||
LOC_POSITION_MODE_STANDALONE,
|
LOC_POSITION_MODE_INVALID = -1,
|
||||||
|
LOC_POSITION_MODE_STANDALONE = 0,
|
||||||
LOC_POSITION_MODE_MS_BASED,
|
LOC_POSITION_MODE_MS_BASED,
|
||||||
LOC_POSITION_MODE_MS_ASSISTED,
|
LOC_POSITION_MODE_MS_ASSISTED,
|
||||||
LOC_POSITION_MODE_RESERVED_1,
|
LOC_POSITION_MODE_RESERVED_1,
|
||||||
|
@ -169,6 +170,7 @@ typedef enum loc_position_mode_type {
|
||||||
LOC_POSITION_MODE_RESERVED_3,
|
LOC_POSITION_MODE_RESERVED_3,
|
||||||
LOC_POSITION_MODE_RESERVED_4,
|
LOC_POSITION_MODE_RESERVED_4,
|
||||||
LOC_POSITION_MODE_RESERVED_5
|
LOC_POSITION_MODE_RESERVED_5
|
||||||
|
|
||||||
} LocPositionMode;
|
} LocPositionMode;
|
||||||
|
|
||||||
#define MIN_POSSIBLE_FIX_INTERVAL 1000 /* msec */
|
#define MIN_POSSIBLE_FIX_INTERVAL 1000 /* msec */
|
||||||
|
|
|
@ -78,6 +78,7 @@ LocEngAdapter::LocEngAdapter(LOC_API_ADAPTER_EVENT_MASK_T mask,
|
||||||
mAgpsEnabled(false)
|
mAgpsEnabled(false)
|
||||||
{
|
{
|
||||||
memset(&mFixCriteria, 0, sizeof(mFixCriteria));
|
memset(&mFixCriteria, 0, sizeof(mFixCriteria));
|
||||||
|
mFixCriteria.mode = LOC_POSITION_MODE_INVALID;
|
||||||
LOC_LOGD("LocEngAdapter created");
|
LOC_LOGD("LocEngAdapter created");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,6 +102,12 @@ void LocEngAdapter::setUlpProxy(UlpProxyBase* ulp)
|
||||||
ulp = new UlpProxyBase();
|
ulp = new UlpProxyBase();
|
||||||
}
|
}
|
||||||
mUlp = ulp;
|
mUlp = ulp;
|
||||||
|
|
||||||
|
if (LOC_POSITION_MODE_INVALID != mFixCriteria.mode) {
|
||||||
|
// need to send this mode and start msg to ULP
|
||||||
|
mUlp->sendFixMode(mFixCriteria);
|
||||||
|
mUlp->sendStartFix();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocInternalAdapter::reportPosition(UlpLocation &location,
|
void LocInternalAdapter::reportPosition(UlpLocation &location,
|
||||||
|
@ -157,6 +164,15 @@ void LocEngAdapter::reportSv(GpsSvStatus &svStatus,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LocEngAdapter::setInSession(bool inSession)
|
||||||
|
{
|
||||||
|
mNavigating = inSession;
|
||||||
|
mLocApi->setInSession(inSession);
|
||||||
|
if (!mNavigating) {
|
||||||
|
mFixCriteria.mode = LOC_POSITION_MODE_INVALID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
void LocEngAdapter::reportStatus(GpsStatusValue status)
|
void LocEngAdapter::reportStatus(GpsStatusValue status)
|
||||||
{
|
{
|
||||||
|
|
|
@ -264,8 +264,7 @@ public:
|
||||||
{return mFixCriteria;}
|
{return mFixCriteria;}
|
||||||
inline virtual bool isInSession()
|
inline virtual bool isInSession()
|
||||||
{ return mNavigating; }
|
{ return mNavigating; }
|
||||||
inline void setInSession(bool inSession)
|
void setInSession(bool inSession);
|
||||||
{ mNavigating = inSession; mLocApi->setInSession(inSession); }
|
|
||||||
|
|
||||||
/*Values for lock
|
/*Values for lock
|
||||||
1 = Do not lock any position sessions
|
1 = Do not lock any position sessions
|
||||||
|
|
Loading…
Reference in a new issue