Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/status/FitDataStatusMessage.java

52 lines
1.8 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.status;
import androidx.annotation.Nullable;
public class FitDataStatusMessage extends GFDIStatusMessage {
private final Status status;
private final FitDataStatusCode fitDataStatusCode;
public FitDataStatusMessage(GarminMessage garminMessage, Status status, FitDataStatusCode fitDataStatusCode) {
this.garminMessage = garminMessage;
this.status = status;
this.fitDataStatusCode = fitDataStatusCode;
switch (fitDataStatusCode) {
case APPLIED:
LOG.info("FIT DATA RETURNED STATUS: {}", fitDataStatusCode.name());
break;
default:
LOG.warn("FIT DATA RETURNED STATUS: {}", fitDataStatusCode.name());
}
}
public static FitDataStatusMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) {
final Status status = Status.fromCode(reader.readByte());
final int fitDataStatusCodeByte = reader.readByte();
final FitDataStatusCode fitDataStatusCode = FitDataStatusCode.fromCode(fitDataStatusCodeByte);
if (fitDataStatusCode == null) {
LOG.warn("Unknown fit data status code {}", fitDataStatusCodeByte);
return null;
}
return new FitDataStatusMessage(garminMessage, status, fitDataStatusCode);
}
public enum FitDataStatusCode {
APPLIED,
NO_DEFINITION,
MISMATCH,
NOT_READY,
;
@Nullable
public static FitDataStatusCode fromCode(final int code) {
for (final FitDataStatusCode fitDataStatusCode : FitDataStatusCode.values()) {
if (fitDataStatusCode.ordinal() == code) {
return fitDataStatusCode;
}
}
return null;
}
}
}