diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/file/FileHandle.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/file/FileHandle.java new file mode 100644 index 000000000..70d2d85ad --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/file/FileHandle.java @@ -0,0 +1,35 @@ +package nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file; + +public enum FileHandle { + OTA_FILE(0x00, 0x00), + FONT_FILE(0x03, 0x00), + MUSIC_INFO(0x04, 0x00), + UI_CONTROL(0x05, 0x00), + HAND_ACTIONS(0x06, 0x00), + SETTINGS_BUTTONS(0x06, 0x00), + ASSET_BACKGROUND_IMAGES(0x07, 0x00), + ASSET_NOTIFICATION_IMAGES(0x07, 0x01), + ASSET_TRANSLATIONS(0x07, 0x02), + ASSET_REPLY_IMAGES(0x07, 0x03), + CONFIGURATION(0x08, 0x00), + NOTIFICATION_PLAY(0x09, 0x00), + ALARMS(0x0A, 0x00), + DEVICE_INFO(0x0b, 0x00), + NOTIFICATION_FILTER(0x0C, 0x00), + WATCH_PARAMETERS(0x0E, 0x00), + LOOK_UP_TABLE(0x0f, 0x00), + RATE(0x10, 0x00), + REPLY_MESSAGES(0x13, 0x00), + ; + + private byte handle, subHandle; + + FileHandle(int handle, int subHandle) { + this.handle = (byte) handle; + this.subHandle = (byte) subHandle; + } + + public short getHandle(){ + return (short)((handle << 8) | (subHandle)); + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/alarm/AlarmsSetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/alarm/AlarmsSetRequest.java index 9dfe4b6ed..11bb88e6f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/alarm/AlarmsSetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/alarm/AlarmsSetRequest.java @@ -23,12 +23,13 @@ import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; import nodomain.freeyourgadget.gadgetbridge.util.Version; public class AlarmsSetRequest extends FilePutRequest { public AlarmsSetRequest(Alarm[] alarms, FossilWatchAdapter adapter) { - super((short) 0x0A00, createFileFromAlarms(alarms, isNewFormat(adapter)), isNewFormat(adapter) ? (short) 3 : (short) 2, adapter); // TODO version 3 + super(FileHandle.ALARMS, createFileFromAlarms(alarms, isNewFormat(adapter)), isNewFormat(adapter) ? (short) 3 : (short) 2, adapter); // TODO version 3 } static private boolean isNewFormat(FossilWatchAdapter adapter) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/button/ButtonConfigurationGetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/button/ButtonConfigurationGetRequest.java index 0241b3a7d..571f1a65e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/button/ButtonConfigurationGetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/button/ButtonConfigurationGetRequest.java @@ -21,11 +21,12 @@ import java.nio.ByteOrder; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.buttonconfig.ConfigPayload; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FileGetRequest; public class ButtonConfigurationGetRequest extends FileGetRequest { public ButtonConfigurationGetRequest(FossilWatchAdapter adapter) { - super((short) 0x0600, adapter); + super(FileHandle.SETTINGS_BUTTONS, adapter); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationGetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationGetRequest.java index 679832df2..9df83d1b0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationGetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationGetRequest.java @@ -20,12 +20,13 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.GenericItem; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FileGetRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FileLookupAndGetRequest; public class ConfigurationGetRequest extends FileGetRequest { public ConfigurationGetRequest(FossilWatchAdapter adapter) { - super((byte) 8, adapter); + super(FileHandle.CONFIGURATION, adapter); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationPutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationPutRequest.java index 4c389ca23..091878f17 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationPutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/configuration/ConfigurationPutRequest.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.HashMap; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; import nodomain.freeyourgadget.gadgetbridge.util.GB; @@ -73,11 +74,11 @@ public class ConfigurationPutRequest extends FilePutRequest { } public ConfigurationPutRequest(ConfigItem item, FossilWatchAdapter adapter) { - super((short) 0x0800, createFileContent(new ConfigItem[]{item}), adapter); + super(FileHandle.CONFIGURATION, createFileContent(new ConfigItem[]{item}), adapter); } public ConfigurationPutRequest(ConfigItem[] items, FossilWatchAdapter adapter) { - super((short) 0x0800, createFileContent(items), adapter); + super(FileHandle.CONFIGURATION, createFileContent(items), adapter); } private static byte[] createFileContent(ConfigItem[] items) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseAndPutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseAndPutRequest.java index 4a1315ab7..ba03d25b3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseAndPutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseAndPutRequest.java @@ -22,6 +22,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.NotificationConfigur import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.notification.NotificationFilterPutRequest; import nodomain.freeyourgadget.gadgetbridge.util.GB; @@ -29,7 +30,7 @@ public class FileCloseAndPutRequest extends FileCloseRequest { FossilWatchAdapter adapter; byte[] data; - public FileCloseAndPutRequest(short fileHandle, byte[] data, FossilWatchAdapter adapter) { + public FileCloseAndPutRequest(FileHandle fileHandle, byte[] data, FossilWatchAdapter adapter) { super(fileHandle); this.adapter = adapter; this.data = data; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseRequest.java index 0f7a077b1..4c3854699 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileCloseRequest.java @@ -22,23 +22,24 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.UUID; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.Request; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.FossilRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.file.ResultCode; public class FileCloseRequest extends FossilRequest { private boolean isFinished = false; - private short handle; + private FileHandle handle; - public FileCloseRequest(short fileHandle) { + public FileCloseRequest(FileHandle fileHandle) { this.handle = fileHandle; ByteBuffer buffer = this.createBuffer(); - buffer.putShort(fileHandle); + buffer.putShort(fileHandle.getHandle()); this.data = buffer.array(); } - public short getHandle() { + public FileHandle getHandle() { return handle; } @@ -61,7 +62,7 @@ public class FileCloseRequest extends FossilRequest { ByteBuffer buffer = ByteBuffer.wrap(value); buffer.order(ByteOrder.LITTLE_ENDIAN); - if(this.handle != buffer.getShort(1)) throw new RuntimeException("wrong response handle"); + if(this.handle.getHandle() != buffer.getShort(1)) throw new RuntimeException("wrong response handle"); byte status = buffer.get(3); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileDeleteRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileDeleteRequest.java index c64353bcd..a32fc2a89 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileDeleteRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileDeleteRequest.java @@ -21,6 +21,7 @@ import android.bluetooth.BluetoothGattCharacteristic; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.FossilRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.file.ResultCode; @@ -38,6 +39,10 @@ public class FileDeleteRequest extends FossilRequest { this.data = buffer.array(); } + public FileDeleteRequest(FileHandle handle){ + this(handle.getHandle()); + } + @Override public void handleResponse(BluetoothGattCharacteristic characteristic) { super.handleResponse(characteristic); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileGetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileGetRequest.java index 120878a87..b9b918dde 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileGetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileGetRequest.java @@ -26,6 +26,7 @@ import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.Request; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.FossilRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.file.ResultCode; @@ -52,6 +53,10 @@ public abstract class FileGetRequest extends FossilRequest { .array(); } + public FileGetRequest(FileHandle handle, FossilWatchAdapter adapter){ + this(handle.getHandle(), adapter); + } + public FossilWatchAdapter getAdapter() { return adapter; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRequest.java index 5f42de634..21b429594 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRequest.java @@ -26,6 +26,7 @@ import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.FossilRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.file.ResultCode; import nodomain.freeyourgadget.gadgetbridge.util.CRC32C; @@ -37,7 +38,9 @@ public class FilePutRequest extends FossilRequest { private ArrayList packets = new ArrayList<>(); - private short handle, fileVersion; + private short fileVersion; + + private FileHandle handle; private FossilWatchAdapter adapter; @@ -45,14 +48,14 @@ public class FilePutRequest extends FossilRequest { private int fullCRC; - public FilePutRequest(short handle, byte[] file, short fileVersion, FossilWatchAdapter adapter) { - this.handle = handle; + public FilePutRequest(FileHandle fileHandle, byte[] file, short fileVersion, FossilWatchAdapter adapter) { + this.handle = fileHandle; this.adapter = adapter; this.fileVersion = fileVersion; int fileLength = file.length + 16; ByteBuffer buffer = this.createBuffer(); - buffer.putShort(1, handle); + buffer.putShort(1, handle.getHandle()); buffer.putInt(3, 0); buffer.putInt(7, fileLength); buffer.putInt(11, fileLength); @@ -64,11 +67,11 @@ public class FilePutRequest extends FossilRequest { state = UploadState.INITIALIZED; } - public FilePutRequest(short handle, byte[] file, FossilWatchAdapter adapter) { - this(handle, file, (short) 2, adapter); + public FilePutRequest(FileHandle fileHandle, byte[] file, FossilWatchAdapter adapter) { + this(fileHandle, file, (short) 2, adapter); } - public short getHandle() { + public FileHandle getHandle() { return handle; } @@ -110,7 +113,7 @@ public class FilePutRequest extends FossilRequest { throw new RuntimeException("upload status: " + code + " (" + status + ")"); } - if (handle != this.handle) { + if (handle != this.handle.getHandle()) { throw new RuntimeException("wrong response handle"); } @@ -122,7 +125,7 @@ public class FilePutRequest extends FossilRequest { ByteBuffer buffer2 = ByteBuffer.allocate(3); buffer2.order(ByteOrder.LITTLE_ENDIAN); buffer2.put((byte) 4); - buffer2.putShort(this.handle); + buffer2.putShort(this.handle.getHandle()); new TransactionBuilder("file close") .write( @@ -144,7 +147,7 @@ public class FilePutRequest extends FossilRequest { short handle = buffer.getShort(1); - if (handle != this.handle) { + if (handle != this.handle.getHandle()) { onFilePut(false); throw new RuntimeException("wrong file closing handle"); } @@ -199,7 +202,7 @@ public class FilePutRequest extends FossilRequest { ByteBuffer buffer = ByteBuffer.allocate(file.length + 12 + 4); buffer.order(ByteOrder.LITTLE_ENDIAN); - buffer.putShort(handle); + buffer.putShort(handle.getHandle()); buffer.putShort(fileVersion); buffer.putInt(0); buffer.putInt(file.length); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileVerifyRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileVerifyRequest.java index 317d3fb4c..4e34911c0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileVerifyRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FileVerifyRequest.java @@ -21,22 +21,23 @@ import android.bluetooth.BluetoothGattCharacteristic; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.FossilRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.file.ResultCode; public class FileVerifyRequest extends FossilRequest { private boolean isFinished = false; - private short handle; + private FileHandle handle; - public FileVerifyRequest(short fileHandle) { + public FileVerifyRequest(FileHandle fileHandle) { this.handle = fileHandle; ByteBuffer buffer = this.createBuffer(); - buffer.putShort(fileHandle); + buffer.putShort(fileHandle.getHandle()); this.data = buffer.array(); } - public short getHandle() { + public FileHandle getHandle() { return handle; } @@ -61,7 +62,7 @@ public class FileVerifyRequest extends FossilRequest { ByteBuffer buffer = ByteBuffer.wrap(value); buffer.order(ByteOrder.LITTLE_ENDIAN); - if(this.handle != buffer.getShort(1)) throw new RuntimeException("wrong response handle"); + if(this.handle.getHandle() != buffer.getShort(1)) throw new RuntimeException("wrong response handle"); byte status = buffer.get(3); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/microapp/PlayCrazyShitRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/microapp/PlayCrazyShitRequest.java index 20de3fab2..2546b7452 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/microapp/PlayCrazyShitRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/microapp/PlayCrazyShitRequest.java @@ -23,11 +23,12 @@ import java.util.List; import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; public class PlayCrazyShitRequest extends FilePutRequest { public PlayCrazyShitRequest(byte[] appData, FossilWatchAdapter adapter) { - super((short) 0x0600, createPayload(appData), adapter); + super(FileHandle.HAND_ACTIONS, createPayload(appData), adapter); } private static byte[] createPayload(byte[] appData) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterGetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterGetRequest.java index 8f4459a0e..e50abb7be 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterGetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterGetRequest.java @@ -20,12 +20,13 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FileGetRequest; import nodomain.freeyourgadget.gadgetbridge.util.CRC32C; public class NotificationFilterGetRequest extends FileGetRequest { public NotificationFilterGetRequest(FossilWatchAdapter adapter) { - super((short) 0x0C00, adapter); + super(FileHandle.NOTIFICATION_FILTER, adapter); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterPutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterPutRequest.java index 51d1ba953..dea97314a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterPutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/NotificationFilterPutRequest.java @@ -23,17 +23,18 @@ import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.NotificationConfiguration; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FileCloseAndPutRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; public class NotificationFilterPutRequest extends FilePutRequest { public NotificationFilterPutRequest(NotificationConfiguration[] configs, FossilWatchAdapter adapter) { - super((short) 0x0C00, createFile(configs), adapter); + super(FileHandle.NOTIFICATION_FILTER, createFile(configs), adapter); } public NotificationFilterPutRequest(ArrayList configs, FossilWatchAdapter adapter) { - super((short) 0x0C00, createFile(configs.toArray(new NotificationConfiguration[0])), adapter); + super(FileHandle.NOTIFICATION_FILTER, createFile(configs.toArray(new NotificationConfiguration[0])), adapter); } private static byte[] createFile(NotificationConfiguration[] configs){ diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java index 0d97fa14c..3f4fca5d8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java @@ -23,20 +23,21 @@ import java.util.Arrays; import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; public abstract class PlayNotificationRequest extends FilePutRequest { public PlayNotificationRequest(int notificationType, int flags, String packageName, FossilWatchAdapter adapter) { - super((short) 0x0900, createFile(notificationType, flags, packageName, packageName, packageName, getCurrentMessageId()), adapter); + super(FileHandle.NOTIFICATION_PLAY, createFile(notificationType, flags, packageName, packageName, packageName, getCurrentMessageId()), adapter); } public PlayNotificationRequest(int notificationType, int flags, String packageName, String sender, String message, FossilWatchAdapter adapter) { - super((short) 0x0900, createFile(notificationType, flags, packageName, sender, message, getCurrentMessageId()), adapter); + super(FileHandle.NOTIFICATION_PLAY, createFile(notificationType, flags, packageName, sender, message, getCurrentMessageId()), adapter); } public PlayNotificationRequest(int notificationType, int flags, int packageCRC, String sender, String message, int messageId, FossilWatchAdapter adapter) { - super((short) 0x0900, createFile(notificationType, flags, "whatever", sender, message, packageCRC, messageId), adapter); + super(FileHandle.NOTIFICATION_PLAY, createFile(notificationType, flags, "whatever", sender, message, packageCRC, messageId), adapter); } private static int getCurrentMessageId(){ diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/AssetFilePutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/AssetFilePutRequest.java index 78236cf51..c09071cdf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/AssetFilePutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/AssetFilePutRequest.java @@ -6,14 +6,15 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; public class AssetFilePutRequest extends FilePutRequest { - public AssetFilePutRequest(AssetFile[] files, byte subHandle, FossilWatchAdapter adapter) throws IOException { - super((short) (0x0700 | subHandle), prepareFileData(files), adapter); + public AssetFilePutRequest(AssetFile[] files, FileHandle handle, FossilWatchAdapter adapter) throws IOException { + super(handle, prepareFileData(files), adapter); } - public AssetFilePutRequest(AssetFile file, byte subHandle, FossilWatchAdapter adapter) { - super((short) (0x0700 | subHandle), prepareFileData(file), adapter); + public AssetFilePutRequest(AssetFile file, FileHandle handle, FossilWatchAdapter adapter) { + super(handle, prepareFileData(file), adapter); } private static byte[] prepareFileData(AssetFile[] files) throws IOException { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedGetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedGetRequest.java index 2b3379f8b..d493dc530 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedGetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedGetRequest.java @@ -35,6 +35,7 @@ import javax.crypto.spec.SecretKeySpec; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil_hr.FossilHRWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.FossilRequest; import nodomain.freeyourgadget.gadgetbridge.util.CRC32C; @@ -64,6 +65,10 @@ public abstract class FileEncryptedGetRequest extends FossilRequest { .array(); } + public FileEncryptedGetRequest(FileHandle handle, FossilHRWatchAdapter adapter) { + this(handle.getHandle(), adapter); + } + private void initDecryption() { try { cipher = Cipher.getInstance("AES/CTR/NoPadding"); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FilePutRawRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FilePutRawRequest.java index 20338bcf6..6bcfb70f2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FilePutRawRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FilePutRawRequest.java @@ -10,6 +10,7 @@ import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.FossilRequest; public class FilePutRawRequest extends FossilRequest { @@ -45,7 +46,11 @@ public class FilePutRawRequest extends FossilRequest { state = UploadState.INITIALIZED; } - public short getHandle() { + public FilePutRawRequest(FileHandle handle, byte[] file, FossilWatchAdapter adapter) { + this(handle.getHandle(), file, adapter); + } + + public short getHandle() { return handle; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/ResultCode.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/ResultCode.java index ffee89d5d..21d705dbf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/ResultCode.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/ResultCode.java @@ -28,7 +28,7 @@ public enum ResultCode { UNKNOWN(-1, false), // no clue what there one mean - UNKNOWN_1(-125, true); + UNKNOWN_1(-125, false); boolean success; int code; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/music/MusicInfoSetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/music/MusicInfoSetRequest.java index 6546cbc37..4a82f2aea 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/music/MusicInfoSetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/music/MusicInfoSetRequest.java @@ -5,11 +5,12 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; public class MusicInfoSetRequest extends FilePutRequest { public MusicInfoSetRequest(String artist, String album, String title, FossilWatchAdapter adapter) { - super((short) 0x0400, createFile(artist, album, title), adapter); + super(FileHandle.MUSIC_INFO, createFile(artist, album, title), adapter); } private static byte[] createFile(String artist, String album, String title) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationFilterPutHRRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationFilterPutHRRequest.java index 1d6cacb12..aec6e16df 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationFilterPutHRRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationFilterPutHRRequest.java @@ -6,17 +6,18 @@ import java.util.ArrayList; import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.NotificationHRConfiguration; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; public class NotificationFilterPutHRRequest extends FilePutRequest { public NotificationFilterPutHRRequest(NotificationHRConfiguration[] configs, FossilWatchAdapter adapter) { - super((short) 0x0C00, createFile(configs), adapter); + super(FileHandle.NOTIFICATION_FILTER, createFile(configs), adapter); } public NotificationFilterPutHRRequest(ArrayList configs, FossilWatchAdapter adapter) { - super((short) 0x0C00, createFile(configs.toArray(new NotificationHRConfiguration[0])), adapter); + super(FileHandle.NOTIFICATION_FILTER, createFile(configs.toArray(new NotificationHRConfiguration[0])), adapter); } private static byte[] createFile(NotificationHRConfiguration[] configs) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationImagePutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationImagePutRequest.java index 27850f7f1..282272a3f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationImagePutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/notification/NotificationImagePutRequest.java @@ -6,21 +6,22 @@ import java.nio.ByteOrder; import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.file.AssetFile; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.file.AssetFilePutRequest; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; public class NotificationImagePutRequest extends AssetFilePutRequest { private NotificationImagePutRequest(String packageName, AssetFile file, FossilWatchAdapter adapter) throws IOException { - super(file, (byte) 0x01, adapter); + super(file, FileHandle.ASSET_NOTIFICATION_IMAGES, adapter); } private NotificationImagePutRequest(NotificationImage image, FossilWatchAdapter adapter) throws IOException { - super(image, (byte) 0x01, adapter); + super(image, FileHandle.ASSET_NOTIFICATION_IMAGES, adapter); } public NotificationImagePutRequest(NotificationImage[] images, FossilWatchAdapter adapter) throws IOException { - super(images, (byte) 0x01, adapter); + super(images, FileHandle.ASSET_NOTIFICATION_IMAGES, adapter); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsGetRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsGetRequest.java index fb3c3f285..6383831ba 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsGetRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsGetRequest.java @@ -1,16 +1,16 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil_hr.translation; -import java.nio.BufferUnderflowException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FileGetRequest; public abstract class TranslationsGetRequest extends FileGetRequest { public TranslationsGetRequest(FossilWatchAdapter adapter) { - super((short) 0x0702, adapter); + super(FileHandle.ASSET_TRANSLATIONS, adapter); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsPutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsPutRequest.java index 2adaead8b..84658c863 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsPutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/translation/TranslationsPutRequest.java @@ -4,11 +4,12 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; public class TranslationsPutRequest extends FilePutRequest { public TranslationsPutRequest(TranslationData translationData, FossilWatchAdapter adapter) { - super((short) 0x0702, createPayload(translationData), (short) 0x0d02, adapter); + super(FileHandle.ASSET_TRANSLATIONS, createPayload(translationData), (short) 0x0d02, adapter); } private static byte[] createPayload(TranslationData translationData){