Add API to read and write GPS lock values

This change adds an interface to set and get
values for the GPS lock

Change-Id: I8c83b693fe4c3e6edc9cc5c8c5cbf8471e332c86
This commit is contained in:
Tushar Janefalkar 2013-08-21 17:57:17 -07:00
parent 6e83f87256
commit 112751962e
5 changed files with 106 additions and 1 deletions

View file

@ -425,5 +425,11 @@ void LocApiBase::
closeDataCall()
DEFAULT_IMPL()
int LocApiBase::
setGpsLock(unsigned int lock)
DEFAULT_IMPL(-1)
int LocApiBase::
getGpsLock()
DEFAULT_IMPL(-1)
} // namespace loc_core

View file

@ -180,6 +180,20 @@ public:
virtual void closeDataCall();
inline virtual void setInSession(bool inSession) {}
/*Values for lock
1 = Do not lock any position sessions
2 = Lock MI position sessions
3 = Lock MT position sessions
4 = Lock all position sessions
*/
virtual int setGpsLock(unsigned int lock);
/*
Returns
Current value of GPS Lock on success
-1 on failure
*/
virtual int getGpsLock(void);
};
typedef LocApiBase* (getLocApi_t)(const MsgTask* msgTask,

View file

@ -115,8 +115,21 @@ public:
atlCloseStatus(int handle, int is_succ);
virtual enum loc_api_adapter_err
setSUPLVersion(uint32_t version);
virtual void setInSession(bool inSession);
/*Values for lock
1 = Do not lock any position sessions
2 = Lock MI position sessions
3 = Lock MT position sessions
4 = Lock all position sessions
*/
virtual int setGpsLock(unsigned int lock);
/*
Returns
Current value of GPS Lock on success
-1 on failure
*/
virtual int getGpsLock(void);
};
extern "C" LocApiBase* getLocApi(const MsgTask* msgTask,

View file

@ -1391,3 +1391,55 @@ LocApiBase* getLocApi(const MsgTask* msgTask,
LOC_API_ADAPTER_EVENT_MASK_T exMask) {
return new LocApiRpc(msgTask, exMask);
}
/*Values for lock
1 = Do not lock any position sessions
2 = Lock MI position sessions
3 = Lock MT position sessions
4 = Lock all position sessions
*/
int LocApiRpc::setGpsLock(unsigned int lock)
{
rpc_loc_ioctl_data_u_type ioctl_data;
boolean ret_val;
LOC_LOGD("%s:%d]: lock: %d\n", __func__, __LINE__, lock);
ioctl_data.rpc_loc_ioctl_data_u_type_u.engine_lock = (rpc_loc_lock_e_type)lock;
ioctl_data.disc = RPC_LOC_IOCTL_SET_ENGINE_LOCK;
ret_val = loc_eng_ioctl (loc_eng_data.client_handle,
RPC_LOC_IOCTL_SET_ENGINE_LOCK,
&ioctl_data,
LOC_IOCTL_DEFAULT_TIMEOUT,
NULL /* No output information is expected*/);
LOC_LOGD("%s:%d]: ret_val: %d\n", __func__, __LINE__, (int)ret_val);
return (ret_val == TRUE ? 0 : -1);
}
/*
Returns
Current value of GPS lock on success
-1 on failure
*/
int LocApiRpc :: getGpsLock()
{
rpc_loc_ioctl_data_u_type ioctl_data;
rpc_loc_ioctl_callback_s_type callback_payload;
boolean ret_val;
int ret=0;
LOC_LOGD("%s:%d]: Enter\n", __func__, __LINE__);
ret_val = loc_eng_ioctl (loc_eng_data.client_handle,
RPC_LOC_IOCTL_GET_ENGINE_LOCK,
&ioctl_data,
LOC_IOCTL_DEFAULT_TIMEOUT,
&callback_payload);
if(ret_val == TRUE) {
ret = (int)callback_payload.data.engine_lock;
LOC_LOGD("%s:%d]: Lock type: %d\n", __func__, __LINE__, ret);
}
else {
LOC_LOGE("%s:%d]: Ioctl failed", __func__, __LINE__);
ret = -1;
}
LOC_LOGD("%s:%d]: Exit\n", __func__, __LINE__);
return ret;
}

View file

@ -266,6 +266,26 @@ public:
{ return mNavigating; }
inline void setInSession(bool inSession)
{ mNavigating = inSession; mLocApi->setInSession(inSession); }
/*Values for lock
1 = Do not lock any position sessions
2 = Lock MI position sessions
3 = Lock MT position sessions
4 = Lock all position sessions
*/
inline int setGpsLock(unsigned int lock)
{
return mLocApi->setGpsLock(lock);
}
/*
Returns
Current value of GPS lock on success
-1 on failure
*/
inline int getGpsLock()
{
return mLocApi->getGpsLock();
}
};
#endif //LOC_API_ENG_ADAPTER_H