mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-06-02 19:36:14 +02:00
7829c5f1fb
adds synchronization of supported files from watch to external directory adds support for Activity and Monitoring files (workouts and activity samples), but those are not integrated yet adds upload functionality (not used ATM and not tested) adds notification support without actions introduces centralized processing of "messageHandlers" (protobuf, file transfer, notifications) also properly dispose of the music timer when disconnecting
61 lines
2.0 KiB
Java
61 lines
2.0 KiB
Java
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.status.FileTransferDataStatusMessage;
|
|
|
|
public class FileTransferDataMessage extends GFDIMessage {
|
|
|
|
private final byte[] message;
|
|
private final int dataOffset;
|
|
private final boolean sendOutgoing;
|
|
private final int crc;
|
|
|
|
public FileTransferDataMessage(byte[] message, int dataOffset, int crc) {
|
|
this(message, dataOffset, crc, true);
|
|
}
|
|
|
|
public FileTransferDataMessage(byte[] message, int dataOffset, int crc, boolean sendOutgoing) {
|
|
this.garminMessage = GarminMessage.FILE_TRANSFER_DATA;
|
|
this.dataOffset = dataOffset;
|
|
this.crc = crc;
|
|
this.message = message;
|
|
|
|
this.statusMessage = new FileTransferDataStatusMessage(GarminMessage.FILE_TRANSFER_DATA, Status.ACK, FileTransferDataStatusMessage.TransferStatus.OK, dataOffset);
|
|
this.sendOutgoing = sendOutgoing;
|
|
}
|
|
|
|
public static FileTransferDataMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) {
|
|
|
|
final int flags = reader.readByte();
|
|
final int crc = reader.readShort();
|
|
final int dataOffset = reader.readInt();
|
|
final byte[] message = reader.readBytes(reader.remaining());
|
|
|
|
return new FileTransferDataMessage(message, dataOffset, crc, false);
|
|
}
|
|
|
|
public byte[] getMessage() {
|
|
return message;
|
|
}
|
|
|
|
public int getCrc() {
|
|
return crc;
|
|
}
|
|
|
|
public int getDataOffset() {
|
|
return dataOffset;
|
|
}
|
|
|
|
@Override
|
|
protected boolean generateOutgoing() {
|
|
final MessageWriter writer = new MessageWriter(response);
|
|
writer.writeShort(0); // packet size will be filled below
|
|
writer.writeShort(garminMessage.getId());
|
|
writer.writeByte(0); //flags?
|
|
writer.writeShort(crc);
|
|
writer.writeInt(dataOffset);
|
|
writer.writeBytes(message);
|
|
return sendOutgoing;
|
|
}
|
|
|
|
}
|