1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-10 07:07:57 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/sonyswr12/entities/time/BandTime.java
2020-10-11 17:24:11 +03:00

63 lines
2.3 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.sonyswr12.entities.time;
import java.util.Calendar;
import java.util.TimeZone;
import nodomain.freeyourgadget.gadgetbridge.service.devices.sonyswr12.util.IntFormat;
import nodomain.freeyourgadget.gadgetbridge.service.devices.sonyswr12.util.ByteArrayWriter;
public class BandTime {
private final int year;
private final int month;
private final int dayOfMonth;
private final int hour;
private final int min;
private final int sec;
private final int dayOfWeek;
private final BandTimeZone timeZone;
private final BandDaylightSavingTime dst;
public BandTime(Calendar calendar) {
int dayOfWeek = 7;
if (calendar == null) {
throw new IllegalArgumentException("Calendar cant be null");
}
this.year = calendar.get(1);
if (this.year > 2099 || this.year < 2013) {
throw new RuntimeException("out of 2013-2099");
}
this.month = calendar.get(2) + 1;
this.dayOfMonth = calendar.get(5);
int value = calendar.get(7);
if (value != 1) {
dayOfWeek = value - 1;
}
this.dayOfWeek = dayOfWeek;
this.hour = calendar.get(11);
this.min = calendar.get(12);
this.sec = calendar.get(13);
TimeZone timeZone = calendar.getTimeZone();
this.timeZone = BandTimeZone.fromOffset(timeZone.getRawOffset());
if (timeZone.inDaylightTime(calendar.getTime())) {
this.dst = BandDaylightSavingTime.fromOffset(timeZone.getDSTSavings());
return;
}
this.dst = BandDaylightSavingTime.STANDARD_TIME;
}
public byte[] toByteArray() {
ByteArrayWriter byteArrayWriter = new ByteArrayWriter();
byteArrayWriter.appendUint16(this.year);
byteArrayWriter.appendUint8(this.month);
byteArrayWriter.appendUint8(this.dayOfMonth);
byteArrayWriter.appendUint8(this.hour);
byteArrayWriter.appendUint8(this.min);
byteArrayWriter.appendUint8(this.sec);
byteArrayWriter.appendUint8(this.dayOfWeek);
byteArrayWriter.appendValue(this.timeZone.key, IntFormat.SINT8);
byteArrayWriter.appendUint8(this.dst.key);
return byteArrayWriter.getByteArray();
}
}