Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/status/NotificationSubscriptionSta...

51 lines
1.7 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.status;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.MessageWriter;
public class NotificationSubscriptionStatusMessage extends GFDIStatusMessage {
private final Status status;
private final NotificationStatus notificationStatus;
private final int enableRaw;
private final int unk;
private final boolean sendOutgoing;
public NotificationSubscriptionStatusMessage(Status status, NotificationStatus notificationStatus, boolean enable, int unk) {
this.garminMessage = GarminMessage.NOTIFICATION_SUBSCRIPTION;
this.status = status;
this.notificationStatus = notificationStatus;
this.enableRaw = enable ? 1 : 0;
this.unk = unk;
this.sendOutgoing = true;
}
@Override
protected boolean generateOutgoing() {
final MessageWriter writer = new MessageWriter(response);
writer.writeShort(0); // packet size will be filled below
writer.writeShort(GarminMessage.RESPONSE.getId());
writer.writeShort(garminMessage.getId());
writer.writeByte(status.ordinal());
writer.writeByte(notificationStatus.ordinal());
writer.writeByte(this.enableRaw);
writer.writeByte(this.unk);
return this.sendOutgoing;
}
public enum NotificationStatus {
ENABLED,
DISABLED
;
public static NotificationStatus fromId(int id) {
for (NotificationStatus notificationStatus :
NotificationStatus.values()) {
if (notificationStatus.ordinal() == id) {
return notificationStatus;
}
}
return null;
}
}
}