From 64258248b6883ed0bf6f1174b4f5bfd86c7c0956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Fri, 31 May 2024 20:15:15 +0100 Subject: [PATCH] Garmin: Allow install agps for sony cpe url --- .../service/devices/garmin/agps/AgpsHandler.java | 5 +++++ .../service/devices/garmin/agps/GarminAgpsFile.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java index 958b101ac..c3b462611 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java @@ -82,6 +82,11 @@ public class AgpsHandler { reportError(request.getUrl()); return null; } + } else if (request.getPath().startsWith(("/ephemeris/cpe/sony"))) { + if (!garminAgpsFile.isValidSonyCpe()) { + reportError(request.getUrl()); + return null; + } } else { LOG.warn("Refusing to send agps for unknown url"); return null; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/GarminAgpsFile.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/GarminAgpsFile.java index 48a8a5291..673060f18 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/GarminAgpsFile.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/GarminAgpsFile.java @@ -19,6 +19,7 @@ public class GarminAgpsFile { public static final byte[] GZ_HEADER = new byte[]{(byte) 0x1f, (byte) 0x8b}; public static final byte[] CPE_RXNETWORKS_HEADER = new byte[]{(byte) 0x01, (byte) 0x00, (byte) 0x66}; + public static final byte[] CPE_SONY_HEADER = new byte[]{(byte) 0x2a, (byte) 0x12, (byte) 0xa0, (byte) 0x02}; public GarminAgpsFile(final byte[] bytes) { this.bytes = bytes; @@ -66,6 +67,10 @@ public class GarminAgpsFile { return false; } + public boolean isValidSonyCpe() { + return ArrayUtils.startsWith(bytes, CPE_SONY_HEADER); + } + public byte[] getBytes() { return bytes.clone(); }