/* Copyright (C) 2024 Damien Gaignon, José Rebelo 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 . */ package nodomain.freeyourgadget.gadgetbridge.devices.huawei; import java.nio.ByteBuffer; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HuaweiUtil { private static final Logger LOG = LoggerFactory.getLogger(HuaweiUtil.class); public static byte[] timeToByte(String time) { Calendar calendar = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("HH:mm", Locale.ENGLISH); try { Date t = df.parse(time); assert t != null; calendar.setTime(t); } catch (ParseException e) { LOG.error("Time conversion error: " + e); return null; } return new byte[]{ (byte)calendar.get(Calendar.HOUR_OF_DAY), (byte)calendar.get(Calendar.MINUTE)}; } public static byte[] getTimeAndZoneId(final Calendar now) { int zoneRawOffset = (now.get(Calendar.ZONE_OFFSET) + now.get(Calendar.DST_OFFSET)) / 1000; byte[] id = now.getTimeZone().getID().getBytes(); return ByteBuffer.allocate(6 + id.length) .putInt((int)(now.getTimeInMillis() / 1000)) .put((byte)(zoneRawOffset < 0 ? (-zoneRawOffset / 3600 + 128) : zoneRawOffset / 3600) ) .put((byte)(zoneRawOffset / 60 % 60)) .put(id) .array(); } }