1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-02 03:16:07 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/status/SupportedFileTypesStatusMessage.java
2024-04-22 21:24:53 +01:00

50 lines
2.0 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.status;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.FileType;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.deviceevents.SupportedFileTypesDeviceEvent;
public class SupportedFileTypesStatusMessage extends GFDIStatusMessage {
private final Status status;
private final List<FileType> fileTypeInfoList;
public SupportedFileTypesStatusMessage(GarminMessage garminMessage, Status status, List<FileType> fileTypeInfoList) {
this.garminMessage = garminMessage;
this.status = status;
this.fileTypeInfoList = fileTypeInfoList;
}
public static SupportedFileTypesStatusMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) {
final Status status = Status.fromCode(reader.readByte());
if (!status.equals(Status.ACK)) {
return null;
}
final int typeCount = reader.readByte();
final List<FileType> types = new ArrayList<>(typeCount);
for (int i = 0; i < typeCount; ++i) {
final int fileDataType = reader.readByte();
final int fileSubType = reader.readByte();
final String garminDeviceFileType = reader.readString();
FileType fileType = new FileType(fileDataType, fileSubType, garminDeviceFileType);
if (fileType.getFileType() == null) {
LOG.warn("Watch supports a filetype that we do not support: {}/{}: {}", fileDataType, fileSubType, garminDeviceFileType);
continue;
}
types.add(fileType);
}
return new SupportedFileTypesStatusMessage(garminMessage, status, types);
}
@Override
public List<GBDeviceEvent> getGBDeviceEvent() {
return Collections.singletonList(new SupportedFileTypesDeviceEvent(fileTypeInfoList));
}
}