Home | History | Annotate | Download | only in state_machines
      1 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 # Setup wardmodem package root and other autotest paths.
      6 import common
      7 
      8 import state_machine
      9 
     10 class CallMachine(state_machine.StateMachine):
     11     """
     12     This state machine simulates an active call over a registered network.
     13 
     14     """
     15     # ##########################################################################
     16     # Functions overriden from base class.
     17     def get_well_known_name(self):
     18         """ Returns the well known name for this machine. """
     19         return 'call_machine'
     20 
     21 
     22     # ##########################################################################
     23     # State machine API functions.
     24     def connect_call(self):
     25         """ Connect a call on a reigstered network. """
     26         power_level = self._state['power_level']
     27         if power_level == 'FULL':
     28             self._update_state({'call_status': 'CONNECTED'}, 3000)
     29             # Update level indicators
     30             self._update_state({'level_call': 1}, 3000)
     31         else:
     32             self._logger.info(self._tag_with_name(
     33                 "Attempted to connect a call at power level: %s. Ignored." %
     34                 power_level))
     35         self._respond_ok()
     36 
     37 
     38     def disconnect_call(self):
     39         """ Disconnect an active call on a registered network. """
     40         self._update_state({'call_status': 'DISCONNECTED'}, 3000)
     41         # Update level indicators
     42         self._update_state({'level_call': 0}, 3000)
     43         self._respond_ok()
     44