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

Commit 4bffe89b authored by Lifu Tang's avatar Lifu Tang Committed by Android (Google) Code Review
Browse files

Merge "Checked the flag not set in the correct way" into nyc-dev

parents d8895111 ccb44880
Loading
Loading
Loading
Loading
+22 −5
Original line number Diff line number Diff line
@@ -1087,8 +1087,25 @@ template<>
const char *const JavaMethodHelper<bool>::signature_ = "(Z)V";

#define SET(setter, value) object.callSetter("set" # setter, (value))
#define SET_IF(flag, setter, value) \
        if (flags & (flag)) object.callSetter("set" # setter, (value))

// If you want to check if a flag is not set, use SET_IF_NOT(FLAG, setter,
// value) to do that. SET_IF(!FLAG, setter, value) won't compile.
//
// This macros generates compilation error if the provided 'flag' is not a
// single token. For example, 'GNSS_CLOCK_HAS_BIAS' can be accepted, but
// '!GNSS_CLOCK_HAS_DRIFT' will fail to compile.
#define SET_IF(flag, setter, value) do { \
        if (flags & flag) { \
            JavaObject& name_check_##flag = object; \
            name_check_##flag.callSetter("set" # setter, (value)); \
        } \
    } while (false)
#define SET_IF_NOT(flag, setter, value) do { \
        if (!(flags & flag)) { \
            JavaObject& name_check_##flag = object; \
            name_check_##flag.callSetter("set" # setter, (value)); \
        } \
    } while (false)

static jobject translate_gps_clock(JNIEnv* env, GpsClock* clock) {
    static uint32_t discontinuity_count_to_handle_old_lock_type = 0;
@@ -1209,7 +1226,7 @@ static jobject translate_gps_measurement(JNIEnv* env,
        static_cast<int32_t>(measurement->multipath_indicator));
    SET_IF(GNSS_MEASUREMENT_HAS_SNR, SnrInDb, measurement->snr_db);

    SET_IF(!GPS_MEASUREMENT_HAS_UNCORRECTED_PSEUDORANGE_RATE,
    SET_IF_NOT(GPS_MEASUREMENT_HAS_UNCORRECTED_PSEUDORANGE_RATE,
               PseudorangeRateCorrected,
               true);