Skip to content

Commit 832d38f

Browse files
authored
Merge pull request InfiniTimeOrg#164 from FintasticMan/fix-weather
Fix build after temperature type changes
2 parents 4590378 + e71293e commit 832d38f

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

main.cpp

+13-8
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,7 @@ class Framework {
854854
void set_forecast(
855855
uint64_t timestamp,
856856
std::array<
857-
Pinetime::Controllers::SimpleWeatherService::Forecast::Day,
857+
std::optional<Pinetime::Controllers::SimpleWeatherService::Forecast::Day>,
858858
Pinetime::Controllers::SimpleWeatherService::MaxNbForecastDays> days)
859859
{
860860
std::array<uint8_t, 36> dataBuffer {};
@@ -871,10 +871,13 @@ class Framework {
871871
dataBuffer.at(10) = static_cast<uint8_t>(days.size());
872872
for (int i = 0; i < days.size(); i++)
873873
{
874-
const Pinetime::Controllers::SimpleWeatherService::Forecast::Day &day = days.at(i);
875-
write_int16(data.subspan(11+(i*5)), day.minTemperature);
876-
write_int16(data.subspan(13+(i*5)), day.maxTemperature);
877-
dataBuffer.at(15+(i*5)) = static_cast<uint8_t>(day.iconId);
874+
const std::optional<Pinetime::Controllers::SimpleWeatherService::Forecast::Day> &day = days.at(i);
875+
if (!day.has_value()) {
876+
continue;
877+
}
878+
write_int16(data.subspan(11+(i*5)), day->minTemperature.PreciseCelsius());
879+
write_int16(data.subspan(13+(i*5)), day->maxTemperature.PreciseCelsius());
880+
dataBuffer.at(15+(i*5)) = static_cast<uint8_t>(day->iconId);
878881
}
879882
// send Forecast to SimpleWeatherService
880883
systemTask.nimble().weather().OnCommand(&ctxt);
@@ -883,7 +886,7 @@ class Framework {
883886
void generate_weather_data(bool clear) {
884887
if (clear) {
885888
set_current_weather(0, 0, 0);
886-
std::array<Pinetime::Controllers::SimpleWeatherService::Forecast::Day, Pinetime::Controllers::SimpleWeatherService::MaxNbForecastDays> days;
889+
std::array<std::optional<Pinetime::Controllers::SimpleWeatherService::Forecast::Day>, Pinetime::Controllers::SimpleWeatherService::MaxNbForecastDays> days;
887890
set_forecast(0, days);
888891
return;
889892
}
@@ -895,10 +898,12 @@ class Framework {
895898
set_current_weather((uint64_t)timestamp, temperature, rand() % 9);
896899

897900
// Generate forecast data
898-
std::array<Pinetime::Controllers::SimpleWeatherService::Forecast::Day, Pinetime::Controllers::SimpleWeatherService::MaxNbForecastDays> days;
901+
std::array<std::optional<Pinetime::Controllers::SimpleWeatherService::Forecast::Day>, Pinetime::Controllers::SimpleWeatherService::MaxNbForecastDays> days;
899902
for (int i = 0; i < Pinetime::Controllers::SimpleWeatherService::MaxNbForecastDays; i++) {
900903
days[i] = Pinetime::Controllers::SimpleWeatherService::Forecast::Day {
901-
(int16_t)(temperature - rand() % 10 * 100), (int16_t)(temperature + rand() % 10 * 100), Pinetime::Controllers::SimpleWeatherService::Icons(rand() % 9)
904+
Pinetime::Controllers::SimpleWeatherService::Temperature(temperature - rand() % 10 * 100),
905+
Pinetime::Controllers::SimpleWeatherService::Temperature(temperature + rand() % 10 * 100),
906+
Pinetime::Controllers::SimpleWeatherService::Icons(rand() % 9),
902907
};
903908
}
904909
set_forecast((uint64_t)timestamp, days);

0 commit comments

Comments
 (0)