1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-07-17 02:44:04 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/asteroidos/AsteroidOSWeather.java

121 lines
3.3 KiB
Java
Raw Normal View History

package nodomain.freeyourgadget.gadgetbridge.devices.asteroidos;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
2023-01-06 19:27:01 +01:00
/**
* An adapter class for weather
*/
public class AsteroidOSWeather {
2023-01-06 19:27:01 +01:00
/**
* Provides a day's worth of weather
*/
public class Day {
2023-01-06 19:27:01 +01:00
/**
* The minimum temp of the day
*/
public int minTemp;
2023-01-06 19:27:01 +01:00
/**
* The maximum temp of the day
*/
public int maxTemp;
2023-01-06 19:27:01 +01:00
/**
* The current OWM weather condition code
*/
public int condition;
2023-01-06 19:27:01 +01:00
/**
* Creates a Day from the forecast given
* @param forecast
*/
public Day(WeatherSpec.Daily forecast) {
minTemp = forecast.minTemp;
maxTemp = forecast.maxTemp;
condition = forecast.conditionCode;
}
2023-01-06 19:27:01 +01:00
/**
* Creates a Day from the WeatherSpec given
* @param spec
*/
public Day(WeatherSpec spec) {
minTemp = spec.todayMinTemp;
maxTemp = spec.todayMaxTemp;
condition = spec.currentConditionCode;
}
}
2023-01-06 19:27:01 +01:00
/**
* The days of the weather
*/
public Day[] days = new Day[5];
2023-01-06 19:27:01 +01:00
/**
* The city name of the weather
*/
public String cityName = "";
2023-01-06 19:27:01 +01:00
/**
* Creates an AsteroidOSWeather from the WeatherSpec given
* @param spec
*/
public AsteroidOSWeather(WeatherSpec spec) {
cityName = spec.location;
days[0] = new Day(spec);
for (int i = 1; i < 5 && i < spec.forecasts.size(); i++) {
days[i] = new Day(spec.forecasts.get(i));
}
}
2023-01-06 19:27:01 +01:00
/**
* Returns a byte array of the city name
* @return a byte array of the city name
*/
public byte[] getCityName() {
return cityName.getBytes(StandardCharsets.UTF_8);
}
2023-01-06 19:27:01 +01:00
/**
* Parses the days' weather conditions and returns them in a format AsteroidOS can handle
* @return a byte array to be sent to the device
*/
public byte[] getWeatherConditions() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
for (Day day : days) {
stream.write((byte) (day.condition >> 8));
stream.write((byte) (day.condition));
}
return stream.toByteArray();
}
2023-01-06 19:27:01 +01:00
/**
* Parses the days' min temps and returns them in a format AsteroidOS can handle
* @return a byte array to be sent to the device
*/
public byte[] getMinTemps() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
for (Day day : days) {
stream.write((byte) (day.minTemp >> 8));
stream.write((byte) (day.minTemp));
}
return stream.toByteArray();
}
2023-01-06 19:27:01 +01:00
/**
* Parses the days' max temps and returns them in a format AsteroidOS can handle
* @return a byte array to be sent to the device
*/
public byte[] getMaxTemps() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
for (Day day : days) {
stream.write((byte) (day.maxTemp >> 8));
stream.write((byte) (day.maxTemp));
}
return stream.toByteArray();
}
}