blob: 4b844d0e34fc065769831f349b043cc794d1d262 [file] [log] [blame]
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import logging
import connect_machine
import pm_errors
from autotest_lib.client.cros.cellular import mm1_constants
class ConnectCdmaMachine(connect_machine.ConnectMachine):
"""
ConnectCdmaMachine handles CDMA specific logic that is involved in
connecting to a network.
"""
def _HandleRegisteredState(self):
logging.info('ConnectCdmaMachine: Modem is REGISTERED.')
assert not self._modem.IsPendingDisconnect()
assert not self._modem.IsPendingEnable()
assert not self._modem.IsPendingDisable()
assert not self._modem.IsPendingRegister()
# Check here that the network is activated. The UI should prevent
# connecting to an unactivated service, but for tests, we want to be
# sure that connect fails.
network = self._modem.GetHomeNetwork()
if not network.activated:
logging.info('ConnectCdmaMachine: Service is not activated. Cannot'
' connect.')
self.raise_cb(pm_errors.MMCoreError(pm_errors.MMCoreError.FAILED,
'Service not activated.'))
return False
logging.info('ConnectCdmaMachine: Setting state to CONNECTING.')
reason = mm1_constants.MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED
self._modem.ChangeState(mm1_constants.MM_MODEM_STATE_CONNECTING,
reason)
return True
def _GetModemStateFunctionMap(self):
fmap = super(ConnectCdmaMachine, self)._GetModemStateFunctionMap()
fmap[mm1_constants.MM_MODEM_STATE_REGISTERED] = \
ConnectCdmaMachine._HandleRegisteredState
return fmap