address sunrise/set rounding in last 30 seconds of hour (fixes #146)

This commit is contained in:
joeycastillo 2022-11-28 00:40:08 -06:00
parent 444b911e90
commit 423c5ec70e

View File

@ -93,15 +93,12 @@ static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_s
minutes = 60.0 * fmod(rise, 1); minutes = 60.0 * fmod(rise, 1);
seconds = 60.0 * fmod(minutes, 1); seconds = 60.0 * fmod(minutes, 1);
scratch_time.unit.hour = floor(rise); scratch_time.unit.hour = floor(rise);
if (seconds < 30) { if (seconds < 30) scratch_time.unit.minute = floor(minutes);
scratch_time.unit.minute = floor(minutes); else scratch_time.unit.minute = ceil(minutes);
}
else { if (scratch_time.unit.minute == 60) {
scratch_time.unit.minute = ceil(minutes); scratch_time.unit.minute = 0;
if (scratch_time.unit.minute == 60) { scratch_time.unit.hour = (scratch_time.unit.hour + 1) % 24;
scratch_time.unit.minute = 0;
scratch_time.unit.hour = (scratch_time.unit.hour + 1) % 24;
}
} }
if (date_time.reg < scratch_time.reg) _sunrise_sunset_set_expiration(state, scratch_time); if (date_time.reg < scratch_time.reg) _sunrise_sunset_set_expiration(state, scratch_time);
@ -126,6 +123,11 @@ static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_s
if (seconds < 30) scratch_time.unit.minute = floor(minutes); if (seconds < 30) scratch_time.unit.minute = floor(minutes);
else scratch_time.unit.minute = ceil(minutes); else scratch_time.unit.minute = ceil(minutes);
if (scratch_time.unit.minute == 60) {
scratch_time.unit.minute = 0;
scratch_time.unit.hour = (scratch_time.unit.hour + 1) % 24;
}
if (date_time.reg < scratch_time.reg) _sunrise_sunset_set_expiration(state, scratch_time); if (date_time.reg < scratch_time.reg) _sunrise_sunset_set_expiration(state, scratch_time);
if (date_time.reg < scratch_time.reg || show_next_match) { if (date_time.reg < scratch_time.reg || show_next_match) {