1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-02 03:16:07 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vivomovehr/fit/FitWeatherConditions.java
Mormegil 3a58314db6 Garmin Vivomove HR support
- communication protocols
- device support implementation
- download FIT file storage

Features:
- basic connectivity: time sync, battery status, HW/FW version info
- real-time activity tracking
- fitness data sync
- find the device, find the phone
- factory reset

Features implemented but not working:
- notifications: fully implemented, seem to communicate correctly, but not shown on watch

Features implemented partially (not expected to work now):
- weather information (and in future possibly weather alerts)
- music info
- firmware update: only the initial file upload implemented, not used

Things to improve/change:
- Device name hardcoded in `VivomoveHrCoordinator.getSupportedType`, service UUIDs not available
- Download FIT file storage: Should be store (and offer the user to export?) the FIT data forever?
- Obviously, various code improvements, cleanup, etc.
2023-07-20 20:30:14 +00:00

192 lines
8.0 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.vivomovehr.fit;
public final class FitWeatherConditions {
public static final int CLEAR = 0;
public static final int PARTLY_CLOUDY = 1;
public static final int MOSTLY_CLOUDY = 2;
public static final int RAIN = 3;
public static final int SNOW = 4;
public static final int WINDY = 5;
public static final int THUNDERSTORMS = 6;
public static final int WINTRY_MIX = 7;
public static final int FOG = 8;
public static final int HAZY = 11;
public static final int HAIL = 12;
public static final int SCATTERED_SHOWERS = 13;
public static final int SCATTERED_THUNDERSTORMS = 14;
public static final int UNKNOWN_PRECIPITATION = 15;
public static final int LIGHT_RAIN = 16;
public static final int HEAVY_RAIN = 17;
public static final int LIGHT_SNOW = 18;
public static final int HEAVY_SNOW = 19;
public static final int LIGHT_RAIN_SNOW = 20;
public static final int HEAVY_RAIN_SNOW = 21;
public static final int CLOUDY = 22;
public static final int ALERT_SEVERITY_UNKNOWN = 0;
public static final int ALERT_SEVERITY_WARNING = 1;
public static final int ALERT_SEVERITY_WATCH = 2;
public static final int ALERT_SEVERITY_ADVISORY = 3;
public static final int ALERT_SEVERITY_STATEMENT = 4;
public static final int ALERT_TYPE_UNSPECIFIED = 0;
public static final int ALERT_TYPE_TORNADO = 1;
public static final int ALERT_TYPE_TSUNAMI = 2;
public static final int ALERT_TYPE_HURRICANE = 3;
public static final int ALERT_TYPE_EXTREME_WIND = 4;
public static final int ALERT_TYPE_TYPHOON = 5;
public static final int ALERT_TYPE_INLAND_HURRICANE = 6;
public static final int ALERT_TYPE_HURRICANE_FORCE_WIND = 7;
public static final int ALERT_TYPE_WATERSPOUT = 8;
public static final int ALERT_TYPE_SEVERE_THUNDERSTORM = 9;
public static final int ALERT_TYPE_WRECKHOUSE_WINDS = 10;
public static final int ALERT_TYPE_LES_SUETES_WIND = 11;
public static final int ALERT_TYPE_AVALANCHE = 12;
public static final int ALERT_TYPE_FLASH_FLOOD = 13;
public static final int ALERT_TYPE_TROPICAL_STORM = 14;
public static final int ALERT_TYPE_INLAND_TROPICAL_STORM = 15;
public static final int ALERT_TYPE_BLIZZARD = 16;
public static final int ALERT_TYPE_ICE_STORM = 17;
public static final int ALERT_TYPE_FREEZING_RAIN = 18;
public static final int ALERT_TYPE_DEBRIS_FLOW = 19;
public static final int ALERT_TYPE_FLASH_FREEZE = 20;
public static final int ALERT_TYPE_DUST_STORM = 21;
public static final int ALERT_TYPE_HIGH_WIND = 22;
public static final int ALERT_TYPE_WINTER_STORM = 23;
public static final int ALERT_TYPE_HEAVY_FREEZING_SPRAY = 24;
public static final int ALERT_TYPE_EXTREME_COLD = 25;
public static final int ALERT_TYPE_WIND_CHILL = 26;
public static final int ALERT_TYPE_COLD_WAVE = 27;
public static final int ALERT_TYPE_HEAVY_SNOW_ALERT = 28;
public static final int ALERT_TYPE_LAKE_EFFECT_BLOWING_SNOW = 29;
public static final int ALERT_TYPE_SNOW_SQUALL = 30;
public static final int ALERT_TYPE_LAKE_EFFECT_SNOW = 31;
public static final int ALERT_TYPE_WINTER_WEATHER = 32;
public static final int ALERT_TYPE_SLEET = 33;
public static final int ALERT_TYPE_SNOWFALL = 34;
public static final int ALERT_TYPE_SNOW_AND_BLOWING_SNOW = 35;
public static final int ALERT_TYPE_BLOWING_SNOW = 36;
public static final int ALERT_TYPE_SNOW_ALERT = 37;
public static final int ALERT_TYPE_ARCTIC_OUTFLOW = 38;
public static final int ALERT_TYPE_FREEZING_DRIZZLE = 39;
public static final int ALERT_TYPE_STORM = 40;
public static final int ALERT_TYPE_STORM_SURGE = 41;
public static final int ALERT_TYPE_RAINFALL = 42;
public static final int ALERT_TYPE_AREAL_FLOOD = 43;
public static final int ALERT_TYPE_COASTAL_FLOOD = 44;
public static final int ALERT_TYPE_LAKESHORE_FLOOD = 45;
public static final int ALERT_TYPE_EXCESSIVE_HEAT = 46;
public static final int ALERT_TYPE_HEAT = 47;
public static final int ALERT_TYPE_WEATHER = 48;
public static final int ALERT_TYPE_HIGH_HEAT_AND_HUMIDITY = 49;
public static final int ALERT_TYPE_HUMIDEX_AND_HEALTH = 50;
public static final int ALERT_TYPE_HUMIDEX = 51;
public static final int ALERT_TYPE_GALE = 52;
public static final int ALERT_TYPE_FREEZING_SPRAY = 53;
public static final int ALERT_TYPE_SPECIAL_MARINE = 54;
public static final int ALERT_TYPE_SQUALL = 55;
public static final int ALERT_TYPE_STRONG_WIND = 56;
public static final int ALERT_TYPE_LAKE_WIND = 57;
public static final int ALERT_TYPE_MARINE_WEATHER = 58;
public static final int ALERT_TYPE_WIND = 59;
public static final int ALERT_TYPE_SMALL_CRAFT_HAZARDOUS_SEAS = 60;
public static final int ALERT_TYPE_HAZARDOUS_SEAS = 61;
public static final int ALERT_TYPE_SMALL_CRAFT = 62;
public static final int ALERT_TYPE_SMALL_CRAFT_WINDS = 63;
public static final int ALERT_TYPE_SMALL_CRAFT_ROUGH_BAR = 64;
public static final int ALERT_TYPE_HIGH_WATER_LEVEL = 65;
public static final int ALERT_TYPE_ASHFALL = 66;
public static final int ALERT_TYPE_FREEZING_FOG = 67;
public static final int ALERT_TYPE_DENSE_FOG = 68;
public static final int ALERT_TYPE_DENSE_SMOKE = 69;
public static final int ALERT_TYPE_BLOWING_DUST = 70;
public static final int ALERT_TYPE_HARD_FREEZE = 71;
public static final int ALERT_TYPE_FREEZE = 72;
public static final int ALERT_TYPE_FROST = 73;
public static final int ALERT_TYPE_FIRE_WEATHER = 74;
public static final int ALERT_TYPE_FLOOD = 75;
public static final int ALERT_TYPE_RIP_TIDE = 76;
public static final int ALERT_TYPE_HIGH_SURF = 77;
public static final int ALERT_TYPE_SMOG = 78;
public static final int ALERT_TYPE_AIR_QUALITY = 79;
public static final int ALERT_TYPE_BRISK_WIND = 80;
public static final int ALERT_TYPE_AIR_STAGNATION = 81;
public static final int ALERT_TYPE_LOW_WATER = 82;
public static final int ALERT_TYPE_HYDROLOGICAL = 83;
public static final int ALERT_TYPE_SPECIAL_WEATHER = 84;
public static int openWeatherCodeToFitWeatherStatus(int openWeatherCode) {
switch (openWeatherCode) {
case 800:
return CLEAR;
case 801:
case 802:
return PARTLY_CLOUDY;
case 803:
return MOSTLY_CLOUDY;
case 804:
return CLOUDY;
case 701:
case 721:
return HAZY;
case 741:
return FOG;
case 771:
case 781:
return WINDY;
case 615:
return LIGHT_RAIN_SNOW;
case 616:
return HEAVY_RAIN_SNOW;
case 611:
case 612:
case 613:
return WINTRY_MIX;
case 500:
case 520:
case 521:
case 300:
case 310:
case 313:
return LIGHT_RAIN;
case 501:
case 531:
case 301:
case 311:
return RAIN;
case 502:
case 503:
case 504:
case 522:
case 302:
case 312:
case 314:
return HEAVY_RAIN;
case 321:
return SCATTERED_SHOWERS;
case 511:
return UNKNOWN_PRECIPITATION;
case 200:
case 201:
case 202:
case 210:
case 211:
case 212:
case 230:
case 231:
case 232:
return THUNDERSTORMS;
case 221:
return SCATTERED_THUNDERSTORMS;
case 600:
return LIGHT_SNOW;
case 601:
return SNOW;
case 602:
return HEAVY_SNOW;
default:
throw new IllegalArgumentException("Unknown weather code " + openWeatherCode);
}
}
}