1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-02 19:36:14 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/status/FitDefinitionStatusMessage.java
2024-04-25 18:09:36 +02:00

52 lines
2.0 KiB
Java

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