55 lines
2.9 KiB
Java
55 lines
2.9 KiB
Java
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.status;
|
|
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.GFDIMessage;
|
|
|
|
public abstract class GFDIStatusMessage extends GFDIMessage {
|
|
private Status status;
|
|
|
|
public static GFDIStatusMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) {
|
|
int originalMessageType = reader.readShort();
|
|
final GarminMessage originalGarminMessage = GFDIMessage.GarminMessage.fromId(originalMessageType);
|
|
|
|
if (GarminMessage.PROTOBUF_REQUEST.equals(originalGarminMessage) || GarminMessage.PROTOBUF_RESPONSE.equals(originalGarminMessage)) {
|
|
return ProtobufStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else if (GarminMessage.NOTIFICATION_DATA.equals(originalGarminMessage)) {
|
|
return NotificationDataStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else if (GarminMessage.UPLOAD_REQUEST.equals(originalGarminMessage)) {
|
|
return UploadRequestStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else if (GarminMessage.DOWNLOAD_REQUEST.equals(originalGarminMessage)) {
|
|
return DownloadRequestStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else if (GarminMessage.FILE_TRANSFER_DATA.equals(originalGarminMessage)) {
|
|
return FileTransferDataStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else if (GarminMessage.CREATE_FILE.equals(originalGarminMessage)) {
|
|
return CreateFileStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else if (GarminMessage.SUPPORTED_FILE_TYPES_REQUEST.equals(originalGarminMessage)) {
|
|
SupportedFileTypesStatusMessage supportedFileTypesStatusMessage = SupportedFileTypesStatusMessage.parseIncoming(reader, garminMessage);
|
|
LOG.info("{}", supportedFileTypesStatusMessage);
|
|
return supportedFileTypesStatusMessage;
|
|
} else if (GarminMessage.FIT_DEFINITION.equals(originalGarminMessage)) {
|
|
return FitDefinitionStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else if (GarminMessage.FIT_DATA.equals(originalGarminMessage)) {
|
|
return FitDataStatusMessage.parseIncoming(reader, originalGarminMessage);
|
|
} else {
|
|
final Status status = Status.fromCode(reader.readByte());
|
|
|
|
if (Status.ACK == status) {
|
|
LOG.info("Received ACK for message {}", originalGarminMessage);
|
|
} else {
|
|
LOG.warn("Received {} for message {}", status, (null == originalGarminMessage) ? originalMessageType : originalGarminMessage.name());
|
|
}
|
|
|
|
return new GenericStatusMessage(garminMessage, status);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected boolean generateOutgoing() {
|
|
return false;
|
|
}
|
|
|
|
protected Status getStatus() {
|
|
return status;
|
|
}
|
|
}
|