1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-09 14:48:24 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/sony/wena3/protocol/packets/calendar/CalendarEntry.java
vladkorotnev 889a1db801 Sony Wena 3: Initial support (#3311)
Co-authored-by: vladkorotnev <vladkorotnev@noreply.codeberg.org>
Co-committed-by: vladkorotnev <vladkorotnev@noreply.codeberg.org>
2023-09-23 10:31:41 +00:00

82 lines
3.0 KiB
Java

/* Copyright (C) 2023 akasaka / Genjitsu Labs
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.sony.wena3.protocol.packets.calendar;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import nodomain.freeyourgadget.gadgetbridge.service.devices.sony.wena3.protocol.Wena3Packetable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.sony.wena3.protocol.util.TimeUtil;
public class CalendarEntry implements Wena3Packetable {
public final Date begin;
public final Date end;
public final boolean isAllDay;
public final String title;
public final String location;
/// 1-based, not index!
public final byte position;
public final byte totalItemCount;
public CalendarEntry(Date begin, Date end, boolean isAllDay, String title, String location, byte position, byte totalItemCount) {
this.begin = begin;
this.end = end;
this.isAllDay = isAllDay;
this.title = title;
this.location = location;
this.position = position;
this.totalItemCount = totalItemCount;
}
@Override
public byte[] toByteArray() {
byte[] cstrTitle = title.getBytes(StandardCharsets.UTF_8);
byte[] cstrLocation = location.getBytes(StandardCharsets.UTF_8);
return ByteBuffer.allocate(14 + cstrTitle.length + cstrLocation.length)
.order(ByteOrder.LITTLE_ENDIAN)
.put((byte) 0x02)
.put(position)
.put(totalItemCount)
.put((byte) cstrTitle.length)
.put((byte) cstrLocation.length)
.put((byte) (isAllDay ? 0x1 : 0x0))
.putInt(TimeUtil.dateToWenaTime(begin))
.putInt(TimeUtil.dateToWenaTime(end))
.put(cstrTitle)
.put(cstrLocation)
.array();
}
public static byte[] byteArrayForEmptyEvent(byte position, byte totalItemCount) {
return ByteBuffer.allocate(14)
.order(ByteOrder.LITTLE_ENDIAN)
.put((byte) 0x02)
.put(position)
.put(totalItemCount)
.put((byte) 0x0)
.put((byte) 0x0)
.put((byte) 0x0)
.putInt(0)
.putInt(0)
.array();
}
}