mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-09-12 17:26:35 +02:00
Garmin: Add FileDownloadedDeviceEvent and (disabled) file deletion
Also adds (disabled) file deletion in case of already downloaded files
This commit is contained in:
parent
b2d6f4492a
commit
4c25ae2d83
@ -13,6 +13,7 @@ import java.nio.ByteOrder;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.FileDownloadedDeviceEvent;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.DownloadRequestMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.DownloadRequestMessage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.FileTransferDataMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.FileTransferDataMessage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.GFDIMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.GFDIMessage;
|
||||||
@ -132,7 +133,9 @@ public class FileTransferHandler implements MessageHandler {
|
|||||||
LOG.error("Failed to save file", e);
|
LOG.error("Failed to save file", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG.debug("FILE DOWNLOAD COMPLETE {}", currentlyDownloading.getFileName());
|
FileDownloadedDeviceEvent fileDownloadedDeviceEvent = new FileDownloadedDeviceEvent();
|
||||||
|
fileDownloadedDeviceEvent.directoryEntry = currentlyDownloading.directoryEntry;
|
||||||
|
deviceSupport.evaluateGBDeviceEvent(fileDownloadedDeviceEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseDirectoryEntries() {
|
private void parseDirectoryEntries() {
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin;
|
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin;
|
||||||
|
|
||||||
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_ALLOW_HIGH_MTU;
|
|
||||||
|
|
||||||
import android.bluetooth.BluetoothGatt;
|
import android.bluetooth.BluetoothGatt;
|
||||||
import android.bluetooth.BluetoothGattCharacteristic;
|
import android.bluetooth.BluetoothGattCharacteristic;
|
||||||
|
|
||||||
@ -41,6 +39,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateA
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.communicator.ICommunicator;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.communicator.ICommunicator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.communicator.v1.CommunicatorV1;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.communicator.v1.CommunicatorV1;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.communicator.v2.CommunicatorV2;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.communicator.v2.CommunicatorV2;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.FileDownloadedDeviceEvent;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.NotificationSubscriptionDeviceEvent;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.NotificationSubscriptionDeviceEvent;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.SupportedFileTypesDeviceEvent;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.SupportedFileTypesDeviceEvent;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.WeatherRequestDeviceEvent;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.WeatherRequestDeviceEvent;
|
||||||
@ -53,12 +52,15 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.GFDI
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.MusicControlEntityUpdateMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.MusicControlEntityUpdateMessage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.ProtobufMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.ProtobufMessage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.SetDeviceSettingsMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.SetDeviceSettingsMessage;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.SetFileFlagsMessage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.SupportedFileTypesMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.SupportedFileTypesMessage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.SystemEventMessage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.SystemEventMessage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
|
||||||
|
|
||||||
|
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_ALLOW_HIGH_MTU;
|
||||||
|
|
||||||
|
|
||||||
public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommunicator.Callback {
|
public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommunicator.Callback {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(GarminSupport.class);
|
private static final Logger LOG = LoggerFactory.getLogger(GarminSupport.class);
|
||||||
@ -222,6 +224,11 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni
|
|||||||
} else if (deviceEvent instanceof SupportedFileTypesDeviceEvent) {
|
} else if (deviceEvent instanceof SupportedFileTypesDeviceEvent) {
|
||||||
this.supportedFileTypeList.clear();
|
this.supportedFileTypeList.clear();
|
||||||
this.supportedFileTypeList.addAll(((SupportedFileTypesDeviceEvent) deviceEvent).getSupportedFileTypes());
|
this.supportedFileTypeList.addAll(((SupportedFileTypesDeviceEvent) deviceEvent).getSupportedFileTypes());
|
||||||
|
} else if (deviceEvent instanceof FileDownloadedDeviceEvent) {
|
||||||
|
LOG.debug("FILE DOWNLOAD COMPLETE {}", ((FileDownloadedDeviceEvent) deviceEvent).directoryEntry.getFileName());
|
||||||
|
|
||||||
|
if (false) // delete file from watch upon successful download TODO: add device setting
|
||||||
|
sendOutgoingMessage(new SetFileFlagsMessage(((FileDownloadedDeviceEvent) deviceEvent).directoryEntry.getFileIndex(), SetFileFlagsMessage.FileFlags.ARCHIVE));
|
||||||
}
|
}
|
||||||
|
|
||||||
super.evaluateGBDeviceEvent(deviceEvent);
|
super.evaluateGBDeviceEvent(deviceEvent);
|
||||||
@ -369,8 +376,10 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni
|
|||||||
try {
|
try {
|
||||||
FileTransferHandler.DirectoryEntry directoryEntry = filesToDownload.remove();
|
FileTransferHandler.DirectoryEntry directoryEntry = filesToDownload.remove();
|
||||||
while (checkFileExists(directoryEntry.getFileName())) {
|
while (checkFileExists(directoryEntry.getFileName())) {
|
||||||
directoryEntry = filesToDownload.remove();
|
|
||||||
LOG.debug("File: {} already downloaded, not downloading again.", directoryEntry.getFileName());
|
LOG.debug("File: {} already downloaded, not downloading again.", directoryEntry.getFileName());
|
||||||
|
if (false) // delete file from watch if already downloaded TODO: add device setting
|
||||||
|
sendOutgoingMessage(new SetFileFlagsMessage(directoryEntry.getFileIndex(), SetFileFlagsMessage.FileFlags.ARCHIVE));
|
||||||
|
directoryEntry = filesToDownload.remove();
|
||||||
}
|
}
|
||||||
DownloadRequestMessage downloadRequestMessage = fileTransferHandler.downloadDirectoryEntry(directoryEntry);
|
DownloadRequestMessage downloadRequestMessage = fileTransferHandler.downloadDirectoryEntry(directoryEntry);
|
||||||
if (downloadRequestMessage != null) {
|
if (downloadRequestMessage != null) {
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.FileTransferHandler;
|
||||||
|
|
||||||
|
public class FileDownloadedDeviceEvent extends GBDeviceEvent {
|
||||||
|
public FileTransferHandler.DirectoryEntry directoryEntry;
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user