1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-06 21:28:11 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/MusicControlCapabilitiesMessage.java
2024-05-01 23:35:16 +01:00

49 lines
1.7 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages;
public class MusicControlCapabilitiesMessage extends GFDIMessage {
private final int supportedCapabilities;
private final GarminMusicControlCommand[] commands = GarminMusicControlCommand.values();
public MusicControlCapabilitiesMessage(GarminMessage garminMessage, int supportedCapabilities) {
this.garminMessage = garminMessage;
this.supportedCapabilities = supportedCapabilities;
this.statusMessage = this.getStatusMessage();
}
public static MusicControlCapabilitiesMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) {
final int supportedCapabilities = reader.readByte();
return new MusicControlCapabilitiesMessage(garminMessage, supportedCapabilities);
}
@Override
protected boolean generateOutgoing() {
if (commands.length > 255)
throw new IllegalArgumentException("Too many supported commands");
final MessageWriter writer = new MessageWriter(response);
writer.writeShort(0); // packet size will be filled below
writer.writeShort(GarminMessage.RESPONSE.getId());
writer.writeShort(this.garminMessage.getId());
writer.writeByte(Status.ACK.ordinal());
writer.writeByte(commands.length);
for (GarminMusicControlCommand command : commands) {
writer.writeByte(command.ordinal());
}
return true;
}
public enum GarminMusicControlCommand {
TOGGLE_PLAY_PAUSE,
SKIP_TO_NEXT_ITEM,
SKIP_TO_PREVIOUS_ITEM,
VOLUME_UP,
VOLUME_DOWN,
PLAY,
PAUSE,
SKIP_FORWARD,
SKIP_BACKWARDS
}
}