Skip to content

Commit 5b99f97

Browse files
Clean BatteriesStatusTracker code
Move getting status functionality to separate method. Signed-off-by: ela-kotulska-frequenz <[email protected]>
1 parent 61a4f66 commit 5b99f97

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

src/frequenz/sdk/microgrid/_battery/_status.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -233,20 +233,29 @@ def get_status(self) -> BatteryStatus:
233233
and self._no_critical_error(inv_msg)
234234
)
235235

236-
if not is_msg_ok:
237-
self._last_status = BatteryStatus.NOT_WORKING
238-
return self._last_status
236+
self._last_status = self._get_current_status(is_msg_ok)
237+
return self._last_status
239238

240-
# Use battery as soon as its message is back correct.
241-
if self._last_status == BatteryStatus.NOT_WORKING:
242-
self.unblock()
239+
def _get_current_status(self, is_msg_correct: bool) -> BatteryStatus:
240+
"""Get current battery status.
243241
244-
if self.is_blocked():
245-
self._last_status = BatteryStatus.UNCERTAIN
246-
else:
247-
self._last_status = BatteryStatus.WORKING
242+
Args:
243+
is_msg_correct: Whether messages from components are correct.
248244
249-
return self._last_status
245+
Returns:
246+
Battery status.
247+
"""
248+
249+
if not is_msg_correct:
250+
return BatteryStatus.NOT_WORKING
251+
if self._last_status == BatteryStatus.NOT_WORKING:
252+
# If message just become correct, then try to use it
253+
self._blocking_status.unblock()
254+
return BatteryStatus.WORKING
255+
if self._blocking_status.is_blocked():
256+
return BatteryStatus.UNCERTAIN
257+
258+
return BatteryStatus.WORKING
250259

251260
def is_blocked(self) -> bool:
252261
"""Return if battery is blocked.

0 commit comments

Comments
 (0)