weather: Switch to std::optional for Forecast days

Also only iterate over the number of days actually in use, rather than
MaxNbForecastDays.
This commit is contained in:
FintasticMan
2024-10-09 12:04:53 +02:00
committed by JF
parent e247bd7019
commit f7c87a700d
3 changed files with 14 additions and 14 deletions

View File

@@ -52,7 +52,7 @@ namespace {
SimpleWeatherService::Forecast CreateForecast(const uint8_t* dataBuffer) {
auto timestamp = static_cast<uint64_t>(ToUInt64(&dataBuffer[2]));
std::array<SimpleWeatherService::Forecast::Day, SimpleWeatherService::MaxNbForecastDays> days;
std::array<std::optional<SimpleWeatherService::Forecast::Day>, SimpleWeatherService::MaxNbForecastDays> days;
const uint8_t nbDaysInBuffer = dataBuffer[10];
const uint8_t nbDays = std::min(SimpleWeatherService::MaxNbForecastDays, nbDaysInBuffer);
for (int i = 0; i < nbDays; i++) {
@@ -112,9 +112,9 @@ int SimpleWeatherService::OnCommand(struct ble_gatt_access_ctxt* ctxt) {
for (int i = 0; i < 5; i++) {
NRF_LOG_INFO("\t[%d] Min: %d - Max : %d - Icon : %d",
i,
forecast->days[i].minTemperature.PreciseCelsius(),
forecast->days[i].maxTemperature.PreciseCelsius(),
forecast->days[i].iconId);
forecast->days[i]->minTemperature.PreciseCelsius(),
forecast->days[i]->maxTemperature.PreciseCelsius(),
forecast->days[i]->iconId);
}
}
break;

View File

@@ -63,7 +63,7 @@ namespace Pinetime {
class Temperature {
public:
explicit Temperature(int16_t raw = 0) : raw {raw} {
explicit Temperature(int16_t raw) : raw {raw} {
}
[[nodiscard]] int16_t PreciseCelsius() const {
@@ -129,7 +129,7 @@ namespace Pinetime {
bool operator==(const Day& other) const;
};
std::array<Day, MaxNbForecastDays> days;
std::array<std::optional<Day>, MaxNbForecastDays> days;
bool operator==(const Forecast& other) const;
};