Remember previously scheduled time

This commit is contained in:
Maurizio Porrato 2019-02-19 08:04:59 +00:00
parent 7e3a0e5712
commit 1f2162f0a7
2 changed files with 25 additions and 27 deletions

View File

@ -61,20 +61,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
Switch scheduleSwitch = findViewById(R.id.enableSchedule); Switch scheduleSwitch = findViewById(R.id.enableSchedule);
TimePicker schedulePicker = findViewById(R.id.schedule); TimePicker schedulePicker = findViewById(R.id.schedule);
int sh = remote.getScheduleHour(); boolean se = remote.isScheduleEnabled();
int sm = remote.getScheduleMinute();
if ((sh >= 0) && (sm >= 0)) { schedulePicker.setCurrentHour(remote.getScheduleHour());
schedulePicker.setCurrentHour(sh); schedulePicker.setCurrentMinute(remote.getScheduleMinute());
schedulePicker.setCurrentMinute(sm); schedulePicker.setEnabled(se);
schedulePicker.setEnabled(true); scheduleSwitch.setChecked(se);
scheduleSwitch.setChecked(true);
} else {
schedulePicker.setCurrentHour(0);
schedulePicker.setCurrentMinute(0);
schedulePicker.setEnabled(false);
scheduleSwitch.setChecked(false);
}
schedulePicker.setOnTimeChangedListener(this); schedulePicker.setOnTimeChangedListener(this);

View File

@ -9,7 +9,9 @@ class RoboVac11sRemote {
final IRModulation modulation = new EufyIRModulation(); final IRModulation modulation = new EufyIRModulation();
private byte schedule = (byte) 0xff; private boolean scheduleEnabled;
private int scheduleHour;
private int scheduleMinute;
private byte[] buildMessage(byte command) { private byte[] buildMessage(byte command) {
byte msg[] = new byte[6]; byte msg[] = new byte[6];
@ -19,7 +21,7 @@ class RoboVac11sRemote {
msg[1] = command; msg[1] = command;
msg[2] = (byte) now.get(Calendar.HOUR_OF_DAY); msg[2] = (byte) now.get(Calendar.HOUR_OF_DAY);
msg[3] = (byte) now.get(Calendar.MINUTE); msg[3] = (byte) now.get(Calendar.MINUTE);
msg[4] = schedule; msg[4] = (byte) (scheduleEnabled ? (scheduleHour * 4 + scheduleMinute / 15) : 0xff);
msg[5] = (byte) (msg[0] + msg[1] + msg[2] + msg[3] + msg[4]); msg[5] = (byte) (msg[0] + msg[1] + msg[2] + msg[3] + msg[4]);
return msg; return msg;
@ -27,37 +29,41 @@ class RoboVac11sRemote {
RoboVac11sRemote(SharedPreferences pref) { RoboVac11sRemote(SharedPreferences pref) {
preferences = pref; preferences = pref;
schedule = (byte) preferences.getInt("schedule", 0xff); scheduleHour = preferences.getInt("scheduleHour", 0);
scheduleMinute = preferences.getInt("scheduleMinute", 0);
scheduleEnabled = preferences.getBoolean("scheduleEnabled", false);
} }
private void storeSchedule() { private void storeSchedule() {
SharedPreferences.Editor editor = preferences.edit(); SharedPreferences.Editor editor = preferences.edit();
editor.putInt("schedule", schedule); editor.putBoolean("scheduleEnabled", scheduleEnabled);
editor.putInt("scheduleHour", scheduleHour);
editor.putInt("scheduleMinute", scheduleMinute);
editor.commit(); editor.commit();
} }
public boolean isScheduleEnabled() {
return scheduleEnabled;
}
public int getScheduleHour() { public int getScheduleHour() {
if (schedule == 0xff) return scheduleHour;
return -1;
else
return schedule / 4;
} }
public int getScheduleMinute() { public int getScheduleMinute() {
if (schedule == 0xff) return scheduleMinute;
return -1;
else
return (schedule % 4) * 15;
} }
public byte[] setSchedule(int hour, int minute) { public byte[] setSchedule(int hour, int minute) {
schedule = (byte) (hour * 4 + minute / 15); scheduleHour = hour;
scheduleMinute = minute;
scheduleEnabled = true;
storeSchedule(); storeSchedule();
return buildMessage((byte) 0xcf); return buildMessage((byte) 0xcf);
} }
public byte[] clearSchedule() { public byte[] clearSchedule() {
schedule = (byte) 0xff; scheduleEnabled = false;
storeSchedule(); storeSchedule();
return buildMessage((byte) 0xdf); return buildMessage((byte) 0xdf);
} }