Merge "Call DeleteLocalRef on callObjectMethod's returned value"
This commit is contained in:
@@ -226,17 +226,18 @@ jobject GnssAntennaInfoCallback::translateSingleGnssAntennaInfo(
|
||||
env->NewObject(class_gnssAntennaInfoBuilder, method_gnssAntennaInfoBuilderCtor);
|
||||
|
||||
// Set fields
|
||||
env->CallObjectMethod(gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetCarrierFrequencyMHz,
|
||||
gnssAntennaInfo.carrierFrequencyMHz);
|
||||
env->CallObjectMethod(gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetPhaseCenterOffset, phaseCenterOffset);
|
||||
env->CallObjectMethod(gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetPhaseCenterVariationCorrections,
|
||||
phaseCenterVariationCorrections);
|
||||
env->CallObjectMethod(gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetSignalGainCorrections,
|
||||
signalGainCorrections);
|
||||
callObjectMethodIgnoringResult(env, gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetCarrierFrequencyMHz,
|
||||
gnssAntennaInfo.carrierFrequencyMHz);
|
||||
callObjectMethodIgnoringResult(env, gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetPhaseCenterOffset,
|
||||
phaseCenterOffset);
|
||||
callObjectMethodIgnoringResult(env, gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetPhaseCenterVariationCorrections,
|
||||
phaseCenterVariationCorrections);
|
||||
callObjectMethodIgnoringResult(env, gnssAntennaInfoBuilderObject,
|
||||
method_gnssAntennaInfoBuilderSetSignalGainCorrections,
|
||||
signalGainCorrections);
|
||||
|
||||
// build
|
||||
jobject gnssAntennaInfoObject =
|
||||
|
||||
@@ -212,13 +212,14 @@ void setMeasurementData(JNIEnv* env, jobject& callbacksObj, jobject clock,
|
||||
jobject gnssMeasurementsEventBuilderObject =
|
||||
env->NewObject(class_gnssMeasurementsEventBuilder,
|
||||
method_gnssMeasurementsEventBuilderCtor);
|
||||
env->CallObjectMethod(gnssMeasurementsEventBuilderObject,
|
||||
method_gnssMeasurementsEventBuilderSetClock, clock);
|
||||
env->CallObjectMethod(gnssMeasurementsEventBuilderObject,
|
||||
method_gnssMeasurementsEventBuilderSetMeasurements, measurementArray);
|
||||
env->CallObjectMethod(gnssMeasurementsEventBuilderObject,
|
||||
method_gnssMeasurementsEventBuilderSetGnssAutomaticGainControls,
|
||||
gnssAgcArray);
|
||||
callObjectMethodIgnoringResult(env, gnssMeasurementsEventBuilderObject,
|
||||
method_gnssMeasurementsEventBuilderSetClock, clock);
|
||||
callObjectMethodIgnoringResult(env, gnssMeasurementsEventBuilderObject,
|
||||
method_gnssMeasurementsEventBuilderSetMeasurements,
|
||||
measurementArray);
|
||||
callObjectMethodIgnoringResult(env, gnssMeasurementsEventBuilderObject,
|
||||
method_gnssMeasurementsEventBuilderSetGnssAutomaticGainControls,
|
||||
gnssAgcArray);
|
||||
jobject gnssMeasurementsEventObject =
|
||||
env->CallObjectMethod(gnssMeasurementsEventBuilderObject,
|
||||
method_gnssMeasurementsEventBuilderBuild);
|
||||
@@ -408,24 +409,24 @@ void GnssMeasurementCallbackAidl::translateSingleGnssMeasurement(JNIEnv* env,
|
||||
satellitePvt.satClockInfo.satHardwareCodeBiasMeters,
|
||||
satellitePvt.satClockInfo.satTimeCorrectionMeters,
|
||||
satellitePvt.satClockInfo.satClkDriftMps);
|
||||
env->CallObjectMethod(satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetPositionEcef, positionEcef);
|
||||
env->CallObjectMethod(satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetVelocityEcef, velocityEcef);
|
||||
env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderSetClockInfo,
|
||||
clockInfo);
|
||||
callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetPositionEcef, positionEcef);
|
||||
callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetVelocityEcef, velocityEcef);
|
||||
callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetClockInfo, clockInfo);
|
||||
}
|
||||
|
||||
if (satFlags & SatellitePvt::HAS_IONO) {
|
||||
env->CallObjectMethod(satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetIonoDelayMeters,
|
||||
satellitePvt.ionoDelayMeters);
|
||||
callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetIonoDelayMeters,
|
||||
satellitePvt.ionoDelayMeters);
|
||||
}
|
||||
|
||||
if (satFlags & SatellitePvt::HAS_TROPO) {
|
||||
env->CallObjectMethod(satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetTropoDelayMeters,
|
||||
satellitePvt.tropoDelayMeters);
|
||||
callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
|
||||
method_satellitePvtBuilderSetTropoDelayMeters,
|
||||
satellitePvt.tropoDelayMeters);
|
||||
}
|
||||
|
||||
jobject satellitePvtObject =
|
||||
@@ -453,17 +454,19 @@ void GnssMeasurementCallbackAidl::translateSingleGnssMeasurement(JNIEnv* env,
|
||||
jobject correlationVectorBuilderObject =
|
||||
env->NewObject(class_correlationVectorBuilder,
|
||||
method_correlationVectorBuilderCtor);
|
||||
env->CallObjectMethod(correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetMagnitude, magnitudeArray);
|
||||
env->CallObjectMethod(correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetFrequencyOffsetMetersPerSecond,
|
||||
correlationVector.frequencyOffsetMps);
|
||||
env->CallObjectMethod(correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetSamplingStartMeters,
|
||||
correlationVector.samplingStartM);
|
||||
env->CallObjectMethod(correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetSamplingWidthMeters,
|
||||
correlationVector.samplingWidthM);
|
||||
callObjectMethodIgnoringResult(env, correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetMagnitude,
|
||||
magnitudeArray);
|
||||
callObjectMethodIgnoringResult(
|
||||
env, correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetFrequencyOffsetMetersPerSecond,
|
||||
correlationVector.frequencyOffsetMps);
|
||||
callObjectMethodIgnoringResult(env, correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetSamplingStartMeters,
|
||||
correlationVector.samplingStartM);
|
||||
callObjectMethodIgnoringResult(env, correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderSetSamplingWidthMeters,
|
||||
correlationVector.samplingWidthM);
|
||||
jobject correlationVectorObject =
|
||||
env->CallObjectMethod(correlationVectorBuilderObject,
|
||||
method_correlationVectorBuilderBuild);
|
||||
@@ -519,12 +522,14 @@ jobjectArray GnssMeasurementCallbackAidl::translateAllGnssAgcs(JNIEnv* env,
|
||||
const GnssAgc& gnssAgc = agcs[i];
|
||||
|
||||
jobject agcBuilderObject = env->NewObject(class_gnssAgcBuilder, method_gnssAgcBuilderCtor);
|
||||
env->CallObjectMethod(agcBuilderObject, method_gnssAgcBuilderSetLevelDb,
|
||||
gnssAgc.agcLevelDb);
|
||||
env->CallObjectMethod(agcBuilderObject, method_gnssAgcBuilderSetConstellationType,
|
||||
(int)gnssAgc.constellation);
|
||||
env->CallObjectMethod(agcBuilderObject, method_gnssAgcBuilderSetCarrierFrequencyHz,
|
||||
gnssAgc.carrierFrequencyHz);
|
||||
callObjectMethodIgnoringResult(env, agcBuilderObject, method_gnssAgcBuilderSetLevelDb,
|
||||
gnssAgc.agcLevelDb);
|
||||
callObjectMethodIgnoringResult(env, agcBuilderObject,
|
||||
method_gnssAgcBuilderSetConstellationType,
|
||||
(int)gnssAgc.constellation);
|
||||
callObjectMethodIgnoringResult(env, agcBuilderObject,
|
||||
method_gnssAgcBuilderSetCarrierFrequencyHz,
|
||||
gnssAgc.carrierFrequencyHz);
|
||||
jobject agcObject = env->CallObjectMethod(agcBuilderObject, method_gnssAgcBuilderBuild);
|
||||
|
||||
env->SetObjectArrayElement(gnssAgcArray, i, agcObject);
|
||||
|
||||
@@ -111,6 +111,13 @@ void checkAndClearExceptionFromCallback(JNIEnv* env, const char* methodName) {
|
||||
}
|
||||
}
|
||||
|
||||
void callObjectMethodIgnoringResult(JNIEnv* env, jobject obj, jmethodID mid, ...) {
|
||||
va_list args;
|
||||
va_start(args, mid);
|
||||
env->DeleteLocalRef(env->CallObjectMethodV(obj, mid, args));
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
JavaObject::JavaObject(JNIEnv* env, jclass clazz, jmethodID defaultCtor)
|
||||
: env_(env), clazz_(clazz) {
|
||||
object_ = env_->NewObject(clazz_, defaultCtor);
|
||||
|
||||
@@ -56,6 +56,8 @@ jboolean checkAidlStatus(const android::binder::Status& status, const char* erro
|
||||
|
||||
void checkAndClearExceptionFromCallback(JNIEnv* env, const char* methodName);
|
||||
|
||||
void callObjectMethodIgnoringResult(JNIEnv* env, jobject obj, jmethodID mid, ...);
|
||||
|
||||
template <class T>
|
||||
void logHidlError(hardware::Return<T>& result, const char* errorMessage) {
|
||||
ALOGE("%s HIDL transport error: %s", errorMessage, result.description().c_str());
|
||||
|
||||
Reference in New Issue
Block a user