blob: dcfb347c6328ee0f2e26d0e4e9a7e2c78d4e6e7d [file] [log] [blame]
# 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