1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-08-11 08:23:15 +02:00

Fossil HR: added inidividual notification IDs

This commit is contained in:
Daniel Dakhno 2020-04-02 00:53:53 +02:00
parent b290e035f1
commit ac1b1b0a7a
2 changed files with 15 additions and 9 deletions

View File

@ -6,9 +6,11 @@ import java.nio.ByteOrder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter;
public class PlayCallNotificationRequest extends PlayNotificationRequest { public class PlayCallNotificationRequest extends PlayNotificationRequest {
private final static int MESSAGE_ID_CALL = 1;
public PlayCallNotificationRequest(String number, boolean callStart, FossilWatchAdapter adapter) { public PlayCallNotificationRequest(String number, boolean callStart, FossilWatchAdapter adapter) {
super(callStart ? 1 : 7, callStart ? 8 : 2, super(callStart ? 1 : 7, callStart ? 8 : 2,
ByteBuffer.wrap(new byte[]{(byte) 0x80, (byte) 0x00, (byte) 0x59, (byte) 0xB7}).order(ByteOrder.LITTLE_ENDIAN).getInt(), ByteBuffer.wrap(new byte[]{(byte) 0x80, (byte) 0x00, (byte) 0x59, (byte) 0xB7}).order(ByteOrder.LITTLE_ENDIAN).getInt(),
number, "Incoming Call", adapter); number, "Incoming Call", MESSAGE_ID_CALL, adapter);
} }
} }

View File

@ -28,24 +28,28 @@ import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
public abstract class PlayNotificationRequest extends FilePutRequest { public abstract class PlayNotificationRequest extends FilePutRequest {
public PlayNotificationRequest(int notificationType, int flags, String packageName, FossilWatchAdapter adapter) { public PlayNotificationRequest(int notificationType, int flags, String packageName, FossilWatchAdapter adapter) {
super((short) 0x0900, createFile(notificationType, flags, packageName, packageName, packageName), adapter); super((short) 0x0900, createFile(notificationType, flags, packageName, packageName, packageName, getCurrentMessageId()), adapter);
} }
public PlayNotificationRequest(int notificationType, int flags, String packageName, String sender, String message, FossilWatchAdapter adapter) { public PlayNotificationRequest(int notificationType, int flags, String packageName, String sender, String message, FossilWatchAdapter adapter) {
super((short) 0x0900, createFile(notificationType, flags, packageName, sender, message), adapter); super((short) 0x0900, createFile(notificationType, flags, packageName, sender, message, getCurrentMessageId()), adapter);
} }
public PlayNotificationRequest(int notificationType, int flags, int packageCRC, String sender, String message, FossilWatchAdapter 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), adapter); super((short) 0x0900, createFile(notificationType, flags, "whatever", sender, message, packageCRC, messageId), adapter);
} }
private static byte[] createFile(int notificationType, int flags, String packageName, String sender, String message){ private static int getCurrentMessageId(){
return (int) System.currentTimeMillis();
}
private static byte[] createFile(int notificationType, int flags, String packageName, String sender, String message, int messageId){
CRC32 crc = new CRC32(); CRC32 crc = new CRC32();
crc.update(packageName.getBytes()); crc.update(packageName.getBytes());
return createFile(notificationType, flags, packageName, sender, message, (int)crc.getValue()); return createFile(notificationType, flags, packageName, sender, message, (int)crc.getValue(), messageId);
} }
private static byte[] createFile(int notificationType, int flags, String title, String sender, String message, int packageCrc) { private static byte[] createFile(int notificationType, int flags, String title, String sender, String message, int packageCrc, int messageId) {
byte lengthBufferLength = (byte) 10; byte lengthBufferLength = (byte) 10;
byte uidLength = (byte) 4; byte uidLength = (byte) 4;
byte appBundleCRCLength = (byte) 4; byte appBundleCRCLength = (byte) 4;
@ -77,7 +81,7 @@ public abstract class PlayNotificationRequest extends FilePutRequest {
mainBuffer.put((byte) senderBytes.length); mainBuffer.put((byte) senderBytes.length);
mainBuffer.put((byte) messageBytes.length); mainBuffer.put((byte) messageBytes.length);
mainBuffer.putInt(0); // messageId mainBuffer.putInt(messageId);
mainBuffer.putInt(packageCrc); mainBuffer.putInt(packageCrc);
mainBuffer.put(titleBytes); mainBuffer.put(titleBytes);
mainBuffer.put(senderBytes); mainBuffer.put(senderBytes);