From 55924e3d9913417802254b5d89991c8856c35d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sat, 30 Aug 2025 21:52:32 +0100 Subject: [PATCH] Zepp OS: Fix steps and weight goals on some versions --- .../zeppos/services/ZeppOsConfigService.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/services/ZeppOsConfigService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/services/ZeppOsConfigService.java index 0a82e09a41..fcc2fcf738 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/services/ZeppOsConfigService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/services/ZeppOsConfigService.java @@ -227,14 +227,27 @@ public class ZeppOsConfigService extends AbstractZeppOsService { final int goalFatBurnTime = GBApplication.getPrefs().getInt(ActivityUser.PREF_USER_GOAL_FAT_BURN_TIME_MINUTES, ActivityUser.defaultUserFatBurnTimeMinutes); LOG.info("Setting Fitness Goals to steps={}, calories={}, sleep={}, weight={}, standingTime={}, fatBurn={}", goalSteps, goalCalories, goalSleep, goalWeight, goalStandingTime, goalFatBurnTime); - newSetter() - .setInt(ConfigArg.FITNESS_GOAL_STEPS, goalSteps) + final ConfigSetter setter = newSetter() .setShort(ConfigArg.FITNESS_GOAL_CALORIES, (short) goalCalories) .setShort(ConfigArg.FITNESS_GOAL_SLEEP, (short) (goalSleep * 60)) - .setShort(ConfigArg.FITNESS_GOAL_WEIGHT, (short) goalWeight) .setShort(ConfigArg.FITNESS_GOAL_STANDING_TIME, (short) (goalStandingTime)) - .setShort(ConfigArg.FITNESS_GOAL_FAT_BURN_TIME, (short) goalFatBurnTime) - .write(builder); + .setShort(ConfigArg.FITNESS_GOAL_FAT_BURN_TIME, (short) goalFatBurnTime); + + final byte healthVersion = Objects.requireNonNullElse(mGroupVersions.get(ConfigGroup.HEALTH), (byte) 0); + + if (healthVersion <= 1) { + setter.setShort(ConfigArg.FITNESS_GOAL_STEPS, (short) goalSteps); + } else { + setter.setInt(ConfigArg.FITNESS_GOAL_STEPS, goalSteps); + } + + if (healthVersion < 3) { + setter.setShort(ConfigArg.FITNESS_GOAL_WEIGHT, (short) goalWeight); + } else { + setter.setInt(ConfigArg.FITNESS_GOAL_WEIGHT, goalWeight); + } + + setter.write(builder); } private void setMeasurementSystem(final ZeppOsTransactionBuilder builder) {