register_cdma_machine.py revision 5555f62fedfdc36cc8c4911eb24299008d961263
10b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
20b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray# Use of this source code is governed by a BSD-style license that can be
30b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray# found in the LICENSE file.
40b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray
50b03eab867e84dc28a61595afe02283f4ac6aab0Arman Ugurayimport logging
60b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray
70b03eab867e84dc28a61595afe02283f4ac6aab0Arman Ugurayimport mm1
80b03eab867e84dc28a61595afe02283f4ac6aab0Arman Ugurayimport register_machine
90b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray
100b03eab867e84dc28a61595afe02283f4ac6aab0Arman Ugurayclass RegisterMachineCdma(register_machine.RegisterMachine):
115555f62fedfdc36cc8c4911eb24299008d961263Arman Uguray    """
125555f62fedfdc36cc8c4911eb24299008d961263Arman Uguray    RegisterMachineCdma handles the CDMA specific state transitions involved in
135555f62fedfdc36cc8c4911eb24299008d961263Arman Uguray    bringing the modem to the REGISTERED state.
145555f62fedfdc36cc8c4911eb24299008d961263Arman Uguray
155555f62fedfdc36cc8c4911eb24299008d961263Arman Uguray    """
160b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray    def Cancel(self):
170b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        logging.info('RegisterMachineCdma: Canceling register.')
180b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        super(RegisterMachine, self).Cancel()
190b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        state = self._modem.Get(mm1.I_MODEM, 'State')
200b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        reason = mm1.MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED
210b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        if state == mm1.MM_MODEM_STATE_SEARCHING:
220b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            logging.info('RegisterMachineCdma: Setting state to ENABLED.')
230b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            self._modem.ChangeState(mm1.MM_MODEM_STATE_ENABLED, reason)
240b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            self._modem.SetRegistrationState(
250b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray                mm1.MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN)
260b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        self._modem.register_step = None
270b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray
280b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray    def _GetModemStateFunctionMap(self):
290b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        return {
300b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            mm1.MM_MODEM_STATE_ENABLED: RegisterMachineCdma._HandleEnabledState,
310b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            mm1.MM_MODEM_STATE_SEARCHING:
320b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray                RegisterMachineCdma._HandleSearchingState
330b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        }
340b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray
350b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray    def _HandleEnabledState(self):
360b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        logging.info('RegisterMachineCdma: Modem is ENABLED.')
370b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        logging.info('RegisterMachineCdma: Setting state to SEARCHING.')
380b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        self._modem.ChangeState(
390b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            mm1.MM_MODEM_STATE_SEARCHING,
400b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            mm1.MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED)
410b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        return True
420b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray
430b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray    def _HandleSearchingState(self):
440b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        logging.info('RegisterMachineCdma: Modem is SEARCHING.')
450b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        network = self._modem.GetHomeNetwork()
460b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        if not network:
470b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            logging.info('RegisterMachineCdma: No network available.')
480b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            logging.info('RegisterMachineCdma: Setting state to ENABLED.')
490b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            self._modem.ChangeState(mm1.MM_MODEM_STATE_ENABLED,
500b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray                mm1.MM_MODEM_STATE_CHANGE_REASON_UNKNOWN)
510b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        else:
520b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            logging.info(
530b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray                'RegisterMachineCdma: Registering to network: ' + str(network))
540b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            logging.info('RegisterMachineCdma: Setting state to REGISTERED.')
550b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray            self._modem.ChangeState(
560b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray                mm1.MM_MODEM_STATE_REGISTERED,
570b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray                mm1.MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED)
580b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        self._modem.SetRegistered(network)
590b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        self._modem.register_step = None
600b03eab867e84dc28a61595afe02283f4ac6aab0Arman Uguray        return False
61