|
@@ -1,784 +0,0 @@
|
|
|
-"""Implementation of statechart statechart.
|
|
|
-Generated by itemis CREATE code generator.
|
|
|
-"""
|
|
|
-
|
|
|
-import queue
|
|
|
-import sys, os
|
|
|
-sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../src')))
|
|
|
-from yakindu.rx import Observable
|
|
|
-
|
|
|
-class Statechart:
|
|
|
- """Implementation of the state machine Statechart.
|
|
|
- """
|
|
|
-
|
|
|
- class State:
|
|
|
- """ State Enum
|
|
|
- """
|
|
|
- (
|
|
|
- main_region_child_lockable,
|
|
|
- main_region_child_lockable_r1locked,
|
|
|
- main_region_child_lockable_r1orthogonal_state,
|
|
|
- main_region_child_lockable_r1orthogonal_state_r1door_open,
|
|
|
- main_region_child_lockable_r1orthogonal_state_r1door_closed,
|
|
|
- main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on,
|
|
|
- main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a,
|
|
|
- main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off,
|
|
|
- main_region_child_lockable_r1orthogonal_state_r2time_control,
|
|
|
- main_region_child_lockable_r2detect_clicks,
|
|
|
- null_state
|
|
|
- ) = range(11)
|
|
|
-
|
|
|
-
|
|
|
- def __init__(self):
|
|
|
- """ Declares all necessary variables including list of states, histories etc.
|
|
|
- """
|
|
|
-
|
|
|
- self.start_pressed = None
|
|
|
- self.stop_pressed = None
|
|
|
- self.increase_time_pressed = None
|
|
|
- self.door_opened = None
|
|
|
- self.door_closed = None
|
|
|
- self.turn_magnetron_on = None
|
|
|
- self.turn_magnetron_on_observable = Observable()
|
|
|
- self.turn_magnetron_off = None
|
|
|
- self.turn_magnetron_off_observable = Observable()
|
|
|
- self.set_displayed_time = None
|
|
|
- self.set_displayed_time_value = None
|
|
|
- self.set_displayed_time_observable = Observable()
|
|
|
- self.ring_bell = None
|
|
|
- self.ring_bell_observable = Observable()
|
|
|
-
|
|
|
- self.__internal_event_queue = queue.Queue()
|
|
|
- self.in_event_queue = queue.Queue()
|
|
|
- self.__remaining_time = None
|
|
|
- self.__clicks = None
|
|
|
- self.lock_unlock = None
|
|
|
-
|
|
|
- # enumeration of all states:
|
|
|
- self.__State = Statechart.State
|
|
|
- self.__state_conf_vector_changed = None
|
|
|
- self.__state_vector = [None] * 3
|
|
|
- for __state_index in range(3):
|
|
|
- self.__state_vector[__state_index] = self.State.null_state
|
|
|
-
|
|
|
- # for timed statechart:
|
|
|
- self.timer_service = None
|
|
|
- self.__time_events = [None] * 2
|
|
|
-
|
|
|
- # history vector:
|
|
|
- self.__history_vector = [None] * 1
|
|
|
- for __history_index in range(1):
|
|
|
- self.__history_vector[__history_index] = self.State.null_state
|
|
|
-
|
|
|
- # initializations:
|
|
|
- self.__remaining_time = 0
|
|
|
- self.__clicks = 0
|
|
|
- self.__is_executing = False
|
|
|
- self.__state_conf_vector_position = None
|
|
|
-
|
|
|
- def is_active(self):
|
|
|
- """Checks if the state machine is active.
|
|
|
- """
|
|
|
- return self.__state_vector[0] is not self.__State.null_state or self.__state_vector[1] is not self.__State.null_state or self.__state_vector[2] is not self.__State.null_state
|
|
|
-
|
|
|
- def is_final(self):
|
|
|
- """Checks if the statemachine is final.
|
|
|
- Always returns 'false' since this state machine can never become final.
|
|
|
- """
|
|
|
- return False
|
|
|
-
|
|
|
- def is_state_active(self, state):
|
|
|
- """Checks if the state is currently active.
|
|
|
- """
|
|
|
- s = state
|
|
|
- if s == self.__State.main_region_child_lockable:
|
|
|
- return (self.__state_vector[0] >= self.__State.main_region_child_lockable)\
|
|
|
- and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r2detect_clicks)
|
|
|
- if s == self.__State.main_region_child_lockable_r1locked:
|
|
|
- return self.__state_vector[0] == self.__State.main_region_child_lockable_r1locked
|
|
|
- if s == self.__State.main_region_child_lockable_r1orthogonal_state:
|
|
|
- return (self.__state_vector[0] >= self.__State.main_region_child_lockable_r1orthogonal_state)\
|
|
|
- and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r1orthogonal_state_r2time_control)
|
|
|
- if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_open:
|
|
|
- return self.__state_vector[0] == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_open
|
|
|
- if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed:
|
|
|
- return (self.__state_vector[0] >= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed)\
|
|
|
- and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off)
|
|
|
- if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on:
|
|
|
- return (self.__state_vector[0] >= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on)\
|
|
|
- and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a)
|
|
|
- if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
|
|
|
- return self.__state_vector[0] == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a
|
|
|
- if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
|
|
|
- return self.__state_vector[0] == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off
|
|
|
- if s == self.__State.main_region_child_lockable_r1orthogonal_state_r2time_control:
|
|
|
- return self.__state_vector[1] == self.__State.main_region_child_lockable_r1orthogonal_state_r2time_control
|
|
|
- if s == self.__State.main_region_child_lockable_r2detect_clicks:
|
|
|
- return self.__state_vector[2] == self.__State.main_region_child_lockable_r2detect_clicks
|
|
|
- return False
|
|
|
-
|
|
|
- def time_elapsed(self, event_id):
|
|
|
- """Add time events to in event queue
|
|
|
- """
|
|
|
- if event_id in range(2):
|
|
|
- self.in_event_queue.put(lambda: self.raise_time_event(event_id))
|
|
|
- self.run_cycle()
|
|
|
-
|
|
|
- def raise_time_event(self, event_id):
|
|
|
- """Raise timed events using the event_id.
|
|
|
- """
|
|
|
- self.__time_events[event_id] = True
|
|
|
-
|
|
|
- def __execute_queued_event(self, func):
|
|
|
- func()
|
|
|
-
|
|
|
- def __get_next_event(self):
|
|
|
- if not self.__internal_event_queue.empty():
|
|
|
- return self.__internal_event_queue.get()
|
|
|
- if not self.in_event_queue.empty():
|
|
|
- return self.in_event_queue.get()
|
|
|
- return None
|
|
|
-
|
|
|
-
|
|
|
- def raise_lock_unlock(self):
|
|
|
- """Raise method for event lock_unlock.
|
|
|
- """
|
|
|
- self.__internal_event_queue.put(self.__raise_lock_unlock_call)
|
|
|
-
|
|
|
- def __raise_lock_unlock_call(self):
|
|
|
- """Raise callback for event lock_unlock.
|
|
|
- """
|
|
|
- self.lock_unlock = True
|
|
|
-
|
|
|
- def raise_start_pressed(self):
|
|
|
- """Raise method for event start_pressed.
|
|
|
- """
|
|
|
- self.in_event_queue.put(self.__raise_start_pressed_call)
|
|
|
- self.run_cycle()
|
|
|
-
|
|
|
- def __raise_start_pressed_call(self):
|
|
|
- """Raise callback for event start_pressed.
|
|
|
- """
|
|
|
- self.start_pressed = True
|
|
|
-
|
|
|
- def raise_stop_pressed(self):
|
|
|
- """Raise method for event stop_pressed.
|
|
|
- """
|
|
|
- self.in_event_queue.put(self.__raise_stop_pressed_call)
|
|
|
- self.run_cycle()
|
|
|
-
|
|
|
- def __raise_stop_pressed_call(self):
|
|
|
- """Raise callback for event stop_pressed.
|
|
|
- """
|
|
|
- self.stop_pressed = True
|
|
|
-
|
|
|
- def raise_increase_time_pressed(self):
|
|
|
- """Raise method for event increase_time_pressed.
|
|
|
- """
|
|
|
- self.in_event_queue.put(self.__raise_increase_time_pressed_call)
|
|
|
- self.run_cycle()
|
|
|
-
|
|
|
- def __raise_increase_time_pressed_call(self):
|
|
|
- """Raise callback for event increase_time_pressed.
|
|
|
- """
|
|
|
- self.increase_time_pressed = True
|
|
|
-
|
|
|
- def raise_door_opened(self):
|
|
|
- """Raise method for event door_opened.
|
|
|
- """
|
|
|
- self.in_event_queue.put(self.__raise_door_opened_call)
|
|
|
- self.run_cycle()
|
|
|
-
|
|
|
- def __raise_door_opened_call(self):
|
|
|
- """Raise callback for event door_opened.
|
|
|
- """
|
|
|
- self.door_opened = True
|
|
|
-
|
|
|
- def raise_door_closed(self):
|
|
|
- """Raise method for event door_closed.
|
|
|
- """
|
|
|
- self.in_event_queue.put(self.__raise_door_closed_call)
|
|
|
- self.run_cycle()
|
|
|
-
|
|
|
- def __raise_door_closed_call(self):
|
|
|
- """Raise callback for event door_closed.
|
|
|
- """
|
|
|
- self.door_closed = True
|
|
|
-
|
|
|
- def __effect_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_tr1(self):
|
|
|
- """.
|
|
|
- """
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
|
|
|
-
|
|
|
- def __entry_action_main_region_child_lockable_r1_locked(self):
|
|
|
- """Entry action for state 'Locked'..
|
|
|
- """
|
|
|
- self.set_displayed_time_observable.next(9999)
|
|
|
-
|
|
|
- def __entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on(self):
|
|
|
- """Entry action for state 'MagnetronOn'..
|
|
|
- """
|
|
|
- self.turn_magnetron_on_observable.next()
|
|
|
-
|
|
|
- def __entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a(self):
|
|
|
- """Entry action for state 'A'..
|
|
|
- """
|
|
|
- self.timer_service.set_timer(self, 0, (1 * 1000), False)
|
|
|
-
|
|
|
- def __entry_action_main_region_child_lockable_r2_detect_clicks(self):
|
|
|
- """Entry action for state 'DetectClicks'..
|
|
|
- """
|
|
|
- self.timer_service.set_timer(self, 1, 500, False)
|
|
|
-
|
|
|
- def __exit_action_main_region_child_lockable_r1_locked(self):
|
|
|
- """Exit action for state 'Locked'..
|
|
|
- """
|
|
|
- self.set_displayed_time_observable.next(self.__remaining_time)
|
|
|
-
|
|
|
- def __exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on(self):
|
|
|
- """Exit action for state 'MagnetronOn'..
|
|
|
- """
|
|
|
- self.turn_magnetron_off_observable.next()
|
|
|
-
|
|
|
- def __exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a(self):
|
|
|
- """Exit action for state 'A'..
|
|
|
- """
|
|
|
- self.timer_service.unset_timer(self, 0)
|
|
|
-
|
|
|
- def __exit_action_main_region_child_lockable_r2_detect_clicks(self):
|
|
|
- """Exit action for state 'DetectClicks'..
|
|
|
- """
|
|
|
- self.timer_service.unset_timer(self, 1)
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_default(self):
|
|
|
- """'default' enter sequence for state ChildLockable.
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_default()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r2_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_locked_default(self):
|
|
|
- """'default' enter sequence for state Locked.
|
|
|
- """
|
|
|
- self.__entry_action_main_region_child_lockable_r1_locked()
|
|
|
- self.__state_vector[0] = self.State.main_region_child_lockable_r1locked
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
- self.__state_conf_vector_changed = True
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_default(self):
|
|
|
- """'default' enter sequence for state OrthogonalState.
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_default()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open_default(self):
|
|
|
- """'default' enter sequence for state DoorOpen.
|
|
|
- """
|
|
|
- self.__state_vector[0] = self.State.main_region_child_lockable_r1orthogonal_state_r1door_open
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
- self.__state_conf_vector_changed = True
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_default(self):
|
|
|
- """'default' enter sequence for state DoorClosed.
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_default(self):
|
|
|
- """'default' enter sequence for state MagnetronOn.
|
|
|
- """
|
|
|
- self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_default()
|
|
|
- self.__history_vector[0] = self.__state_vector[0]
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_default(self):
|
|
|
- """'default' enter sequence for state A.
|
|
|
- """
|
|
|
- self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
|
|
|
- self.__state_vector[0] = self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
- self.__state_conf_vector_changed = True
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default(self):
|
|
|
- """'default' enter sequence for state MagnetronOff.
|
|
|
- """
|
|
|
- self.__state_vector[0] = self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
- self.__state_conf_vector_changed = True
|
|
|
- self.__history_vector[0] = self.__state_vector[0]
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control_default(self):
|
|
|
- """'default' enter sequence for state TimeControl.
|
|
|
- """
|
|
|
- self.__state_vector[1] = self.State.main_region_child_lockable_r1orthogonal_state_r2time_control
|
|
|
- self.__state_conf_vector_position = 1
|
|
|
- self.__state_conf_vector_changed = True
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r2_detect_clicks_default(self):
|
|
|
- """'default' enter sequence for state DetectClicks.
|
|
|
- """
|
|
|
- self.__entry_action_main_region_child_lockable_r2_detect_clicks()
|
|
|
- self.__state_vector[2] = self.State.main_region_child_lockable_r2detect_clicks
|
|
|
- self.__state_conf_vector_position = 2
|
|
|
- self.__state_conf_vector_changed = True
|
|
|
-
|
|
|
- def __enter_sequence_main_region_default(self):
|
|
|
- """'default' enter sequence for region main region.
|
|
|
- """
|
|
|
- self.__react_main_region__entry_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_default(self):
|
|
|
- """'default' enter sequence for region r1.
|
|
|
- """
|
|
|
- self.__react_main_region_child_lockable_r1__entry_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_default(self):
|
|
|
- """'default' enter sequence for region r1.
|
|
|
- """
|
|
|
- self.__react_main_region_child_lockable_r1_orthogonal_state_r1__entry_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_default(self):
|
|
|
- """'default' enter sequence for region r1.
|
|
|
- """
|
|
|
- self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__entry_default()
|
|
|
-
|
|
|
- def __shallow_enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1(self):
|
|
|
- """shallow enterSequence with history in child r1.
|
|
|
- """
|
|
|
- state = self.__history_vector[0]
|
|
|
- if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_default()
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_default(self):
|
|
|
- """'default' enter sequence for region r1.
|
|
|
- """
|
|
|
- self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1__entry_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_default(self):
|
|
|
- """'default' enter sequence for region r2.
|
|
|
- """
|
|
|
- self.__react_main_region_child_lockable_r1_orthogonal_state_r2__entry_default()
|
|
|
-
|
|
|
- def __enter_sequence_main_region_child_lockable_r2_default(self):
|
|
|
- """'default' enter sequence for region r2.
|
|
|
- """
|
|
|
- self.__react_main_region_child_lockable_r2__entry_default()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_locked(self):
|
|
|
- """Default exit sequence for state Locked.
|
|
|
- """
|
|
|
- self.__state_vector[0] = self.State.null_state
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
- self.__exit_action_main_region_child_lockable_r1_locked()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state(self):
|
|
|
- """Default exit sequence for state OrthogonalState.
|
|
|
- """
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1()
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open(self):
|
|
|
- """Default exit sequence for state DoorOpen.
|
|
|
- """
|
|
|
- self.__state_vector[0] = self.State.null_state
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed(self):
|
|
|
- """Default exit sequence for state DoorClosed.
|
|
|
- """
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on(self):
|
|
|
- """Default exit sequence for state MagnetronOn.
|
|
|
- """
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1()
|
|
|
- self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a(self):
|
|
|
- """Default exit sequence for state A.
|
|
|
- """
|
|
|
- self.__state_vector[0] = self.State.null_state
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
- self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off(self):
|
|
|
- """Default exit sequence for state MagnetronOff.
|
|
|
- """
|
|
|
- self.__state_vector[0] = self.State.null_state
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control(self):
|
|
|
- """Default exit sequence for state TimeControl.
|
|
|
- """
|
|
|
- self.__state_vector[1] = self.State.null_state
|
|
|
- self.__state_conf_vector_position = 1
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r2_detect_clicks(self):
|
|
|
- """Default exit sequence for state DetectClicks.
|
|
|
- """
|
|
|
- self.__state_vector[2] = self.State.null_state
|
|
|
- self.__state_conf_vector_position = 2
|
|
|
- self.__exit_action_main_region_child_lockable_r2_detect_clicks()
|
|
|
-
|
|
|
- def __exit_sequence_main_region(self):
|
|
|
- """Default exit sequence for region main region.
|
|
|
- """
|
|
|
- state = self.__state_vector[0]
|
|
|
- if state == self.State.main_region_child_lockable_r1locked:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_locked()
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_open:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open()
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
|
|
|
- self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
|
|
|
- state = self.__state_vector[1]
|
|
|
- if state == self.State.main_region_child_lockable_r1orthogonal_state_r2time_control:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control()
|
|
|
- state = self.__state_vector[2]
|
|
|
- if state == self.State.main_region_child_lockable_r2detect_clicks:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r2_detect_clicks()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1(self):
|
|
|
- """Default exit sequence for region r1.
|
|
|
- """
|
|
|
- state = self.__state_vector[0]
|
|
|
- if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_open:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open()
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
|
|
|
- self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1(self):
|
|
|
- """Default exit sequence for region r1.
|
|
|
- """
|
|
|
- state = self.__state_vector[0]
|
|
|
- if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
|
|
|
- self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1(self):
|
|
|
- """Default exit sequence for region r1.
|
|
|
- """
|
|
|
- state = self.__state_vector[0]
|
|
|
- if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
|
|
|
-
|
|
|
- def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2(self):
|
|
|
- """Default exit sequence for region r2.
|
|
|
- """
|
|
|
- state = self.__state_vector[1]
|
|
|
- if state == self.State.main_region_child_lockable_r1orthogonal_state_r2time_control:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__choice_0(self):
|
|
|
- """The reactions of state null..
|
|
|
- """
|
|
|
- if self.__remaining_time == 0:
|
|
|
- self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_done()
|
|
|
- self.__history_vector[0] = self.__state_vector[0]
|
|
|
- else:
|
|
|
- self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_default()
|
|
|
- self.__history_vector[0] = self.__state_vector[0]
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r2__choice_0(self):
|
|
|
- """The reactions of state null..
|
|
|
- """
|
|
|
- if self.__clicks == 3:
|
|
|
- self.raise_lock_unlock()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
|
|
|
- else:
|
|
|
- self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1__entry_default(self):
|
|
|
- """Default react sequence for initial entry .
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__entry_default(self):
|
|
|
- """Default react sequence for initial entry .
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_h(self):
|
|
|
- """Default react sequence for shallow history entry h.
|
|
|
- """
|
|
|
- #Enter the region with shallow history
|
|
|
- if self.__history_vector[0] is not self.State.null_state:
|
|
|
- self.__shallow_enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1()
|
|
|
- else:
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1_orthogonal_state_r1__entry_default(self):
|
|
|
- """Default react sequence for initial entry .
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1_orthogonal_state_r2__entry_default(self):
|
|
|
- """Default react sequence for initial entry .
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1__entry_default(self):
|
|
|
- """Default react sequence for initial entry .
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r2__entry_default(self):
|
|
|
- """Default react sequence for initial entry .
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
|
|
|
-
|
|
|
- def __react_main_region__entry_default(self):
|
|
|
- """Default react sequence for initial entry .
|
|
|
- """
|
|
|
- self.__enter_sequence_main_region_child_lockable_default()
|
|
|
-
|
|
|
- def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_done(self):
|
|
|
- """The reactions of exit done..
|
|
|
- """
|
|
|
- self.__effect_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_tr1()
|
|
|
-
|
|
|
- def __react(self, transitioned_before):
|
|
|
- """Implementation of __react function.
|
|
|
- """
|
|
|
- return transitioned_before
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_react function.
|
|
|
- """
|
|
|
- return self.__react(transitioned_before)
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_locked_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_locked_react function.
|
|
|
- """
|
|
|
- transitioned_after = self.__main_region_child_lockable_react(transitioned_before)
|
|
|
- if transitioned_after < 0:
|
|
|
- if self.lock_unlock:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_locked()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_default()
|
|
|
- transitioned_after = 0
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_orthogonal_state_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_orthogonal_state_react function.
|
|
|
- """
|
|
|
- transitioned_after = self.__main_region_child_lockable_react(transitioned_before)
|
|
|
- if transitioned_after < 0:
|
|
|
- if self.lock_unlock:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_locked_default()
|
|
|
- transitioned_after = 1
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_orthogonal_state_r1_door_open_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_open_react function.
|
|
|
- """
|
|
|
- transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_react(transitioned_before)
|
|
|
- if transitioned_after < 0:
|
|
|
- if self.door_closed:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open()
|
|
|
- self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_h()
|
|
|
- transitioned_after = 0
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react function.
|
|
|
- """
|
|
|
- transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_react(transitioned_before)
|
|
|
- if transitioned_after < 0:
|
|
|
- if self.door_opened:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open_default()
|
|
|
- transitioned_after = 0
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_react function.
|
|
|
- """
|
|
|
- transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react(transitioned_before)
|
|
|
- if transitioned_after < 0:
|
|
|
- if self.stop_pressed:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
|
|
|
- transitioned_after = 0
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_react function.
|
|
|
- """
|
|
|
- transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_react(transitioned_before)
|
|
|
- if transitioned_after < 0:
|
|
|
- if self.__time_events[0]:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
|
|
|
- self.__remaining_time = self.__remaining_time - 1
|
|
|
- self.set_displayed_time_observable.next(self.__remaining_time)
|
|
|
- self.__time_events[0] = False
|
|
|
- self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__choice_0()
|
|
|
- transitioned_after = 0
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_react function.
|
|
|
- """
|
|
|
- transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react(transitioned_before)
|
|
|
- if transitioned_after < 0:
|
|
|
- if self.start_pressed:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
|
|
|
- self.__remaining_time = 10 if self.__remaining_time == 0 else self.__remaining_time
|
|
|
- self.set_displayed_time_observable.next(self.__remaining_time)
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_default()
|
|
|
- transitioned_after = 0
|
|
|
- elif self.stop_pressed:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
|
|
|
- self.__remaining_time = 0
|
|
|
- self.set_displayed_time_observable.next(0)
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
|
|
|
- transitioned_after = 0
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r1_orthogonal_state_r2_time_control_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r1_orthogonal_state_r2_time_control_react function.
|
|
|
- """
|
|
|
- transitioned_after = transitioned_before
|
|
|
- if transitioned_after < 1:
|
|
|
- if self.increase_time_pressed:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control()
|
|
|
- self.__remaining_time = self.__remaining_time + 10
|
|
|
- self.set_displayed_time_observable.next(self.__remaining_time)
|
|
|
- self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control_default()
|
|
|
- transitioned_after = 1
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __main_region_child_lockable_r2_detect_clicks_react(self, transitioned_before):
|
|
|
- """Implementation of __main_region_child_lockable_r2_detect_clicks_react function.
|
|
|
- """
|
|
|
- transitioned_after = transitioned_before
|
|
|
- if transitioned_after < 2:
|
|
|
- if self.stop_pressed:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r2_detect_clicks()
|
|
|
- self.__clicks = self.__clicks + 1
|
|
|
- self.__react_main_region_child_lockable_r2__choice_0()
|
|
|
- transitioned_after = 2
|
|
|
- elif self.__time_events[1]:
|
|
|
- self.__exit_sequence_main_region_child_lockable_r2_detect_clicks()
|
|
|
- self.__clicks = 0
|
|
|
- self.__time_events[1] = False
|
|
|
- self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
|
|
|
- transitioned_after = 2
|
|
|
- return transitioned_after
|
|
|
-
|
|
|
-
|
|
|
- def __clear_in_events(self):
|
|
|
- """Implementation of __clear_in_events function.
|
|
|
- """
|
|
|
- self.start_pressed = False
|
|
|
- self.stop_pressed = False
|
|
|
- self.increase_time_pressed = False
|
|
|
- self.door_opened = False
|
|
|
- self.door_closed = False
|
|
|
- self.__time_events[0] = False
|
|
|
- self.__time_events[1] = False
|
|
|
-
|
|
|
-
|
|
|
- def __clear_internal_events(self):
|
|
|
- """Implementation of __clear_internal_events function.
|
|
|
- """
|
|
|
- self.lock_unlock = False
|
|
|
-
|
|
|
-
|
|
|
- def __micro_step(self):
|
|
|
- """Implementation of __micro_step function.
|
|
|
- """
|
|
|
- transitioned = -1
|
|
|
- self.__state_conf_vector_position = 0
|
|
|
- state = self.__state_vector[0]
|
|
|
- if state == self.State.main_region_child_lockable_r1locked:
|
|
|
- transitioned = self.__main_region_child_lockable_r1_locked_react(transitioned)
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_open:
|
|
|
- transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_open_react(transitioned)
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
|
|
|
- transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_react(transitioned)
|
|
|
- elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
|
|
|
- transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_react(transitioned)
|
|
|
- if self.__state_conf_vector_position < 1:
|
|
|
- state = self.__state_vector[1]
|
|
|
- if state == self.State.main_region_child_lockable_r1orthogonal_state_r2time_control:
|
|
|
- transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r2_time_control_react(transitioned)
|
|
|
- if self.__state_conf_vector_position < 2:
|
|
|
- state = self.__state_vector[2]
|
|
|
- if state == self.State.main_region_child_lockable_r2detect_clicks:
|
|
|
- self.__main_region_child_lockable_r2_detect_clicks_react(transitioned)
|
|
|
-
|
|
|
-
|
|
|
- def run_cycle(self):
|
|
|
- """Implementation of run_cycle function.
|
|
|
- """
|
|
|
- if self.timer_service is None:
|
|
|
- raise ValueError('Timer service must be set.')
|
|
|
-
|
|
|
- if self.__is_executing:
|
|
|
- return
|
|
|
- self.__is_executing = True
|
|
|
- next_event = self.__get_next_event()
|
|
|
- if next_event is not None:
|
|
|
- self.__execute_queued_event(next_event)
|
|
|
- condition_0 = True
|
|
|
- while condition_0:
|
|
|
- self.__micro_step()
|
|
|
- self.__clear_in_events()
|
|
|
- self.__clear_internal_events()
|
|
|
- condition_0 = False
|
|
|
- next_event = self.__get_next_event()
|
|
|
- if next_event is not None:
|
|
|
- self.__execute_queued_event(next_event)
|
|
|
- condition_0 = True
|
|
|
- self.__is_executing = False
|
|
|
-
|
|
|
-
|
|
|
- def enter(self):
|
|
|
- """Implementation of enter function.
|
|
|
- """
|
|
|
- if self.timer_service is None:
|
|
|
- raise ValueError('Timer service must be set.')
|
|
|
-
|
|
|
- if self.__is_executing:
|
|
|
- return
|
|
|
- self.__is_executing = True
|
|
|
- self.__enter_sequence_main_region_default()
|
|
|
- self.__is_executing = False
|
|
|
-
|
|
|
-
|
|
|
- def exit(self):
|
|
|
- """Implementation of exit function.
|
|
|
- """
|
|
|
- if self.__is_executing:
|
|
|
- return
|
|
|
- self.__is_executing = True
|
|
|
- self.__exit_sequence_main_region()
|
|
|
- self.__is_executing = False
|
|
|
-
|
|
|
-
|
|
|
- def trigger_without_event(self):
|
|
|
- """Implementation of triggerWithoutEvent function.
|
|
|
- """
|
|
|
- self.run_cycle()
|
|
|
-
|