Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c9dcba3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Support HAL v3.0 in inject_psds_data"

parents a90f6e05 ac3e0896
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -821,7 +821,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
            byte[] data = psdsDownloader.downloadPsdsData(psdsType);
            if (data != null) {
                if (DEBUG) Log.d(TAG, "calling native_inject_psds_data");
                native_inject_psds_data(data, data.length);
                native_inject_psds_data(data, data.length, psdsType);
                mPsdsBackOff.reset();
            }

@@ -2111,7 +2111,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements

    private native boolean native_supports_psds();

    private native void native_inject_psds_data(byte[] data, int length);
    private native void native_inject_psds_data(byte[] data, int length, int psdsType);

    // DEBUG Support
    private native String native_get_internal_state();
+15 −8
Original line number Diff line number Diff line
@@ -928,7 +928,7 @@ Return<void> GnssCallback::gnssSetSystemInfoCb(const IGnssCallback_V2_0::GnssSys
 * GnssPsdsCallback class implements the callback methods for the IGnssPsds
 * interface.
 */
class GnssPsdsCallback : public IGnssPsdsCallback {
struct GnssPsdsCallback : public IGnssPsdsCallback {
    Return<void> downloadRequestCb() override;
    Return<void> downloadRequestCb_3_0(int32_t psdsType) override;
};
@@ -2743,19 +2743,26 @@ static void android_location_GnssLocationProvider_inject_location(JNIEnv* /* env

static jboolean android_location_GnssLocationProvider_supports_psds(
        JNIEnv* /* env */, jobject /* obj */) {
    return (gnssXtraIface != nullptr) ? JNI_TRUE : JNI_FALSE;
    return (gnssPsdsIface != nullptr || gnssXtraIface != nullptr) ? JNI_TRUE : JNI_FALSE;
}

static void android_location_GnssLocationProvider_inject_psds_data(JNIEnv* env, jobject /* obj */,
        jbyteArray data, jint length) {
    if (gnssXtraIface == nullptr) {
        ALOGE("%s: IGnssXtra interface not available.", __func__);
                                                                   jbyteArray data, jint length,
                                                                   jint psdsType) {
    if (gnssPsdsIface == nullptr && gnssXtraIface == nullptr) {
        ALOGE("%s: IGnssPsds or IGnssXtra interface not available.", __func__);
        return;
    }

    jbyte* bytes = reinterpret_cast<jbyte *>(env->GetPrimitiveArrayCritical(data, 0));
    if (gnssPsdsIface != nullptr) {
        auto result = gnssPsdsIface->injectPsdsData_3_0(psdsType,
                                                        std::string((const char*)bytes, length));
        checkHidlReturn(result, "IGnssPsds injectPsdsData() failed.");
    } else if (gnssXtraIface != nullptr) {
        auto result = gnssXtraIface->injectXtraData(std::string((const char*)bytes, length));
        checkHidlReturn(result, "IGnssXtra injectXtraData() failed.");
    }
    env->ReleasePrimitiveArrayCritical(data, bytes, JNI_ABORT);
}

@@ -3685,7 +3692,7 @@ static const JNINativeMethod sLocationProviderMethods[] = {
         reinterpret_cast<void*>(android_location_GnssLocationProvider_inject_location)},
        {"native_supports_psds", "()Z",
         reinterpret_cast<void*>(android_location_GnssLocationProvider_supports_psds)},
        {"native_inject_psds_data", "([BI)V",
        {"native_inject_psds_data", "([BII)V",
         reinterpret_cast<void*>(android_location_GnssLocationProvider_inject_psds_data)},
        {"native_agps_set_id", "(ILjava/lang/String;)V",
         reinterpret_cast<void*>(android_location_GnssLocationProvider_agps_set_id)},