diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java index 89f8d78ed..31c80d58f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java @@ -81,6 +81,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.Optional; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; + import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_ALLOW_HIGH_MTU; import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_GARMIN_DEFAULT_REPLY_SUFFIX; import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_SEND_APP_NOTIFICATIONS; @@ -93,12 +94,13 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni private final FileTransferHandler fileTransferHandler; private final Queue filesToDownload; private final List messageHandlers; + private final List supportedFileTypeList = new ArrayList<>(); + private final List filesToProcess = new ArrayList<>(); private ICommunicator communicator; private MusicStateSpec musicStateSpec; private Timer musicStateTimer; - - private final List supportedFileTypeList = new ArrayList<>(); - private final List filesToProcess = new ArrayList<>(); + private boolean mFirstConnect = false; + private boolean isBusyFetching; public GarminSupport() { super(LOG); @@ -235,7 +237,6 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni } - @Override public void onSetCallState(CallSpec callSpec) { LOG.info("INCOMING CALLSPEC: {}", callSpec.command); @@ -314,7 +315,6 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni sendOutgoingMessage("delete notification " + id, notificationsHandler.onDeleteNotification(id)); } - @Override public void onSendWeather(final ArrayList weatherSpecs) { //todo: find the closest one relative to the requested lat/long sendWeatherConditions(weatherSpecs.get(0)); @@ -444,6 +444,11 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni sendOutgoingMessage("request supported file types", new SupportedFileTypesMessage()); sendOutgoingMessage("toggle default reply suffix", toggleDefaultReplySuffix(getDevicePrefs().getBoolean(PREF_GARMIN_DEFAULT_REPLY_SUFFIX, true))); + + if (mFirstConnect) { + sendOutgoingMessage("set sync complete", new SystemEventMessage(SystemEventMessage.GarminSystemEventType.SYNC_COMPLETE, 0)); + this.mFirstConnect = false; + } } private ProtobufMessage toggleDefaultReplySuffix(boolean value) { @@ -473,8 +478,6 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni } } - private boolean isBusyFetching; - private void processDownloadQueue() { if (!filesToDownload.isEmpty() && !fileTransferHandler.isDownloading()) { if (!gbDevice.isBusy()) { @@ -517,7 +520,7 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni // Keep the device marked as busy while we process the files asynchronously final FitAsyncProcessor fitAsyncProcessor = new FitAsyncProcessor(getContext(), getDevice()); - final List filesToProcessClone = new ArrayList<>(filesToProcess); + final List filesToProcessClone = new ArrayList<>(filesToProcess); filesToProcess.clear(); final long[] lastNotificationUpdateTs = new long[]{System.currentTimeMillis()}; fitAsyncProcessor.process(filesToProcessClone, new FitAsyncProcessor.Callback() { @@ -735,6 +738,12 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni return (GarminCoordinator) getDevice().getDeviceCoordinator(); } + @Override + public boolean connectFirstTime() { + mFirstConnect = true; + return super.connect(); + } + @Override public void onTestNewFunction() { parseAllFitFilesFromStorage();