普通文本  |  48行  |  1.82 KB

# 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