Merge "Implement AIDL setCapabilitiesCb"
This commit is contained in:
committed by
Android (Google) Code Review
commit
77ff851a57
@@ -377,6 +377,7 @@ public class GnssNative {
|
||||
private volatile boolean mItarSpeedLimitExceeded;
|
||||
|
||||
private GnssCapabilities mCapabilities = new GnssCapabilities.Builder().build();
|
||||
private @GnssCapabilities.TopHalCapabilityFlags int mTopFlags;
|
||||
private @Nullable GnssPowerStats mPowerStats = null;
|
||||
private int mHardwareYear = 0;
|
||||
private @Nullable String mHardwareModelName = null;
|
||||
@@ -490,6 +491,7 @@ public class GnssNative {
|
||||
|
||||
private void initializeGnss(boolean restart) {
|
||||
Preconditions.checkState(mRegistered);
|
||||
mTopFlags = 0;
|
||||
mGnssHal.initOnce(GnssNative.this, restart);
|
||||
|
||||
// gnss chipset appears to require an init/cleanup cycle on startup in order to properly
|
||||
@@ -1031,8 +1033,12 @@ public class GnssNative {
|
||||
|
||||
@NativeEntryPoint
|
||||
void setTopHalCapabilities(@GnssCapabilities.TopHalCapabilityFlags int capabilities) {
|
||||
// Here the bits specified by 'capabilities' are turned on. It is handled differently from
|
||||
// sub hal because top hal capabilities could be set by HIDL HAL and/or AIDL HAL. Each of
|
||||
// them possesses a different set of capabilities.
|
||||
mTopFlags |= capabilities;
|
||||
GnssCapabilities oldCapabilities = mCapabilities;
|
||||
mCapabilities = oldCapabilities.withTopHalFlags(capabilities);
|
||||
mCapabilities = oldCapabilities.withTopHalFlags(mTopFlags);
|
||||
onCapabilitiesChanged(oldCapabilities, mCapabilities);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <android/hardware/gnss/2.1/IGnssMeasurement.h>
|
||||
#include <android/hardware/gnss/3.0/IGnssPsds.h>
|
||||
#include <android/hardware/gnss/BnGnss.h>
|
||||
#include <android/hardware/gnss/BnGnssCallback.h>
|
||||
#include <android/hardware/gnss/BnGnssMeasurementCallback.h>
|
||||
#include <android/hardware/gnss/BnGnssPowerIndicationCallback.h>
|
||||
#include <android/hardware/gnss/BnGnssPsdsCallback.h>
|
||||
@@ -223,6 +224,7 @@ using android::hardware::gnss::IGnssPowerIndication;
|
||||
using android::hardware::gnss::IGnssPowerIndicationCallback;
|
||||
using android::hardware::gnss::PsdsType;
|
||||
using IGnssAidl = android::hardware::gnss::IGnss;
|
||||
using IGnssCallbackAidl = android::hardware::gnss::IGnssCallback;
|
||||
using IGnssPsdsAidl = android::hardware::gnss::IGnssPsds;
|
||||
using IGnssPsdsCallbackAidl = android::hardware::gnss::IGnssPsdsCallback;
|
||||
using IGnssConfigurationAidl = android::hardware::gnss::IGnssConfiguration;
|
||||
@@ -711,6 +713,19 @@ Return<void> GnssCallback::gnssSetSystemInfoCb(const IGnssCallback_V2_0::GnssSys
|
||||
return Void();
|
||||
}
|
||||
|
||||
class GnssCallbackAidl : public android::hardware::gnss::BnGnssCallback {
|
||||
public:
|
||||
Status gnssSetCapabilitiesCb(const int capabilities) override;
|
||||
};
|
||||
|
||||
Status GnssCallbackAidl::gnssSetCapabilitiesCb(const int capabilities) {
|
||||
ALOGD("GnssCallbackAidl::%s: %du\n", __func__, capabilities);
|
||||
JNIEnv* env = getJniEnv();
|
||||
env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities);
|
||||
checkAndClearExceptionFromCallback(env, __FUNCTION__);
|
||||
return Status::ok();
|
||||
}
|
||||
|
||||
/*
|
||||
* GnssPowerIndicationCallback class implements the callback methods for the IGnssPowerIndication
|
||||
* interface.
|
||||
@@ -1987,6 +2002,14 @@ static jboolean android_location_gnss_hal_GnssNative_init(JNIEnv* /* env */, jcl
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
sp<IGnssCallbackAidl> gnssCbIfaceAidl = new GnssCallbackAidl();
|
||||
if (gnssHalAidl != nullptr) {
|
||||
auto status = gnssHalAidl->setCallback(gnssCbIfaceAidl);
|
||||
if (!checkAidlStatus(status, "IGnssAidl setCallback() failed.")) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// Set IGnssPsds or IGnssXtra callback.
|
||||
if (gnssPsdsAidlIface != nullptr) {
|
||||
sp<IGnssPsdsCallbackAidl> gnssPsdsCallbackAidl = new GnssPsdsCallbackAidl();
|
||||
|
||||
Reference in New Issue
Block a user