mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-24 10:56:50 +01:00
Lefun: Implement set alarm
This commit is contained in:
parent
3d108d9d11
commit
b7abd328bb
@ -70,6 +70,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.GetFi
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.GetPpgDataRequest;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.GetPpgDataRequest;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.GetSleepDataRequest;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.GetSleepDataRequest;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.Request;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.Request;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.SetAlarmRequest;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.SetTimeRequest;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.SetTimeRequest;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.StartPpgRequest;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests.StartPpgRequest;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
@ -148,7 +149,25 @@ public class LefunDeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSetAlarms(ArrayList<? extends Alarm> alarms) {
|
public void onSetAlarms(ArrayList<? extends Alarm> alarms) {
|
||||||
|
int i = 0;
|
||||||
|
for (Alarm alarm : alarms) {
|
||||||
|
try {
|
||||||
|
TransactionBuilder builder = performInitialized(SetAlarmRequest.class.getSimpleName());
|
||||||
|
SetAlarmRequest request = new SetAlarmRequest(this, builder);
|
||||||
|
request.setIndex(i);
|
||||||
|
request.setEnabled(alarm.getEnabled());
|
||||||
|
request.setDayOfWeek(alarm.getRepetition());
|
||||||
|
request.setHour(alarm.getHour());
|
||||||
|
request.setMinute(alarm.getMinute());
|
||||||
|
request.perform();
|
||||||
|
inProgressRequests.add(request);
|
||||||
|
performConnected(builder.getTransaction());
|
||||||
|
} catch (IOException e) {
|
||||||
|
GB.toast(getContext(), "Failed to set alarm", Toast.LENGTH_SHORT,
|
||||||
|
GB.ERROR, e);
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,100 @@
|
|||||||
|
package nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.requests;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.devices.lefun.LefunConstants;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.devices.lefun.commands.AlarmCommand;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.devices.lefun.commands.BaseCommand;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.LefunDeviceSupport;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus;
|
||||||
|
|
||||||
|
public class SetAlarmRequest extends Request {
|
||||||
|
private int index;
|
||||||
|
private boolean enabled;
|
||||||
|
private int dayOfWeek;
|
||||||
|
private int hour;
|
||||||
|
private int minute;
|
||||||
|
public SetAlarmRequest(LefunDeviceSupport support, TransactionBuilder builder) {
|
||||||
|
super(support, builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIndex() {
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIndex(int index) {
|
||||||
|
this.index = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDayOfWeek() {
|
||||||
|
return dayOfWeek;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDayOfWeek(int dayOfWeek) {
|
||||||
|
this.dayOfWeek = dayOfWeek;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHour() {
|
||||||
|
return hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHour(int hour) {
|
||||||
|
this.hour = hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinute() {
|
||||||
|
return minute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMinute(int minute) {
|
||||||
|
this.minute = minute;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] createRequest() {
|
||||||
|
AlarmCommand cmd = new AlarmCommand();
|
||||||
|
cmd.setOp(BaseCommand.OP_SET);
|
||||||
|
cmd.setIndex((byte) index);
|
||||||
|
cmd.setEnabled(enabled);
|
||||||
|
cmd.setNumOfSnoozes((byte) 0);
|
||||||
|
cmd.setHour((byte) hour);
|
||||||
|
cmd.setMinute((byte) minute);
|
||||||
|
|
||||||
|
// Translate GB alarm day of week to Lefun day of week
|
||||||
|
// GB starts on Monday, Lefun starts on Sunday
|
||||||
|
for (int i = 0; i < 6; ++i) {
|
||||||
|
if ((dayOfWeek & (1 << i)) != 0) {
|
||||||
|
cmd.setDayOfWeek(i + 1, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((dayOfWeek & Alarm.ALARM_SUN) != 0) {
|
||||||
|
cmd.setDayOfWeek(AlarmCommand.DOW_SUNDAY, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cmd.serialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleResponse(byte[] data) {
|
||||||
|
AlarmCommand cmd = new AlarmCommand();
|
||||||
|
cmd.deserialize(data);
|
||||||
|
|
||||||
|
if (cmd.getOp() != BaseCommand.OP_SET || cmd.getIndex() != index || !cmd.isSetSuccess())
|
||||||
|
reportFailure("Could not set alarm");
|
||||||
|
|
||||||
|
operationStatus = OperationStatus.FINISHED;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCommandId() {
|
||||||
|
return LefunConstants.CMD_ALARM;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user