mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-06-02 19:36:14 +02:00
57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.status;
|
|
|
|
public class NotificationDataStatusMessage extends GFDIStatusMessage {
|
|
private final Status status;
|
|
private final TransferStatus transferStatus;
|
|
|
|
public NotificationDataStatusMessage(GarminMessage garminMessage, Status status, TransferStatus transferStatus) {
|
|
this.garminMessage = garminMessage;
|
|
this.status = status;
|
|
this.transferStatus = transferStatus;
|
|
}
|
|
|
|
public static NotificationDataStatusMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) {
|
|
final Status status = Status.fromCode(reader.readByte());
|
|
|
|
if (!status.equals(Status.ACK)) {
|
|
return null;
|
|
}
|
|
final TransferStatus transferStatus = TransferStatus.fromId(reader.readByte());
|
|
|
|
if (!TransferStatus.OK.equals(transferStatus)) {
|
|
LOG.warn("Received {} / {} for message {}", status, transferStatus, garminMessage);
|
|
} else {
|
|
LOG.info("Received {} / {} for message {}", status, transferStatus, garminMessage);
|
|
}
|
|
return new NotificationDataStatusMessage(garminMessage, status, transferStatus);
|
|
}
|
|
|
|
public boolean canProceed() {
|
|
return status.equals(Status.ACK) && transferStatus.equals(TransferStatus.OK);
|
|
}
|
|
|
|
@Override
|
|
protected boolean generateOutgoing() {
|
|
return false;
|
|
}
|
|
|
|
public enum TransferStatus {
|
|
OK,
|
|
RESEND,
|
|
ABORT,
|
|
CRC_MISMATCH,
|
|
OFFSET_MISMATCH,
|
|
;
|
|
|
|
public static TransferStatus fromId(int id) {
|
|
for (TransferStatus transferStatus :
|
|
TransferStatus.values()) {
|
|
if (transferStatus.ordinal() == id) {
|
|
return transferStatus;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|