Skip to content

Commit cd78e1d

Browse files
committed
Extract __should_do_periodic_refresh
1 parent 9c188f6 commit cd78e1d

File tree

1 file changed

+58
-70
lines changed

1 file changed

+58
-70
lines changed

src/vehicle.py

Lines changed: 58 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -368,76 +368,64 @@ def should_refresh(self) -> bool:
368368
LOG.debug(
369369
f"Refresh mode is {other}, checking for other vehicle {self.vin} conditions"
370370
)
371-
last_actual_poll = self.last_successful_refresh
372-
if self.last_failed_refresh is not None:
373-
last_actual_poll = max(last_actual_poll, self.last_failed_refresh)
374-
375-
# Try refreshing even if we last failed as long as the last_car_activity is newer
376-
if self.last_car_activity > last_actual_poll:
377-
LOG.debug(
378-
f"Polling vehicle {self.vin} as last_car_activity is newer than last_actual_poll."
379-
f" {self.last_car_activity} > {last_actual_poll}"
380-
)
381-
return True
382-
383-
if self.last_failed_refresh is not None:
384-
threshold = datetime.datetime.now() - datetime.timedelta(
385-
seconds=float(self.refresh_period_error)
386-
)
387-
result: bool = self.last_failed_refresh < threshold
388-
LOG.debug(
389-
f"Gateway failed refresh previously. Should refresh: {result}"
390-
)
391-
return result
392-
393-
if self.is_charging and self.refresh_period_charging > 0:
394-
result = (
395-
self.last_successful_refresh
396-
< datetime.datetime.now()
397-
- datetime.timedelta(
398-
seconds=float(self.refresh_period_charging)
399-
)
400-
)
401-
LOG.debug(f"HV battery is charging. Should refresh: {result}")
402-
return result
403-
404-
if self.hv_battery_active:
405-
result = (
406-
self.last_successful_refresh
407-
< datetime.datetime.now()
408-
- datetime.timedelta(seconds=float(self.refresh_period_active))
409-
)
410-
LOG.debug(f"HV battery is active. Should refresh: {result}")
411-
return result
412-
413-
last_shutdown_plus_refresh = (
414-
self.last_car_shutdown
415-
+ datetime.timedelta(
416-
seconds=float(self.refresh_period_inactive_grace)
417-
)
418-
)
419-
if last_shutdown_plus_refresh > datetime.datetime.now():
420-
result = (
421-
self.last_successful_refresh
422-
< datetime.datetime.now()
423-
- datetime.timedelta(
424-
seconds=float(self.refresh_period_after_shutdown)
425-
)
426-
)
427-
LOG.debug(
428-
f"Refresh grace period after shutdown has not passed. Should refresh: {result}"
429-
)
430-
return result
431-
432-
result = (
433-
self.last_successful_refresh
434-
< datetime.datetime.now()
435-
- datetime.timedelta(seconds=float(self.refresh_period_inactive))
436-
)
437-
LOG.debug(
438-
f"HV battery is inactive and refresh period after shutdown is over. Should refresh: {result}"
439-
)
440-
return result
371+
return self.__should_do_periodic_refresh()
372+
373+
def __should_do_periodic_refresh(self) -> bool:
374+
last_actual_poll = self.last_successful_refresh
375+
if self.last_failed_refresh is not None:
376+
last_actual_poll = max(last_actual_poll, self.last_failed_refresh)
377+
# Try refreshing even if we last failed as long as the last_car_activity is newer
378+
if self.last_car_activity > last_actual_poll:
379+
LOG.debug(
380+
f"Polling vehicle {self.vin} as last_car_activity is newer than last_actual_poll."
381+
f" {self.last_car_activity} > {last_actual_poll}"
382+
)
383+
return True
384+
if self.last_failed_refresh is not None:
385+
threshold = datetime.datetime.now() - datetime.timedelta(
386+
seconds=float(self.refresh_period_error)
387+
)
388+
result: bool = self.last_failed_refresh < threshold
389+
LOG.debug(f"Gateway failed refresh previously. Should refresh: {result}")
390+
return result
391+
if self.is_charging and self.refresh_period_charging > 0:
392+
result = (
393+
self.last_successful_refresh
394+
< datetime.datetime.now()
395+
- datetime.timedelta(seconds=float(self.refresh_period_charging))
396+
)
397+
LOG.debug(f"HV battery is charging. Should refresh: {result}")
398+
return result
399+
if self.hv_battery_active:
400+
result = (
401+
self.last_successful_refresh
402+
< datetime.datetime.now()
403+
- datetime.timedelta(seconds=float(self.refresh_period_active))
404+
)
405+
LOG.debug(f"HV battery is active. Should refresh: {result}")
406+
return result
407+
last_shutdown_plus_refresh = self.last_car_shutdown + datetime.timedelta(
408+
seconds=float(self.refresh_period_inactive_grace)
409+
)
410+
if last_shutdown_plus_refresh > datetime.datetime.now():
411+
result = (
412+
self.last_successful_refresh
413+
< datetime.datetime.now()
414+
- datetime.timedelta(seconds=float(self.refresh_period_after_shutdown))
415+
)
416+
LOG.debug(
417+
f"Refresh grace period after shutdown has not passed. Should refresh: {result}"
418+
)
419+
return result
420+
result = (
421+
self.last_successful_refresh
422+
< datetime.datetime.now()
423+
- datetime.timedelta(seconds=float(self.refresh_period_inactive))
424+
)
425+
LOG.debug(
426+
f"HV battery is inactive and refresh period after shutdown is over. Should refresh: {result}"
427+
)
428+
return result
441429

442430
def mark_successful_refresh(self) -> None:
443431
self.last_successful_refresh = datetime.datetime.now()

0 commit comments

Comments
 (0)