mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-06-06 21:28:11 +02:00
49 lines
1.7 KiB
Java
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
|
|
}
|
|
}
|