mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-28 12:56:49 +01:00
Garmin: various minor changes
remove message placeholders referring to legacy code, remove try-catch from the weather data message building method lower the frequency of music control messages
This commit is contained in:
parent
9c4da444cf
commit
ba9e5c8a77
@ -350,86 +350,82 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni
|
|||||||
|
|
||||||
sendOutgoingMessage("send weather definitions", new nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.FitDefinitionMessage(weatherDefinitions));
|
sendOutgoingMessage("send weather definitions", new nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.FitDefinitionMessage(weatherDefinitions));
|
||||||
|
|
||||||
try {
|
RecordData today = new RecordData(recordDefinitionToday, recordDefinitionToday.getRecordHeader());
|
||||||
RecordData today = new RecordData(recordDefinitionToday, recordDefinitionToday.getRecordHeader());
|
today.setFieldByName("weather_report", 0); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
||||||
today.setFieldByName("weather_report", 0); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
today.setFieldByName("timestamp", weather.timestamp);
|
||||||
today.setFieldByName("timestamp", weather.timestamp);
|
today.setFieldByName("observed_at_time", weather.timestamp);
|
||||||
today.setFieldByName("observed_at_time", weather.timestamp);
|
today.setFieldByName("temperature", weather.currentTemp);
|
||||||
today.setFieldByName("temperature", weather.currentTemp);
|
today.setFieldByName("low_temperature", weather.todayMinTemp);
|
||||||
today.setFieldByName("low_temperature", weather.todayMinTemp);
|
today.setFieldByName("high_temperature", weather.todayMaxTemp);
|
||||||
today.setFieldByName("high_temperature", weather.todayMaxTemp);
|
today.setFieldByName("condition", weather.currentConditionCode);
|
||||||
today.setFieldByName("condition", weather.currentConditionCode);
|
today.setFieldByName("wind_direction", weather.windDirection);
|
||||||
today.setFieldByName("wind_direction", weather.windDirection);
|
today.setFieldByName("precipitation_probability", weather.precipProbability);
|
||||||
today.setFieldByName("precipitation_probability", weather.precipProbability);
|
today.setFieldByName("wind_speed", Math.round(weather.windSpeed));
|
||||||
today.setFieldByName("wind_speed", Math.round(weather.windSpeed));
|
today.setFieldByName("temperature_feels_like", weather.feelsLikeTemp);
|
||||||
today.setFieldByName("temperature_feels_like", weather.feelsLikeTemp);
|
today.setFieldByName("relative_humidity", weather.currentHumidity);
|
||||||
today.setFieldByName("relative_humidity", weather.currentHumidity);
|
today.setFieldByName("observed_location_lat", weather.latitude);
|
||||||
today.setFieldByName("observed_location_lat", weather.latitude);
|
today.setFieldByName("observed_location_long", weather.longitude);
|
||||||
today.setFieldByName("observed_location_long", weather.longitude);
|
today.setFieldByName("dew_point", weather.dewPoint);
|
||||||
today.setFieldByName("dew_point", weather.dewPoint);
|
if (null != weather.airQuality) {
|
||||||
if (null != weather.airQuality) {
|
today.setFieldByName("air_quality", weather.airQuality.aqi);
|
||||||
today.setFieldByName("air_quality", weather.airQuality.aqi);
|
|
||||||
}
|
|
||||||
today.setFieldByName("location", weather.location);
|
|
||||||
weatherData.add(today);
|
|
||||||
|
|
||||||
for (int hour = 0; hour <= 11; hour++) {
|
|
||||||
if (hour < weather.hourly.size()) {
|
|
||||||
WeatherSpec.Hourly hourly = weather.hourly.get(hour);
|
|
||||||
RecordData weatherHourlyForecast = new RecordData(recordDefinitionHourly, recordDefinitionHourly.getRecordHeader());
|
|
||||||
weatherHourlyForecast.setFieldByName("weather_report", 1); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
|
||||||
weatherHourlyForecast.setFieldByName("timestamp", hourly.timestamp);
|
|
||||||
weatherHourlyForecast.setFieldByName("temperature", hourly.temp);
|
|
||||||
weatherHourlyForecast.setFieldByName("condition", hourly.conditionCode);
|
|
||||||
weatherHourlyForecast.setFieldByName("temperature_feels_like", hourly.temp); //TODO: switch to actual feels like field once Hourly contains this information
|
|
||||||
weatherHourlyForecast.setFieldByName("wind_direction", hourly.windDirection);
|
|
||||||
weatherHourlyForecast.setFieldByName("wind_speed", Math.round(hourly.windSpeed));
|
|
||||||
weatherHourlyForecast.setFieldByName("precipitation_probability", hourly.precipProbability);
|
|
||||||
weatherHourlyForecast.setFieldByName("relative_humidity", hourly.humidity);
|
|
||||||
// weatherHourlyForecast.setFieldByName("dew_point", 0); // TODO: add once Hourly contains this information
|
|
||||||
weatherHourlyForecast.setFieldByName("uv_index", hourly.uvIndex);
|
|
||||||
// weatherHourlyForecast.setFieldByName("air_quality", 0); // TODO: add once Hourly contains this information
|
|
||||||
weatherData.add(weatherHourlyForecast);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//
|
|
||||||
RecordData todayDailyForecast = new RecordData(recordDefinitionDaily, recordDefinitionDaily.getRecordHeader());
|
|
||||||
todayDailyForecast.setFieldByName("weather_report", 2); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
|
||||||
todayDailyForecast.setFieldByName("timestamp", weather.timestamp);
|
|
||||||
todayDailyForecast.setFieldByName("low_temperature", weather.todayMinTemp);
|
|
||||||
todayDailyForecast.setFieldByName("high_temperature", weather.todayMaxTemp);
|
|
||||||
todayDailyForecast.setFieldByName("condition", weather.currentConditionCode);
|
|
||||||
todayDailyForecast.setFieldByName("precipitation_probability", weather.precipProbability);
|
|
||||||
todayDailyForecast.setFieldByName("day_of_week", weather.timestamp);
|
|
||||||
if (null != weather.airQuality) {
|
|
||||||
todayDailyForecast.setFieldByName("air_quality", weather.airQuality.aqi);
|
|
||||||
}
|
|
||||||
weatherData.add(todayDailyForecast);
|
|
||||||
|
|
||||||
|
|
||||||
for (int day = 0; day < 4; day++) {
|
|
||||||
if (day < weather.forecasts.size()) {
|
|
||||||
WeatherSpec.Daily daily = weather.forecasts.get(day);
|
|
||||||
int ts = weather.timestamp + (day + 1) * 24 * 60 * 60; //TODO: is this needed?
|
|
||||||
RecordData weatherDailyForecast = new RecordData(recordDefinitionDaily, recordDefinitionDaily.getRecordHeader());
|
|
||||||
weatherDailyForecast.setFieldByName("weather_report", 2); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
|
||||||
weatherDailyForecast.setFieldByName("timestamp", weather.timestamp);
|
|
||||||
weatherDailyForecast.setFieldByName("low_temperature", daily.minTemp);
|
|
||||||
weatherDailyForecast.setFieldByName("high_temperature", daily.maxTemp);
|
|
||||||
weatherDailyForecast.setFieldByName("condition", daily.conditionCode);
|
|
||||||
weatherDailyForecast.setFieldByName("precipitation_probability", daily.precipProbability);
|
|
||||||
if (null != daily.airQuality) {
|
|
||||||
weatherDailyForecast.setFieldByName("air_quality", daily.airQuality.aqi);
|
|
||||||
}
|
|
||||||
weatherDailyForecast.setFieldByName("day_of_week", ts);
|
|
||||||
weatherData.add(weatherDailyForecast);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sendOutgoingMessage("send weather data", new nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.FitDataMessage(weatherData));
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOG.error(e.getMessage());
|
|
||||||
}
|
}
|
||||||
|
today.setFieldByName("location", weather.location);
|
||||||
|
weatherData.add(today);
|
||||||
|
|
||||||
|
for (int hour = 0; hour <= 11; hour++) {
|
||||||
|
if (hour < weather.hourly.size()) {
|
||||||
|
WeatherSpec.Hourly hourly = weather.hourly.get(hour);
|
||||||
|
RecordData weatherHourlyForecast = new RecordData(recordDefinitionHourly, recordDefinitionHourly.getRecordHeader());
|
||||||
|
weatherHourlyForecast.setFieldByName("weather_report", 1); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
||||||
|
weatherHourlyForecast.setFieldByName("timestamp", hourly.timestamp);
|
||||||
|
weatherHourlyForecast.setFieldByName("temperature", hourly.temp);
|
||||||
|
weatherHourlyForecast.setFieldByName("condition", hourly.conditionCode);
|
||||||
|
weatherHourlyForecast.setFieldByName("temperature_feels_like", hourly.temp); //TODO: switch to actual feels like field once Hourly contains this information
|
||||||
|
weatherHourlyForecast.setFieldByName("wind_direction", hourly.windDirection);
|
||||||
|
weatherHourlyForecast.setFieldByName("wind_speed", Math.round(hourly.windSpeed));
|
||||||
|
weatherHourlyForecast.setFieldByName("precipitation_probability", hourly.precipProbability);
|
||||||
|
weatherHourlyForecast.setFieldByName("relative_humidity", hourly.humidity);
|
||||||
|
// weatherHourlyForecast.setFieldByName("dew_point", 0); // TODO: add once Hourly contains this information
|
||||||
|
weatherHourlyForecast.setFieldByName("uv_index", hourly.uvIndex);
|
||||||
|
// weatherHourlyForecast.setFieldByName("air_quality", 0); // TODO: add once Hourly contains this information
|
||||||
|
weatherData.add(weatherHourlyForecast);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
RecordData todayDailyForecast = new RecordData(recordDefinitionDaily, recordDefinitionDaily.getRecordHeader());
|
||||||
|
todayDailyForecast.setFieldByName("weather_report", 2); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
||||||
|
todayDailyForecast.setFieldByName("timestamp", weather.timestamp);
|
||||||
|
todayDailyForecast.setFieldByName("low_temperature", weather.todayMinTemp);
|
||||||
|
todayDailyForecast.setFieldByName("high_temperature", weather.todayMaxTemp);
|
||||||
|
todayDailyForecast.setFieldByName("condition", weather.currentConditionCode);
|
||||||
|
todayDailyForecast.setFieldByName("precipitation_probability", weather.precipProbability);
|
||||||
|
todayDailyForecast.setFieldByName("day_of_week", weather.timestamp);
|
||||||
|
if (null != weather.airQuality) {
|
||||||
|
todayDailyForecast.setFieldByName("air_quality", weather.airQuality.aqi);
|
||||||
|
}
|
||||||
|
weatherData.add(todayDailyForecast);
|
||||||
|
|
||||||
|
|
||||||
|
for (int day = 0; day < 4; day++) {
|
||||||
|
if (day < weather.forecasts.size()) {
|
||||||
|
WeatherSpec.Daily daily = weather.forecasts.get(day);
|
||||||
|
int ts = weather.timestamp + (day + 1) * 24 * 60 * 60;
|
||||||
|
RecordData weatherDailyForecast = new RecordData(recordDefinitionDaily, recordDefinitionDaily.getRecordHeader());
|
||||||
|
weatherDailyForecast.setFieldByName("weather_report", 2); // 0 = current, 1 = hourly_forecast, 2 = daily_forecast
|
||||||
|
weatherDailyForecast.setFieldByName("timestamp", weather.timestamp);
|
||||||
|
weatherDailyForecast.setFieldByName("low_temperature", daily.minTemp);
|
||||||
|
weatherDailyForecast.setFieldByName("high_temperature", daily.maxTemp);
|
||||||
|
weatherDailyForecast.setFieldByName("condition", daily.conditionCode);
|
||||||
|
weatherDailyForecast.setFieldByName("precipitation_probability", daily.precipProbability);
|
||||||
|
if (null != daily.airQuality) {
|
||||||
|
weatherDailyForecast.setFieldByName("air_quality", daily.airQuality.aqi);
|
||||||
|
}
|
||||||
|
weatherDailyForecast.setFieldByName("day_of_week", ts);
|
||||||
|
weatherData.add(weatherDailyForecast);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sendOutgoingMessage("send weather data", new nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.FitDataMessage(weatherData));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,7 +616,7 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni
|
|||||||
stopMusicTimer();
|
stopMusicTimer();
|
||||||
|
|
||||||
musicStateTimer = new Timer();
|
musicStateTimer = new Timer();
|
||||||
int updatePeriod = 4000; //milliseconds
|
int updatePeriod = 29000; //milliseconds
|
||||||
LOG.debug("onSetMusicState: {}", stateSpec.toString());
|
LOG.debug("onSetMusicState: {}", stateSpec.toString());
|
||||||
|
|
||||||
if (stateSpec.state == MusicStateSpec.STATE_PLAYING) {
|
if (stateSpec.state == MusicStateSpec.STATE_PLAYING) {
|
||||||
|
@ -19,16 +19,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages.stat
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
|
||||||
public abstract class GFDIMessage {
|
public abstract class GFDIMessage {
|
||||||
public static final int MESSAGE_REQUEST = 5001;
|
|
||||||
public static final int MESSAGE_DIRECTORY_FILE_FILTER_REQUEST = 5007;
|
|
||||||
public static final int MESSAGE_FILE_READY = 5009;
|
|
||||||
public static final int MESSAGE_BATTERY_STATUS = 5023;
|
|
||||||
public static final int MESSAGE_NOTIFICATION_SOURCE = 5033;
|
|
||||||
public static final int MESSAGE_GNCS_CONTROL_POINT_REQUEST = 5034;
|
|
||||||
public static final int MESSAGE_GNCS_DATA_SOURCE = 5035;
|
|
||||||
public static final int MESSAGE_NOTIFICATION_SERVICE_SUBSCRIPTION = 5036;
|
|
||||||
public static final int MESSAGE_SYNC_REQUEST = 5037;
|
|
||||||
public static final int MESSAGE_AUTH_NEGOTIATION = 5101;
|
|
||||||
protected static final Logger LOG = LoggerFactory.getLogger(GFDIMessage.class);
|
protected static final Logger LOG = LoggerFactory.getLogger(GFDIMessage.class);
|
||||||
private static int maxPacketSize = 375; //safe default?
|
private static int maxPacketSize = 375; //safe default?
|
||||||
protected final ByteBuffer response = ByteBuffer.allocate(1000);
|
protected final ByteBuffer response = ByteBuffer.allocate(1000);
|
||||||
|
Loading…
Reference in New Issue
Block a user