Skip to content

Commit eac460f

Browse files
authored
weather: Fix GetCurrent* functions returning future events (#1879)
1 parent 46b664b commit eac460f

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/components/ble/weather/WeatherService.cpp

+18-9
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,8 @@ namespace Pinetime {
404404
std::unique_ptr<WeatherData::Clouds>& WeatherService::GetCurrentClouds() {
405405
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
406406
for (auto&& header : this->timeline) {
407-
if (header->eventType == WeatherData::eventtype::Clouds && IsEventStillValid(header, currentTimestamp)) {
407+
if (header->eventType == WeatherData::eventtype::Clouds && currentTimestamp >= header->timestamp &&
408+
IsEventStillValid(header, currentTimestamp)) {
408409
return reinterpret_cast<std::unique_ptr<WeatherData::Clouds>&>(header);
409410
}
410411
}
@@ -415,7 +416,8 @@ namespace Pinetime {
415416
std::unique_ptr<WeatherData::Obscuration>& WeatherService::GetCurrentObscuration() {
416417
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
417418
for (auto&& header : this->timeline) {
418-
if (header->eventType == WeatherData::eventtype::Obscuration && IsEventStillValid(header, currentTimestamp)) {
419+
if (header->eventType == WeatherData::eventtype::Obscuration && currentTimestamp >= header->timestamp &&
420+
IsEventStillValid(header, currentTimestamp)) {
419421
return reinterpret_cast<std::unique_ptr<WeatherData::Obscuration>&>(header);
420422
}
421423
}
@@ -426,7 +428,8 @@ namespace Pinetime {
426428
std::unique_ptr<WeatherData::Precipitation>& WeatherService::GetCurrentPrecipitation() {
427429
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
428430
for (auto&& header : this->timeline) {
429-
if (header->eventType == WeatherData::eventtype::Precipitation && IsEventStillValid(header, currentTimestamp)) {
431+
if (header->eventType == WeatherData::eventtype::Precipitation && currentTimestamp >= header->timestamp &&
432+
IsEventStillValid(header, currentTimestamp)) {
430433
return reinterpret_cast<std::unique_ptr<WeatherData::Precipitation>&>(header);
431434
}
432435
}
@@ -437,7 +440,8 @@ namespace Pinetime {
437440
std::unique_ptr<WeatherData::Wind>& WeatherService::GetCurrentWind() {
438441
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
439442
for (auto&& header : this->timeline) {
440-
if (header->eventType == WeatherData::eventtype::Wind && IsEventStillValid(header, currentTimestamp)) {
443+
if (header->eventType == WeatherData::eventtype::Wind && currentTimestamp >= header->timestamp &&
444+
IsEventStillValid(header, currentTimestamp)) {
441445
return reinterpret_cast<std::unique_ptr<WeatherData::Wind>&>(header);
442446
}
443447
}
@@ -448,7 +452,8 @@ namespace Pinetime {
448452
std::unique_ptr<WeatherData::Temperature>& WeatherService::GetCurrentTemperature() {
449453
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
450454
for (auto&& header : this->timeline) {
451-
if (header->eventType == WeatherData::eventtype::Temperature && IsEventStillValid(header, currentTimestamp)) {
455+
if (header->eventType == WeatherData::eventtype::Temperature && currentTimestamp >= header->timestamp &&
456+
IsEventStillValid(header, currentTimestamp)) {
452457
return reinterpret_cast<std::unique_ptr<WeatherData::Temperature>&>(header);
453458
}
454459
}
@@ -459,7 +464,8 @@ namespace Pinetime {
459464
std::unique_ptr<WeatherData::Humidity>& WeatherService::GetCurrentHumidity() {
460465
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
461466
for (auto&& header : this->timeline) {
462-
if (header->eventType == WeatherData::eventtype::Humidity && IsEventStillValid(header, currentTimestamp)) {
467+
if (header->eventType == WeatherData::eventtype::Humidity && currentTimestamp >= header->timestamp &&
468+
IsEventStillValid(header, currentTimestamp)) {
463469
return reinterpret_cast<std::unique_ptr<WeatherData::Humidity>&>(header);
464470
}
465471
}
@@ -470,7 +476,8 @@ namespace Pinetime {
470476
std::unique_ptr<WeatherData::Pressure>& WeatherService::GetCurrentPressure() {
471477
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
472478
for (auto&& header : this->timeline) {
473-
if (header->eventType == WeatherData::eventtype::Pressure && IsEventStillValid(header, currentTimestamp)) {
479+
if (header->eventType == WeatherData::eventtype::Pressure && currentTimestamp >= header->timestamp &&
480+
IsEventStillValid(header, currentTimestamp)) {
474481
return reinterpret_cast<std::unique_ptr<WeatherData::Pressure>&>(header);
475482
}
476483
}
@@ -481,7 +488,8 @@ namespace Pinetime {
481488
std::unique_ptr<WeatherData::Location>& WeatherService::GetCurrentLocation() {
482489
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
483490
for (auto&& header : this->timeline) {
484-
if (header->eventType == WeatherData::eventtype::Location && IsEventStillValid(header, currentTimestamp)) {
491+
if (header->eventType == WeatherData::eventtype::Location && currentTimestamp >= header->timestamp &&
492+
IsEventStillValid(header, currentTimestamp)) {
485493
return reinterpret_cast<std::unique_ptr<WeatherData::Location>&>(header);
486494
}
487495
}
@@ -492,7 +500,8 @@ namespace Pinetime {
492500
std::unique_ptr<WeatherData::AirQuality>& WeatherService::GetCurrentQuality() {
493501
uint64_t currentTimestamp = GetCurrentUnixTimestamp();
494502
for (auto&& header : this->timeline) {
495-
if (header->eventType == WeatherData::eventtype::AirQuality && IsEventStillValid(header, currentTimestamp)) {
503+
if (header->eventType == WeatherData::eventtype::AirQuality && currentTimestamp >= header->timestamp &&
504+
IsEventStillValid(header, currentTimestamp)) {
496505
return reinterpret_cast<std::unique_ptr<WeatherData::AirQuality>&>(header);
497506
}
498507
}

0 commit comments

Comments
 (0)