1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-25 10:05:49 +01:00

Send gps and time before forecast

This commit is contained in:
Vitaliy Tomin 2024-01-30 23:17:59 +08:00 committed by José Rebelo
parent 14eaba858c
commit 287b720350
3 changed files with 68 additions and 1 deletions

View File

@ -0,0 +1,27 @@
package nodomain.freeyourgadget.gadgetbridge.devices.huawei.packets;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiPacket;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiTLV;
public class GpsAndTime {
public static final byte id = 0x18;
public static class CurrentGPSRequest extends HuaweiPacket {
public static final byte id = 0x07;
public CurrentGPSRequest (
ParamsProvider paramsProvider
) {
super(paramsProvider);
this.serviceId = GpsAndTime.id;
this.commandId = id;
this.tlv = new HuaweiTLV();
this.tlv.put(0x01, (int) 0);
this.tlv.put(0x02, (long) 0);
this.tlv.put(0x03, (long) 0);
this.isEncrypted = true;
this.complete = true;
}
}
}

View File

@ -78,6 +78,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetEventAlarmList;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetNotificationConstraintsRequest;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetSmartAlarmList;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendGpsAndTimeToDeviceRequest;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendWeatherCurrentRequest;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendNotifyHeartRateCapabilityRequest;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendNotifyRestHeartRateCapabilityRequest;
@ -1658,12 +1659,19 @@ public class HuaweiSupportProvider {
weatherSpec
);
SendGpsAndTimeToDeviceRequest sendGpsAndTimeToDeviceRequest = new SendGpsAndTimeToDeviceRequest(
this
);
sendWeatherCurrentRequest.nextRequest(sendGpsAndTimeToDeviceRequest);
if (getHuaweiCoordinator().supportsWeatherForecasts()) {
SendWeatherForecastRequest sendWeatherForecastRequest = new SendWeatherForecastRequest(
this,
weatherSpec
);
sendWeatherCurrentRequest.nextRequest(sendWeatherForecastRequest);
sendGpsAndTimeToDeviceRequest.nextRequest(sendWeatherForecastRequest);
}
sendWeatherCurrentRequest.doPerform();

View File

@ -0,0 +1,32 @@
package nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests;
import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiPacket;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.packets.GpsAndTime;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiSupportProvider;
public class SendGpsAndTimeToDeviceRequest extends Request {
public SendGpsAndTimeToDeviceRequest(HuaweiSupportProvider support) {
super(support);
this.serviceId = GpsAndTime.id;
this.commandId = GpsAndTime.CurrentGPSRequest.id;
}
@Override
protected List<byte[]> createRequest() throws RequestCreationException {
try {
// TODO: support multiple units
return new GpsAndTime.CurrentGPSRequest(
this.paramsProvider
).serialize();
} catch (HuaweiPacket.CryptoException e) {
throw new RequestCreationException(e);
}
}
}