| # Copyright (c) 2014 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. |
| |
| """ |
| This module provides exception classes for pseudomodem. |
| |
| """ |
| |
| import dbus.exceptions |
| |
| import common |
| from autotest_lib.client.cros.cellular import mm1_constants |
| |
| class MMError(dbus.exceptions.DBusException): |
| """ |
| Generic DBusException subclass that serves as the base class for |
| ModemManager errors. |
| |
| """ |
| |
| def __init__(self, errno, *args, **kwargs): |
| super(MMError, self).__init__(self, args, kwargs) |
| self.include_traceback = False |
| self._error_name_base = None |
| self._error_name_map = None |
| self._Setup() |
| self._dbus_error_name = (self._error_name_base + |
| self._error_name_map[errno]) |
| |
| def _Setup(self): |
| raise NotImplementedError() |
| |
| |
| class MMConnectionError(MMError): |
| """ DBusException wrapper for MMConnectionError values. """ |
| |
| UNKNOWN = 0 |
| NO_CARRIER = 1 |
| NO_DIALTONE = 2 |
| BUSY = 3 |
| NO_ANSWER = 4 |
| |
| def _Setup(self): |
| self._error_name_base = mm1_constants.MM1_ERROR_PREFIX + '.Connection' |
| self._error_name_map = { |
| self.UNKNOWN : '.Unknown', |
| self.NO_CARRIER : '.NoCarrier', |
| self.NO_DIALTONE : '.NoDialtone', |
| self.BUSY : '.Busy', |
| self.NO_ANSWER : '.NoAnswer' |
| } |
| |
| |
| class MMCoreError(MMError): |
| """ |
| DBusException wrapper for MMCoreError values. |
| |
| """ |
| |
| FAILED = 0 |
| CANCELLED = 1 |
| ABORTED = 2 |
| UNSUPPORTED = 3 |
| NO_PLUGINS = 4 |
| UNAUTHORIZED = 5 |
| INVALID_ARGS = 6 |
| IN_PROGRESS = 7 |
| WRONG_STATE = 8 |
| CONNECTED = 9 |
| TOO_MANY = 10 |
| NOT_FOUND = 11 |
| RETRY = 12 |
| EXISTS = 13 |
| |
| def _Setup(self): |
| self._error_name_base = mm1_constants.MM1_ERROR_PREFIX + '.Core' |
| self._error_name_map = { |
| self.FAILED : '.Failed', |
| self.CANCELLED : '.Cancelled', |
| self.ABORTED : '.Aborted', |
| self.UNSUPPORTED : '.Unsupported', |
| self.NO_PLUGINS : '.NoPlugins', |
| self.UNAUTHORIZED : '.Unauthorized', |
| self.INVALID_ARGS : '.InvalidArgs', |
| self.IN_PROGRESS : '.InProgress', |
| self.WRONG_STATE : '.WrongState', |
| self.CONNECTED : '.Connected', |
| self.TOO_MANY : '.TooMany', |
| self.NOT_FOUND : '.NotFound', |
| self.RETRY : '.Retry', |
| self.EXISTS : '.Exists' |
| } |
| |
| |
| class MMMessageError(MMError): |
| """ DBusException wrapper for MMMessageError values. """ |
| |
| ME_FAILURE = 300 |
| SMS_SERVICE_RESERVED = 301 |
| NOT_ALLOWED = 302 |
| NOT_SUPPORTED = 303 |
| INVALID_PDU_PARAMETER = 304 |
| INVALID_TEXT_PARAMETER = 305 |
| SIM_NOT_INSERTED = 310 |
| SIM_PIN = 311 |
| PH_SIM_PIN = 312 |
| SIM_FAILURE = 313 |
| SIM_BUSY = 314 |
| SIM_WRONG = 315 |
| SIM_PUK = 316 |
| SIM_PIN2 = 317 |
| SIM_PUK2 = 318 |
| MEMORY_FAILURE = 320 |
| INVALID_INDEX = 321 |
| MEMORY_FULL = 322 |
| SMSC_ADDRESS_UNKNOWN = 330 |
| NO_NETWORK = 331 |
| NETWORK_TIMEOUT = 332 |
| NO_CNMA_ACK_EXPECTED = 340 |
| UNKNOWN = 500 |
| |
| def _Setup(self): |
| self._error_name_base = mm1_constants.MM1_ERROR_PREFIX + '.Message' |
| self._error_name_map = { |
| self.ME_FAILURE : '.MeFailure ', |
| self.SMS_SERVICE_RESERVED : '.SmsServiceReserved', |
| self.NOT_ALLOWED : '.NotAllowed', |
| self.NOT_SUPPORTED : '.NotSupported', |
| self.INVALID_PDU_PARAMETER : |
| '.InvalidPduParameter', |
| self.INVALID_TEXT_PARAMETER : |
| '.InvalidTextParameter', |
| self.SIM_NOT_INSERTED : '.SimNotInserted', |
| self.SIM_PIN : '.SimPin', |
| self.PH_SIM_PIN : '.PhSimPin', |
| self.SIM_FAILURE : '.SimFailure', |
| self.SIM_BUSY : '.SimBusy', |
| self.SIM_WRONG : '.SimWrong', |
| self.SIM_PUK : '.SimPuk', |
| self.SIM_PIN2 : '.SimPin2', |
| self.SIM_PUK2 : '.SimPuk2', |
| self.MEMORY_FAILURE : '.MemoryFailure', |
| self.INVALID_INDEX : '.InvalidIndex', |
| self.MEMORY_FULL : '.MemoryFull', |
| self.SMSC_ADDRESS_UNKNOWN : '.SmscAddressUnknown', |
| self.NO_NETWORK : '.NoNetwork', |
| self.NETWORK_TIMEOUT : '.NetworkTimeout', |
| self.NO_CNMA_ACK_EXPECTED : '.NoCnmaAckExpected', |
| self.UNKNOWN : '.Unknown' |
| } |
| |
| |
| class MMMobileEquipmentError(MMError): |
| """ DBusException wrapper for MMMobileEquipmentError values. """ |
| |
| PHONE_FAILURE = 0 |
| NO_CONNECTION = 1 |
| LINK_RESERVED = 2 |
| NOT_ALLOWED = 3 |
| NOT_SUPPORTED = 4 |
| PH_SIM_PIN = 5 |
| PH_FSIM_PIN = 6 |
| PH_FSIM_PUK = 7 |
| SIM_NOT_INSERTED = 10 |
| SIM_PIN = 11 |
| SIM_PUK = 12 |
| SIM_FAILURE = 13 |
| SIM_BUSY = 14 |
| SIM_WRONG = 15 |
| INCORRECT_PASSWORD = 16 |
| SIM_PIN2 = 17 |
| SIM_PUK2 = 18 |
| MEMORY_FULL = 20 |
| INVALID_INDEX = 21 |
| NOT_FOUND = 22 |
| MEMORY_FAILURE = 23 |
| TEXT_TOO_LONG = 24 |
| INVALID_CHARS = 25 |
| DIAL_STRING_TOO_LONG = 26 |
| DIAL_STRING_INVALID = 27 |
| NO_NETWORK = 30 |
| NETWORK_TIMEOUT = 31 |
| NETWORK_NOT_ALLOWED = 32 |
| NETWORK_PIN = 40 |
| NETWORK_PUK = 41 |
| NETWORK_SUBSET_PIN = 42 |
| NETWORK_SUBSET_PUK = 43 |
| SERVICE_PIN = 44 |
| SERVICE_PUK = 45 |
| CORP_PIN = 46 |
| CORP_PUK = 47 |
| UNKNOWN = 100 |
| # GPRS related errors |
| GPRS_ILLEGAL_MS = 103 |
| GPRS_ILLEGAL_ME = 106 |
| GPRS_SERVICE_NOT_ALLOWED = 107 |
| GPRS_PLMN_NOT_ALLOWED = 111 |
| GPRS_LOCATION_NOT_ALLOWED = 112 |
| GPRS_ROAMING_NOT_ALLOWED = 113 |
| GPRS_SERVICE_OPTION_NOT_SUPPORTED = 132 |
| GPRS_SERVICE_OPTION_NOT_SUBSCRIBED = 133 |
| GPRS_SERVICE_OPTION_OUT_OF_ORDER = 134 |
| GPRS_UNKNOWN = 148 |
| GPRS_PDP_AUTH_FAILURE = 149 |
| GPRS_INVALID_MOBILE_CLASS = 150 |
| |
| def _Setup(self): |
| self._error_name_base = \ |
| mm1_constants.MM1_ERROR_PREFIX + '.MobileEquipment' |
| self._error_name_map = { |
| self.PHONE_FAILURE : '.PhoneFailure', |
| self.NO_CONNECTION : '.NoConnection', |
| self.LINK_RESERVED : '.LinkReserved', |
| self.NOT_ALLOWED : '.NotAllowed', |
| self.NOT_SUPPORTED : '.NotSupported', |
| self.PH_SIM_PIN : '.PhSimPin', |
| self.PH_FSIM_PIN : '.PhFsimPin', |
| self.PH_FSIM_PUK : '.PhFsimPuk', |
| self.SIM_NOT_INSERTED : '.SimNotInserted', |
| self.SIM_PIN : '.SimPin', |
| self.SIM_PUK : '.SimPuk', |
| self.SIM_FAILURE : '.SimFailure', |
| self.SIM_BUSY : '.SimBusy', |
| self.SIM_WRONG : '.SimWrong', |
| self.INCORRECT_PASSWORD : |
| '.IncorrectPassword', |
| self.SIM_PIN2 : '.SimPin2', |
| self.SIM_PUK2 : '.SimPuk2', |
| self.MEMORY_FULL : '.MemoryFull', |
| self.INVALID_INDEX : '.InvalidIndex', |
| self.NOT_FOUND : '.NotFound', |
| self.MEMORY_FAILURE : '.MemoryFailure', |
| self.TEXT_TOO_LONG : '.TextTooLong', |
| self.INVALID_CHARS : '.InvalidChars', |
| self.DIAL_STRING_TOO_LONG : |
| '.DialStringTooLong', |
| self.DIAL_STRING_INVALID : |
| '.DialStringInvalid', |
| self.NO_NETWORK : '.NoNetwork', |
| self.NETWORK_TIMEOUT : '.NetworkTimeout', |
| self.NETWORK_NOT_ALLOWED : |
| '.NetworkNotAllowed', |
| self.NETWORK_PIN : '.NetworkPin', |
| self.NETWORK_PUK : '.NetworkPuk', |
| self.NETWORK_SUBSET_PIN : |
| '.NetworkSubsetPin', |
| self.NETWORK_SUBSET_PUK : |
| '.NetworkSubsetPuk', |
| self.SERVICE_PIN : '.ServicePin', |
| self.SERVICE_PUK : '.ServicePuk', |
| self.CORP_PIN : '.CorpPin', |
| self.CORP_PUK : '.CorpPuk', |
| self.UNKNOWN : '.Unknown', |
| self.GPRS_ILLEGAL_MS : '.Gprs.IllegalMs', |
| self.GPRS_ILLEGAL_ME : '.Gprs.IllegalMe', |
| self.GPRS_SERVICE_NOT_ALLOWED : |
| '.Gprs.ServiceNotAllowed', |
| self.GPRS_PLMN_NOT_ALLOWED : |
| '.Gprs.PlmnNotAllowed', |
| self.GPRS_LOCATION_NOT_ALLOWED : |
| '.Gprs.LocationNotAllowed', |
| self.GPRS_ROAMING_NOT_ALLOWED : |
| '.Gprs.RoamingNotAllowed', |
| self.GPRS_SERVICE_OPTION_NOT_SUPPORTED : |
| '.Gprs.ServiceOptionNotSupported', |
| self.GPRS_SERVICE_OPTION_NOT_SUBSCRIBED : |
| '.Gprs.ServiceOptionNotSubscribed', |
| self.GPRS_SERVICE_OPTION_OUT_OF_ORDER : |
| '.Gprs.ServiceOptionOutOfOrder', |
| self.GPRS_UNKNOWN : |
| '.Gprs.Unknown', |
| self.GPRS_PDP_AUTH_FAILURE : |
| '.Gprs.PdpAuthFailure', |
| self.GPRS_INVALID_MOBILE_CLASS : |
| '.Gprs.InvalidMobileClass' |
| } |
| |
| |
| class MMSerialError(MMError): |
| """ DBusException wrapper for MMSerialError values. """ |
| |
| UNKNOWN = 0 |
| OPEN_FAILED = 1 |
| SEND_FAILED = 2 |
| RESPONSE_TIMEOUT = 3 |
| OPEN_FAILED_NO_DEVICE = 4 |
| FLASH_FAILED = 5 |
| NOT_OPEN = 6 |
| |
| def _Setup(self): |
| self._error_name_base = mm1_constants.MM1_ERROR_PREFIX + '.Serial' |
| self._error_name_map = { |
| self.UNKNOWN : '.Unknown', |
| self.OPEN_FAILED : '.OpenFailed', |
| self.SEND_FAILED : '.SendFailed', |
| self.RESPONSE_TIMEOUT : '.ResponseTimeout', |
| self.OPEN_FAILED_NO_DEVICE : '.OpenFailedNoDevice', |
| self.FLASH_FAILED : '.FlashFailed', |
| self.NOT_OPEN : '.NotOpen' |
| } |
| |
| |
| class MMCdmaActivationError(MMError): |
| """ DBusException wrapper for MMCdmaActivationError values. """ |
| |
| NONE = 0 |
| UNKNOWN = 1 |
| ROAMING = 2 |
| WRONG_RADIO_INTERFACE = 3 |
| COULD_NOT_CONNECT = 4 |
| SECURITY_AUTHENTICATION_FAILED = 5 |
| PROVISIONING_FAILED = 6 |
| NO_SIGNAL = 7 |
| TIMED_OUT = 8 |
| START_FAILED = 9 |
| |
| def _Setup(self): |
| self._error_name_base = \ |
| mm1_constants.MM1_ERROR_PREFIX + '.CdmaActivation' |
| self._error_name_map = { |
| self.NONE : '.None', |
| self.UNKNOWN : |
| '.Unknown', |
| self.ROAMING : |
| '.Roaming', |
| self.WRONG_RADIO_INTERFACE : |
| '.WrongRadioInterface', |
| self.COULD_NOT_CONNECT : |
| '.CouldNotConnect', |
| self.SECURITY_AUTHENTICATION_FAILED : |
| '.SecurityAuthenticationFailed', |
| self.PROVISIONING_FAILED : |
| '.ProvisioningFailed', |
| self.NO_SIGNAL : |
| '.NoSignal', |
| self.TIMED_OUT : |
| '.TimedOut', |
| self.START_FAILED : |
| '.StartFailed' |
| } |
| |
| |
| class TestError(dbus.exceptions.DBusException): |
| """ |
| Raised by the test interface of Pseudomodem. |
| |
| This is not a core ModemManager error, and is raised only on the test |
| interface mostly to notify the user of invalid requests or misconfiguration |
| of pseudomodem. |
| |
| """ |
| pass |