mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-06-09 14:48:24 +02:00
889a1db801
Co-authored-by: vladkorotnev <vladkorotnev@noreply.codeberg.org> Co-committed-by: vladkorotnev <vladkorotnev@noreply.codeberg.org>
82 lines
3.0 KiB
Java
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();
|
|
|
|
}
|
|
}
|