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 5import logging 6 7import connect_machine 8import pm_errors 9 10from autotest_lib.client.cros.cellular import mm1_constants 11 12class ConnectCdmaMachine(connect_machine.ConnectMachine): 13 """ 14 ConnectCdmaMachine handles CDMA specific logic that is involved in 15 connecting to a network. 16 17 """ 18 def _HandleRegisteredState(self): 19 logging.info('ConnectCdmaMachine: Modem is REGISTERED.') 20 assert not self._modem.IsPendingDisconnect() 21 assert not self._modem.IsPendingEnable() 22 assert not self._modem.IsPendingDisable() 23 assert not self._modem.IsPendingRegister() 24 25 # Check here that the network is activated. The UI should prevent 26 # connecting to an unactivated service, but for tests, we want to be 27 # sure that connect fails. 28 network = self._modem.GetHomeNetwork() 29 if not network.activated: 30 logging.info('ConnectCdmaMachine: Service is not activated. Cannot' 31 ' connect.') 32 self.raise_cb(pm_errors.MMCoreError(pm_errors.MMCoreError.FAILED, 33 'Service not activated.')) 34 return False 35 36 logging.info('ConnectCdmaMachine: Setting state to CONNECTING.') 37 reason = mm1_constants.MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED 38 self._modem.ChangeState(mm1_constants.MM_MODEM_STATE_CONNECTING, 39 reason) 40 return True 41 42 43 def _GetModemStateFunctionMap(self): 44 fmap = super(ConnectCdmaMachine, self)._GetModemStateFunctionMap() 45 fmap[mm1_constants.MM_MODEM_STATE_REGISTERED] = \ 46 ConnectCdmaMachine._HandleRegisteredState 47 return fmap 48