52 lines
1.8 KiB
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;
|
|
}
|
|
}
|
|
}
|