From 55449c1d25a55ba17f287e217089e6f4df343576 Mon Sep 17 00:00:00 2001 From: Daniel Dakhno Date: Sun, 29 Nov 2020 17:15:03 +0100 Subject: [PATCH] Fossil Hybrid: added fallback vibration to old Q's --- .../adapter/fossil/FossilWatchAdapter.java | 40 +++++++++++++++++-- .../fossil_hr/FossilHRWatchAdapter.java | 37 ----------------- 2 files changed, 37 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java index 5d3e2e250..54c658430 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java @@ -29,11 +29,15 @@ import org.json.JSONException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; +import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.NotificationConfiguration; @@ -58,6 +62,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fos import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.device_info.GetDeviceInfoRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.device_info.SupportedFileVersionsInfo; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FilePutRequest; +import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.file.FirmwareFilePutRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.notification.NotificationFilterPutRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fossil.notification.PlayTextNotificationRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.misfit.AnimationRequest; @@ -65,7 +70,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.mis import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.misfit.ReleaseHandsControlRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.misfit.RequestHandControlRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.misfit.SaveCalibrationRequest; +import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.GB; +import nodomain.freeyourgadget.gadgetbridge.util.UriHelper; import static nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport.ITEM_STEP_GOAL; import static nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport.ITEM_TIMEZONE_OFFSET; @@ -411,7 +418,20 @@ public class FossilWatchAdapter extends WatchAdapter { @Override public void onInstallApp(Uri uri) { - + UriHelper uriHelper = null; + try { + uriHelper = UriHelper.get(uri, getContext()); + } catch (IOException e) { + GB.toast(getContext(), "Could not open firmare: " + e.getMessage(), Toast.LENGTH_LONG, GB.ERROR, e); + } + if (uriHelper != null) { + try (InputStream in = new BufferedInputStream(uriHelper.openInputStream())) { + byte[] firmwareBytes = FileUtils.readAll(in, 1024 * 2024); // 2MB + queueWrite(new FirmwareFilePutRequest(firmwareBytes, this)); + } catch (Exception e) { + GB.toast(getContext(), "Firmware cannot be installed: " + e.getMessage(), Toast.LENGTH_LONG, GB.ERROR, e); + } + } } @Override @@ -556,8 +576,22 @@ public class FossilWatchAdapter extends WatchAdapter { @Override public void onFindDevice(boolean start) { try { - if (this.supportsExtendedVibration()) { - GB.toast("Device does not support brr brr", Toast.LENGTH_SHORT, GB.INFO); + if (!this.supportsExtendedVibration()) { + if (start) { + new TransactionBuilder("vibrate find") + .write( + getDeviceSupport().getCharacteristic(UUID.fromString("3dda0005-957f-7d4a-34a6-74696673696d")), + new byte[]{(byte) 0x01, (byte) 0x04, (byte) 0x30, (byte) 0x75, (byte) 0x00, (byte) 0x00} + ) + .queue(getDeviceSupport().getQueue()); + } else { + new TransactionBuilder("vibrate find") + .write( + getDeviceSupport().getCharacteristic(UUID.fromString("3dda0005-957f-7d4a-34a6-74696673696d")), + new byte[]{(byte) 0x02, (byte) 0x05, (byte) 0x04} + ) + .queue(getDeviceSupport().getQueue()); + } } } catch (UnsupportedOperationException e) { getDeviceSupport().notifiyException(e); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java index 4d85f78cb..413ca9190 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java @@ -859,25 +859,6 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { renderWidgets(); } - @Override - public void onFindDevice(boolean start) { - if (start) { - new TransactionBuilder("vibrate find") - .write( - getDeviceSupport().getCharacteristic(UUID.fromString("3dda0005-957f-7d4a-34a6-74696673696d")), - new byte[]{(byte) 0x01, (byte) 0x04, (byte) 0x30, (byte) 0x75, (byte) 0x00, (byte) 0x00} - ) - .queue(getDeviceSupport().getQueue()); - } else { - new TransactionBuilder("vibrate find") - .write( - getDeviceSupport().getCharacteristic(UUID.fromString("3dda0005-957f-7d4a-34a6-74696673696d")), - new byte[]{(byte) 0x02, (byte) 0x05, (byte) 0x04} - ) - .queue(getDeviceSupport().getQueue()); - } - } - @Override public void onSetCallState(CallSpec callSpec) { super.onSetCallState(callSpec); @@ -1053,24 +1034,6 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { });*/ } - @Override - public void onInstallApp(Uri uri) { - UriHelper uriHelper = null; - try { - uriHelper = UriHelper.get(uri, getContext()); - } catch (IOException e) { - GB.toast(getContext(), "Could not open firmare: " + e.getMessage(), Toast.LENGTH_LONG, GB.ERROR, e); - } - if (uriHelper != null) { - try (InputStream in = new BufferedInputStream(uriHelper.openInputStream())) { - byte[] firmwareBytes = FileUtils.readAll(in, 1024 * 2024); // 2MB - queueWrite(new FirmwareFilePutRequest(firmwareBytes, this)); - } catch (Exception e) { - GB.toast(getContext(), "Firmware cannot be installed: " + e.getMessage(), Toast.LENGTH_LONG, GB.ERROR, e); - } - } - } - public byte[] getSecretKey() throws IllegalAccessException { byte[] authKeyBytes = new byte[16];