Pebble: Support Healthify Weather
This commit is contained in:
parent
5a83cb1c48
commit
7930b7da75
|
@ -0,0 +1,65 @@
|
||||||
|
package nodomain.freeyourgadget.gadgetbridge.service.devices.pebble;
|
||||||
|
|
||||||
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.model.Weather;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
|
||||||
|
|
||||||
|
class AppMessageHandlerHealthify extends AppMessageHandler {
|
||||||
|
private static final int KEY_TEMPERATURE = 10021;
|
||||||
|
private static final int KEY_CONDITIONS = 10022;
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(AppMessageHandlerHealthify.class);
|
||||||
|
|
||||||
|
AppMessageHandlerHealthify(UUID uuid, PebbleProtocol pebbleProtocol) {
|
||||||
|
super(uuid, pebbleProtocol);
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] encodeMarioWeatherMessage(WeatherSpec weatherSpec) {
|
||||||
|
if (weatherSpec == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<Pair<Integer, Object>> pairs = new ArrayList<>(2);
|
||||||
|
pairs.add(new Pair<>(KEY_CONDITIONS, (Object) weatherSpec.currentCondition));
|
||||||
|
pairs.add(new Pair<>(KEY_TEMPERATURE, (Object) (weatherSpec.currentTemp - 273)));
|
||||||
|
byte[] weatherMessage = mPebbleProtocol.encodeApplicationMessagePush(PebbleProtocol.ENDPOINT_APPLICATIONMESSAGE, mUUID, pairs);
|
||||||
|
|
||||||
|
ByteBuffer buf = ByteBuffer.allocate(weatherMessage.length);
|
||||||
|
|
||||||
|
buf.put(weatherMessage);
|
||||||
|
|
||||||
|
return buf.array();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GBDeviceEvent[] handleMessage(ArrayList<Pair<Integer, Object>> pairs) {
|
||||||
|
// Just ACK
|
||||||
|
GBDeviceEventSendBytes sendBytesAck = new GBDeviceEventSendBytes();
|
||||||
|
sendBytesAck.encodedBytes = mPebbleProtocol.encodeApplicationMessageAck(mUUID, mPebbleProtocol.last_id);
|
||||||
|
return new GBDeviceEvent[]{sendBytesAck};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GBDeviceEvent[] onAppStart() {
|
||||||
|
WeatherSpec weatherSpec = Weather.getInstance().getWeatherSpec();
|
||||||
|
GBDeviceEventSendBytes sendBytes = new GBDeviceEventSendBytes();
|
||||||
|
sendBytes.encodedBytes = encodeMarioWeatherMessage(weatherSpec);
|
||||||
|
return new GBDeviceEvent[]{sendBytes};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] encodeUpdateWeather(WeatherSpec weatherSpec) {
|
||||||
|
return encodeMarioWeatherMessage(weatherSpec);
|
||||||
|
}
|
||||||
|
}
|
|
@ -379,6 +379,7 @@ public class PebbleProtocol extends GBDeviceProtocol {
|
||||||
private static final UUID UUID_PEBBLE_TIMESTYLE = UUID.fromString("4368ffa4-f0fb-4823-90be-f754b076bdaa");
|
private static final UUID UUID_PEBBLE_TIMESTYLE = UUID.fromString("4368ffa4-f0fb-4823-90be-f754b076bdaa");
|
||||||
private static final UUID UUID_PEBSTYLE = UUID.fromString("da05e84d-e2a2-4020-a2dc-9cdcf265fcdd");
|
private static final UUID UUID_PEBSTYLE = UUID.fromString("da05e84d-e2a2-4020-a2dc-9cdcf265fcdd");
|
||||||
private static final UUID UUID_MARIOTIME = UUID.fromString("43caa750-2896-4f46-94dc-1adbd4bc1ff3");
|
private static final UUID UUID_MARIOTIME = UUID.fromString("43caa750-2896-4f46-94dc-1adbd4bc1ff3");
|
||||||
|
private static final UUID UUID_HELTHIFY = UUID.fromString("7ee97b2c-95e8-4720-b94e-70fccd905d98");
|
||||||
|
|
||||||
private static final UUID UUID_ZERO = new UUID(0, 0);
|
private static final UUID UUID_ZERO = new UUID(0, 0);
|
||||||
|
|
||||||
|
@ -395,6 +396,7 @@ public class PebbleProtocol extends GBDeviceProtocol {
|
||||||
mAppMessageHandlers.put(UUID_PEBBLE_TIMESTYLE, new AppMessageHandlerTimeStylePebble(UUID_PEBBLE_TIMESTYLE, PebbleProtocol.this));
|
mAppMessageHandlers.put(UUID_PEBBLE_TIMESTYLE, new AppMessageHandlerTimeStylePebble(UUID_PEBBLE_TIMESTYLE, PebbleProtocol.this));
|
||||||
mAppMessageHandlers.put(UUID_PEBSTYLE, new AppMessageHandlerPebStyle(UUID_PEBSTYLE, PebbleProtocol.this));
|
mAppMessageHandlers.put(UUID_PEBSTYLE, new AppMessageHandlerPebStyle(UUID_PEBSTYLE, PebbleProtocol.this));
|
||||||
mAppMessageHandlers.put(UUID_MARIOTIME, new AppMessageHandlerMarioTime(UUID_MARIOTIME, PebbleProtocol.this));
|
mAppMessageHandlers.put(UUID_MARIOTIME, new AppMessageHandlerMarioTime(UUID_MARIOTIME, PebbleProtocol.this));
|
||||||
|
mAppMessageHandlers.put(UUID_HELTHIFY, new AppMessageHandlerHealthify(UUID_HELTHIFY, PebbleProtocol.this));
|
||||||
}
|
}
|
||||||
|
|
||||||
private final HashMap<Byte, DatalogSession> mDatalogSessions = new HashMap<>();
|
private final HashMap<Byte, DatalogSession> mDatalogSessions = new HashMap<>();
|
||||||
|
|
Loading…
Reference in New Issue