Send capabilities callback for each init
Added sending the capabilities to hal clients on every init, instead of only on the first init. This is needed for the cases when the hal client crashes and is trying to reinit. Bug: 36182606 Change-Id: I9055d2319f1dc407b6de9627b4e66eb89f8ce9d1 CRs-fixed: 2019987
This commit is contained in:
parent
3fb8076a5e
commit
b6928aae36
3 changed files with 14 additions and 1 deletions
|
@ -121,6 +121,7 @@ Return<bool> Gnss::setCallback(const sp<IGnssCallback>& callback) {
|
||||||
if (api != nullptr) {
|
if (api != nullptr) {
|
||||||
api->gnssUpdateCallbacks(mGnssCbIface, mGnssNiCbIface);
|
api->gnssUpdateCallbacks(mGnssCbIface, mGnssNiCbIface);
|
||||||
api->locAPIEnable(LOCATION_TECHNOLOGY_TYPE_GNSS);
|
api->locAPIEnable(LOCATION_TECHNOLOGY_TYPE_GNSS);
|
||||||
|
api->requestCapabilities();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,8 @@ GnssAPIClient::GnssAPIClient(const sp<IGnssCallback>& gpsCb,
|
||||||
LocationAPIClientBase(),
|
LocationAPIClientBase(),
|
||||||
mGnssCbIface(nullptr),
|
mGnssCbIface(nullptr),
|
||||||
mGnssNiCbIface(nullptr),
|
mGnssNiCbIface(nullptr),
|
||||||
mLocationCapabilitiesMask(0)
|
mLocationCapabilitiesMask(0),
|
||||||
|
mLocationCapabilitiesCached(false)
|
||||||
{
|
{
|
||||||
LOC_LOGD("%s]: (%p %p)", __FUNCTION__, &gpsCb, &niCb);
|
LOC_LOGD("%s]: (%p %p)", __FUNCTION__, &gpsCb, &niCb);
|
||||||
|
|
||||||
|
@ -218,11 +219,20 @@ void GnssAPIClient::gnssConfigurationUpdate(const GnssConfig& gnssConfig)
|
||||||
locAPIGnssUpdateConfig(gnssConfig);
|
locAPIGnssUpdateConfig(gnssConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GnssAPIClient::requestCapabilities() {
|
||||||
|
// only send capablities if it's already cached, otherwise the first time LocationAPI
|
||||||
|
// is initialized, capabilities will be sent by LocationAPI
|
||||||
|
if (mLocationCapabilitiesCached) {
|
||||||
|
onCapabilitiesCb(mLocationCapabilitiesMask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
void GnssAPIClient::onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask)
|
void GnssAPIClient::onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask)
|
||||||
{
|
{
|
||||||
LOC_LOGD("%s]: (%02x)", __FUNCTION__, capabilitiesMask);
|
LOC_LOGD("%s]: (%02x)", __FUNCTION__, capabilitiesMask);
|
||||||
mLocationCapabilitiesMask = capabilitiesMask;
|
mLocationCapabilitiesMask = capabilitiesMask;
|
||||||
|
mLocationCapabilitiesCached = true;
|
||||||
if (mGnssCbIface != nullptr) {
|
if (mGnssCbIface != nullptr) {
|
||||||
uint32_t data = 0;
|
uint32_t data = 0;
|
||||||
if ((capabilitiesMask & LOCATION_CAPABILITIES_TIME_BASED_TRACKING_BIT) ||
|
if ((capabilitiesMask & LOCATION_CAPABILITIES_TIME_BASED_TRACKING_BIT) ||
|
||||||
|
|
|
@ -74,6 +74,7 @@ public:
|
||||||
inline LocationCapabilitiesMask gnssGetCapabilities() const {
|
inline LocationCapabilitiesMask gnssGetCapabilities() const {
|
||||||
return mLocationCapabilitiesMask;
|
return mLocationCapabilitiesMask;
|
||||||
}
|
}
|
||||||
|
void requestCapabilities();
|
||||||
|
|
||||||
// callbacks we are interested in
|
// callbacks we are interested in
|
||||||
void onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask) final;
|
void onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask) final;
|
||||||
|
@ -90,6 +91,7 @@ private:
|
||||||
sp<IGnssNiCallback> mGnssNiCbIface;
|
sp<IGnssNiCallback> mGnssNiCbIface;
|
||||||
|
|
||||||
LocationCapabilitiesMask mLocationCapabilitiesMask;
|
LocationCapabilitiesMask mLocationCapabilitiesMask;
|
||||||
|
bool mLocationCapabilitiesCached;
|
||||||
|
|
||||||
LocationOptions mLocationOptions;
|
LocationOptions mLocationOptions;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue