Skip to content

Commit 7712221

Browse files
asotraandchiind
authored andcommitted
Go to intervention needed when battery-low stop fails
Add StoppingGoToRecharge state that transitions to InterventionNeeded when stopping the mission fails due to low battery, instead of silently ignoring the error.
1 parent a620604 commit 7712221

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

src/isar/state_machine/states/stopping_go_to_recharge.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import TYPE_CHECKING, List
22

33
import isar.state_machine.states.going_to_recharging as GoingToRecharging
4-
import isar.state_machine.states.monitor as Monitor
4+
import isar.state_machine.states.intervention_needed as InterventionNeeded
55
from isar.eventhandlers.eventhandler import EventHandlerMapping, State, Transition
66
from isar.models.events import EmptyMessage
77
from isar.state_machine.states_enum import States
@@ -18,8 +18,10 @@ def __init__(self, state_machine: "StateMachine", mission_id: str):
1818

1919
def _failed_stop_event_handler(
2020
error_message: ErrorMessage,
21-
) -> Transition[Monitor.Monitor]:
22-
return Monitor.transition_with_existing_mission(mission_id)
21+
) -> Transition[InterventionNeeded.InterventionNeeded]:
22+
return InterventionNeeded.transition(
23+
"Failed to stop mission when battery was low"
24+
)
2325

2426
def _successful_stop_event_handler(
2527
successful_stop: EmptyMessage,

tests/isar/state_machine/states/test_monitor_state.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from isar.modules import ApplicationContainer
1515
from isar.services.utilities.scheduling_utilities import SchedulingUtilities
1616
from isar.state_machine.state_machine import StateMachine
17+
from isar.state_machine.states.intervention_needed import InterventionNeeded
1718
from isar.state_machine.states.monitor import Monitor
1819
from isar.state_machine.states.pausing import Pausing
1920
from isar.state_machine.states.resuming import Resuming
@@ -47,7 +48,7 @@ def _mock_robot_exception_with_message() -> RobotException:
4748
)
4849

4950

50-
def test_stopping_to_recharge_goes_to_monitor(
51+
def test_stopping_to_recharge_goes_to_intervention_needed(
5152
sync_state_machine: StateMachine,
5253
) -> None:
5354
sync_state_machine.current_state = StoppingGoToRecharge(
@@ -62,10 +63,10 @@ def test_stopping_to_recharge_goes_to_monitor(
6263

6364
transition = event_handler.handler(EmptyMessage())
6465

65-
assert sync_state_machine.events.mqtt_queue.empty()
66-
6766
sync_state_machine.current_state = transition(sync_state_machine)
68-
assert type(sync_state_machine.current_state) is Monitor
67+
68+
assert not sync_state_machine.events.mqtt_queue.empty()
69+
assert type(sync_state_machine.current_state) is InterventionNeeded
6970

7071

7172
def test_transitioning_to_monitor_from_stopping_when_return_home_cancelled(

0 commit comments

Comments
 (0)