new apis for control xtra throttle

added register and unregister apis of a callback
that listens to XTRA client throttle enablement commands.

Change-Id: Id50e7311516593018113203b5dfa700f0fdc037b
CRs-fixed: 2092629
This commit is contained in:
Ruifeng Xu 2017-08-21 17:46:44 -07:00 committed by Gerrit - the friendly Code Review server
parent b0982b4476
commit 35804b9131
6 changed files with 43 additions and 4 deletions

View file

@ -931,6 +931,26 @@ GnssAdapter::gnssDeleteAidingDataCommand(GnssAidingData& data)
return sessionId; return sessionId;
} }
void
GnssAdapter::gnssUpdateXtraThrottleCommand(const bool enabled)
{
LOC_LOGD("%s] enabled:%d", __func__, enabled);
struct UpdateXtraThrottleMsg : public LocMsg {
GnssAdapter& mAdapter;
const bool mEnabled;
inline UpdateXtraThrottleMsg(GnssAdapter& adapter, const bool enabled) :
LocMsg(),
mAdapter(adapter),
mEnabled(enabled) {}
inline virtual void proc() const {
mAdapter.mXtraObserver.updateXtraThrottle(mEnabled);
}
};
sendMsg(new UpdateXtraThrottleMsg(*this, enabled));
}
void void
GnssAdapter::injectLocationCommand(double latitude, double longitude, float accuracy) GnssAdapter::injectLocationCommand(double latitude, double longitude, float accuracy)
{ {

View file

@ -200,6 +200,7 @@ public:
void setConfigCommand(); void setConfigCommand();
uint32_t* gnssUpdateConfigCommand(GnssConfig config); uint32_t* gnssUpdateConfigCommand(GnssConfig config);
uint32_t gnssDeleteAidingDataCommand(GnssAidingData& data); uint32_t gnssDeleteAidingDataCommand(GnssAidingData& data);
void gnssUpdateXtraThrottleCommand(const bool enabled);
void initDefaultAgpsCommand(); void initDefaultAgpsCommand();
void initAgpsCommand(const AgpsCbInfo& cbInfo); void initAgpsCommand(const AgpsCbInfo& cbInfo);

View file

@ -84,6 +84,13 @@ bool XtraSystemStatusObserver::updateMccMnc(const string& mccmnc) {
return ( send(LOC_IPC_XTRA, ss.str()) ); return ( send(LOC_IPC_XTRA, ss.str()) );
} }
bool XtraSystemStatusObserver::updateXtraThrottle(const bool enabled) {
stringstream ss;
ss << "xtrathrottle";
ss << " " << (enabled ? 1 : 0);
return ( send(LOC_IPC_XTRA, ss.str()) );
}
void XtraSystemStatusObserver::onReceive(const std::string& data) { void XtraSystemStatusObserver::onReceive(const std::string& data) {
if (!strncmp(data.c_str(), "ping", sizeof("ping") - 1)) { if (!strncmp(data.c_str(), "ping", sizeof("ping") - 1)) {
LOC_LOGd("ping received"); LOC_LOGd("ping received");
@ -121,11 +128,11 @@ void XtraSystemStatusObserver::getName(string& name)
void XtraSystemStatusObserver::notify(const list<IDataItemCore*>& dlist) void XtraSystemStatusObserver::notify(const list<IDataItemCore*>& dlist)
{ {
struct handleOsObserverUpdateMsg : public LocMsg { struct HandleOsObserverUpdateMsg : public LocMsg {
XtraSystemStatusObserver* mXtraSysStatObj; XtraSystemStatusObserver* mXtraSysStatObj;
list <IDataItemCore*> mDataItemList; list <IDataItemCore*> mDataItemList;
inline handleOsObserverUpdateMsg(XtraSystemStatusObserver* xtraSysStatObs, inline HandleOsObserverUpdateMsg(XtraSystemStatusObserver* xtraSysStatObs,
const list<IDataItemCore*>& dataItemList) : const list<IDataItemCore*>& dataItemList) :
mXtraSysStatObj(xtraSysStatObs) { mXtraSysStatObj(xtraSysStatObs) {
for (auto eachItem : dataItemList) { for (auto eachItem : dataItemList) {
@ -141,7 +148,7 @@ void XtraSystemStatusObserver::notify(const list<IDataItemCore*>& dlist)
} }
} }
inline ~handleOsObserverUpdateMsg() { inline ~HandleOsObserverUpdateMsg() {
for (auto each : mDataItemList) { for (auto each : mDataItemList) {
delete each; delete each;
} }
@ -182,7 +189,7 @@ void XtraSystemStatusObserver::notify(const list<IDataItemCore*>& dlist)
} }
} }
}; };
mMsgTask->sendMsg(new (nothrow) handleOsObserverUpdateMsg(this, dlist)); mMsgTask->sendMsg(new (nothrow) HandleOsObserverUpdateMsg(this, dlist));
} }
#ifdef USE_GLIB #ifdef USE_GLIB

View file

@ -125,6 +125,7 @@ public :
bool updateConnectionStatus(bool connected, int32_t type); bool updateConnectionStatus(bool connected, int32_t type);
bool updateTac(const string& tac); bool updateTac(const string& tac);
bool updateMccMnc(const string& mccmnc); bool updateMccMnc(const string& mccmnc);
bool updateXtraThrottle(const bool enabled);
inline const MsgTask* getMsgTask() { return mMsgTask; } inline const MsgTask* getMsgTask() { return mMsgTask; }
void subscribe(bool yes); void subscribe(bool yes);

View file

@ -45,6 +45,7 @@ static void stopTracking(LocationAPI* client, uint32_t id);
static void gnssNiResponse(LocationAPI* client, uint32_t id, GnssNiResponse response); static void gnssNiResponse(LocationAPI* client, uint32_t id, GnssNiResponse response);
static uint32_t gnssDeleteAidingData(GnssAidingData& data); static uint32_t gnssDeleteAidingData(GnssAidingData& data);
static void gnssUpdateXtraThrottle(const bool enabled);
static void setControlCallbacks(LocationControlCallbacks& controlCallbacks); static void setControlCallbacks(LocationControlCallbacks& controlCallbacks);
static uint32_t enable(LocationTechnologyType techType); static uint32_t enable(LocationTechnologyType techType);
@ -77,6 +78,7 @@ static const GnssInterface gGnssInterface = {
disable, disable,
gnssUpdateConfig, gnssUpdateConfig,
gnssDeleteAidingData, gnssDeleteAidingData,
gnssUpdateXtraThrottle,
injectLocation, injectLocation,
injectTime, injectTime,
agpsInit, agpsInit,
@ -203,6 +205,13 @@ static uint32_t gnssDeleteAidingData(GnssAidingData& data)
} }
} }
static void gnssUpdateXtraThrottle(const bool enabled)
{
if (NULL != gGnssAdapter) {
gGnssAdapter->gnssUpdateXtraThrottleCommand(enabled);
}
}
static void injectLocation(double latitude, double longitude, float accuracy) static void injectLocation(double latitude, double longitude, float accuracy)
{ {
if (NULL != gGnssAdapter) { if (NULL != gGnssAdapter) {

View file

@ -48,6 +48,7 @@ struct GnssInterface {
void (*disable)(uint32_t id); void (*disable)(uint32_t id);
uint32_t* (*gnssUpdateConfig)(GnssConfig config); uint32_t* (*gnssUpdateConfig)(GnssConfig config);
uint32_t (*gnssDeleteAidingData)(GnssAidingData& data); uint32_t (*gnssDeleteAidingData)(GnssAidingData& data);
void (*gnssUpdateXtraThrottle)(const bool enabled);
void (*injectLocation)(double latitude, double longitude, float accuracy); void (*injectLocation)(double latitude, double longitude, float accuracy);
void (*injectTime)(int64_t time, int64_t timeReference, int32_t uncertainty); void (*injectTime)(int64_t time, int64_t timeReference, int32_t uncertainty);
void (*agpsInit)(const AgpsCbInfo& cbInfo); void (*agpsInit)(const AgpsCbInfo& cbInfo);