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