# 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 bindings for ModemManager1 DBus constants, such as
interface names, enumerations, and errors.

"""

# The ModemManager1 Object
MM1 = '/org/freedesktop/ModemManager1'

# The Root Object Path
ROOT_PATH = '/'

# Errors
# TODO: Rename these to DBUS_ERROR_XXXX and put them in a common DBUS related
# package (crbug.com/343753).
DBUS_SERVICE_UNKNOWN = 'org.freedesktop.DBus.Error.ServiceUnknown'
DBUS_UNKNOWN_INTERFACE = 'org.freedesktop.DBus.Error.UnknownInterface'
DBUS_UNKNOWN_METHOD = 'org.freedesktop.DBus.Error.UnknownMethod'
DBUS_UNKNOWN_OBJECT = 'org.freedesktop.DBus.Error.UnknownObject'

# Interfaces
# Standard Interfaces
I_PROPERTIES = 'org.freedesktop.DBus.Properties'
I_INTROSPECTABLE = 'org.freedesktop.DBus.Introspectable'
I_OBJECT_MANAGER = 'org.freedesktop.DBus.ObjectManager'

# ModemManager1
I_MODEM_MANAGER = 'org.freedesktop.ModemManager1'

# ModemManager1 DBus error prefix
MM1_ERROR_PREFIX = I_MODEM_MANAGER + '.Error'

# Modems
I_MODEM = I_MODEM_MANAGER + '.Modem'
I_MODEM_SIMPLE = I_MODEM + '.Simple'
I_MODEM_3GPP = I_MODEM + '.Modem3gpp'
I_MODEM_3GPP_USSD = I_MODEM_3GPP + '.Ussd'
I_MODEM_CDMA = I_MODEM + '.ModemCdma'
I_MODEM_MESSAGING = I_MODEM + '.Messaging'
I_MODEM_LOCATION = I_MODEM + '.Location'
I_MODEM_TIME = I_MODEM + '.Time'
I_MODEM_FIRMWARE = I_MODEM + '.Firmware'
I_MODEM_CONTACTS = I_MODEM + '.Contacts'

# Bearers
I_BEARER = I_MODEM_MANAGER + '.Bearer'

# SIMs
I_SIM = I_MODEM_MANAGER + '.Sim'

# SMSs
SMS_PATH = MM1 + '/SMS'
I_SMS = I_MODEM_MANAGER + '.Sms'

# Frequently accessed propeties
MM_MODEM_PROPERTY_NAME_MODEL = 'Model'
MM_MODEM_PROPERTY_NAME_PLUGIN = 'Plugin'
MM_MODEM_PROPERTY_NAME_STATE = 'State'


# Common Types
# Flags and Enumerations

# enum MMBearerIpFamily
MM_BEARER_IP_FAMILY_NONE = 0
MM_BEARER_IP_FAMILY_IPV4 = 1 << 0
MM_BEARER_IP_FAMILY_IPV6 = 1 << 1
MM_BEARER_IP_FAMILY_IPV4V6 = 1 << 2
MM_BEARER_IP_FAMILY_ANY = 0xFFFFFFFF

MM_BEARER_IP_FAMILY_UNKNOWN = 0
MM_BEARER_IP_FAMILY_IPV4 = 4
MM_BEARER_IP_FAMILY_IPV6 = 6
MM_BEARER_IP_FAMILY_IPV4V6 = 10

# enum MMBearerIpMethod
MM_BEARER_IP_METHOD_UNKNOWN = 0
MM_BEARER_IP_METHOD_PPP = 1
MM_BEARER_IP_METHOD_STATIC = 2
MM_BEARER_IP_METHOD_DHCP = 3

# enum MMModem3gppFacility
MM_MODEM_3GPP_FACILITY_NONE = 0
MM_MODEM_3GPP_FACILITY_SIM = 1 << 0
MM_MODEM_3GPP_FACILITY_FIXED_DIALING = 1 << 1
MM_MODEM_3GPP_FACILITY_PH_SIM = 1 << 2
MM_MODEM_3GPP_FACILITY_PH_FSIM = 1 << 3
MM_MODEM_3GPP_FACILITY_NET_PERS = 1 << 4
MM_MODEM_3GPP_FACILITY_NET_SUB_PERS = 1 << 5
MM_MODEM_3GPP_FACILITY_PROVIDER_PERS = 1 << 6
MM_MODEM_3GPP_FACILITY_CORP_PERS = 1 << 7

# enum MMModem3gppNetworkAvailability
MM_MODEM_3GPP_NETWORK_AVAILABILITY_UNKNOWN = 0
MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE = 1
MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT = 2
MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN = 3

# enum MMModem3gppRegistrationState
MM_MODEM_3GPP_REGISTRATION_STATE_IDLE = 0
MM_MODEM_3GPP_REGISTRATION_STATE_HOME = 1
MM_MODEM_3GPP_REGISTRATION_STATE_SEARCHING = 2
MM_MODEM_3GPP_REGISTRATION_STATE_DENIED = 3
MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN = 4
MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING = 5

def RegistrationStateToString(state):
    """
    Returns a string for the given state.

    @param state: MMModem3gppRegistrationState value.

    @return A string that describes the given state.

    """
    REGISTRATION_STATE_STRINGS = [
        'IDLE',
        'HOME',
        'SEARCHING',
        'DENIED',
        'UNKNOWN',
        'ROAMING'
    ]
    return REGISTRATION_STATE_STRINGS[state]

# enum MMModem3gppSubscriptionState
MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN = 0
MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNPROVISIONED = 1
MM_MODEM_3GPP_SUBSCRIPTION_STATE_PROVISIONED = 2
MM_MODEM_3GPP_SUBSCRIPTION_STATE_OUT_OF_DATA = 3

def SubscriptionStateToString(state):
    """
    Returns a string representation of the SubscriptionState.

    @param state: An MMModem3gppSubscriptionState value.

    @return A string that describes the given state.

    """
    SUBSCRIPTION_STATE_STRINGS = [
        'UNKNOWN',
        'UNPROVISIONED',
        'PROVISIONED',
        'OUT_OF_DATA',
    ]
    return SUBSCRIPTION_STATE_STRINGS[state]

# enum MMModem3gppUssdSessionState
MM_MODEM_3GPP_USSD_SESSION_STATE_UNKNOWN = 0
MM_MODEM_3GPP_USSD_SESSION_STATE_IDLE = 1
MM_MODEM_3GPP_USSD_SESSION_STATE_ACTIVE = 2
MM_MODEM_3GPP_USSD_SESSION_STATE_USER_RESPONSE = 3

# enum MMModemAccessTechnology
MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN = 0
MM_MODEM_ACCESS_TECHNOLOGY_POTS = 1 << 0
MM_MODEM_ACCESS_TECHNOLOGY_GSM = 1 << 1
MM_MODEM_ACCESS_TECHNOLOGY_GSM_COMPACT = 1 << 2
MM_MODEM_ACCESS_TECHNOLOGY_GPRS = 1 << 3
MM_MODEM_ACCESS_TECHNOLOGY_EDGE = 1 << 4
MM_MODEM_ACCESS_TECHNOLOGY_UMTS = 1 << 5
MM_MODEM_ACCESS_TECHNOLOGY_HSDPA = 1 << 6
MM_MODEM_ACCESS_TECHNOLOGY_HSUPA = 1 << 7
MM_MODEM_ACCESS_TECHNOLOGY_HSPA = 1 << 8
MM_MODEM_ACCESS_TECHNOLOGY_HSPA_PLUS = 1 << 9
MM_MODEM_ACCESS_TECHNOLOGY_1XRTT = 1 << 10
MM_MODEM_ACCESS_TECHNOLOGY_EVDO0 = 1 << 11
MM_MODEM_ACCESS_TECHNOLOGY_EVDOA = 1 << 12
MM_MODEM_ACCESS_TECHNOLOGY_EVDOB = 1 << 13
MM_MODEM_ACCESS_TECHNOLOGY_LTE = 1 << 14
MM_MODEM_ACCESS_TECHNOLOGY_ANY = 0xFFFFFFFF

# enum MMModemBand
MM_MODEM_BAND_UNKNOWN = 0
# GSM/UMTS bands
MM_MODEM_BAND_EGSM = 1
MM_MODEM_BAND_DCS = 2
MM_MODEM_BAND_PCS = 3
MM_MODEM_BAND_G850 = 4
MM_MODEM_BAND_U2100 = 5
MM_MODEM_BAND_U1800 = 6
MM_MODEM_BAND_U17IV = 7
MM_MODEM_BAND_U800 = 8
MM_MODEM_BAND_U850 = 9
MM_MODEM_BAND_U900 = 10
MM_MODEM_BAND_U17IX = 11
MM_MODEM_BAND_U1900 = 12
MM_MODEM_BAND_U2600 = 13
# LTE bands
MM_MODEM_BAND_EUTRAN_I = 31
MM_MODEM_BAND_EUTRAN_II = 32
MM_MODEM_BAND_EUTRAN_III = 33
MM_MODEM_BAND_EUTRAN_IV = 34
MM_MODEM_BAND_EUTRAN_V = 35
MM_MODEM_BAND_EUTRAN_VI = 36
MM_MODEM_BAND_EUTRAN_VII = 37
MM_MODEM_BAND_EUTRAN_VIII = 38
MM_MODEM_BAND_EUTRAN_IX = 39
MM_MODEM_BAND_EUTRAN_X = 40
MM_MODEM_BAND_EUTRAN_XI = 41
MM_MODEM_BAND_EUTRAN_XII = 42
MM_MODEM_BAND_EUTRAN_XIII = 43
MM_MODEM_BAND_EUTRAN_XIV = 44
MM_MODEM_BAND_EUTRAN_XVII = 47
MM_MODEM_BAND_EUTRAN_XVIII = 48
MM_MODEM_BAND_EUTRAN_XIX = 49
MM_MODEM_BAND_EUTRAN_XX = 50
MM_MODEM_BAND_EUTRAN_XXI = 51
MM_MODEM_BAND_EUTRAN_XXII = 52
MM_MODEM_BAND_EUTRAN_XXIII = 53
MM_MODEM_BAND_EUTRAN_XXIV = 54
MM_MODEM_BAND_EUTRAN_XXV = 55
MM_MODEM_BAND_EUTRAN_XXVI = 56
MM_MODEM_BAND_EUTRAN_XXXIII = 63
MM_MODEM_BAND_EUTRAN_XXXIV = 64
MM_MODEM_BAND_EUTRAN_XXXV = 65
MM_MODEM_BAND_EUTRAN_XXXVI = 66
MM_MODEM_BAND_EUTRAN_XXXVII = 67
MM_MODEM_BAND_EUTRAN_XXXVIII = 68
MM_MODEM_BAND_EUTRAN_XXXIX = 69
MM_MODEM_BAND_EUTRAN_XL = 70
MM_MODEM_BAND_EUTRAN_XLI = 71
MM_MODEM_BAND_EUTRAN_XLII = 72
MM_MODEM_BAND_EUTRAN_XLIII = 73
# CDMA Band Classes (see 3GPP2 C.S0057-C)
MM_MODEM_BAND_CDMA_BC0_CELLULAR_800 = 128
MM_MODEM_BAND_CDMA_BC1_PCS_1900 = 129
MM_MODEM_BAND_CDMA_BC2_TACS = 130
MM_MODEM_BAND_CDMA_BC3_JTACS = 131
MM_MODEM_BAND_CDMA_BC4_KOREAN_PCS = 132
MM_MODEM_BAND_CDMA_BC5_NMT450 = 134
MM_MODEM_BAND_CDMA_BC6_IMT2000 = 135
MM_MODEM_BAND_CDMA_BC7_CELLULAR_700 = 136
MM_MODEM_BAND_CDMA_BC8_1800 = 137
MM_MODEM_BAND_CDMA_BC9_900 = 138
MM_MODEM_BAND_CDMA_BC10_SECONDARY_800 = 139
MM_MODEM_BAND_CDMA_BC11_PAMR_400 = 140
MM_MODEM_BAND_CDMA_BC12_PAMR_800 = 141
MM_MODEM_BAND_CDMA_BC13_IMT2000_2500 = 142
MM_MODEM_BAND_CDMA_BC14_PCS2_1900 = 143
MM_MODEM_BAND_CDMA_BC15_AWS = 144
MM_MODEM_BAND_CDMA_BC16_US_2500 = 145
MM_MODEM_BAND_CDMA_BC17_US_FLO_2500 = 146
MM_MODEM_BAND_CDMA_BC18_US_PS_700 = 147
MM_MODEM_BAND_CDMA_BC19_US_LOWER_700 = 148
# All/Any
MM_MODEM_BAND_ANY = 256

# enum MMModemCapability
MM_MODEM_CAPABILITY_NONE = 0
MM_MODEM_CAPABILITY_POTS = 1 << 0
MM_MODEM_CAPABILITY_CDMA_EVDO = 1 << 1
MM_MODEM_CAPABILITY_GSM_UMTS = 1 << 2
MM_MODEM_CAPABILITY_LTE = 1 << 3
MM_MODEM_CAPABILITY_LTE_ADVANCED = 1 << 4
MM_MODEM_CAPABILITY_IRIDIUM = 1 << 5

# enum MMModemCdmaActivationState
MM_MODEM_CDMA_ACTIVATION_STATE_UNKNOWN = 0
MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED = 1
MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING = 2
MM_MODEM_CDMA_ACTIVATION_STATE_PARTIALLY_ACTIVATED = 3
MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED = 4

# enum MMModemCdmaRegistrationState
MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN = 0
MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED = 1
MM_MODEM_CDMA_REGISTRATION_STATE_HOME = 2
MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING = 3

# enum MMModemCdmaRmProtocol
MM_MODEM_CDMA_RM_PROTOCOL_UNKNOWN = 0
MM_MODEM_CDMA_RM_PROTOCOL_ASYNC = 1
MM_MODEM_CDMA_RM_PROTOCOL_PACKET_RELAY = 2
MM_MODEM_CDMA_RM_PROTOCOL_PACKET_NETWORK_PPP = 3
MM_MODEM_CDMA_RM_PROTOCOL_PACKET_NETWORK_SLIP = 4
MM_MODEM_CDMA_RM_PROTOCOL_STU_III = 5

# enum MMModemContactsStorage
MM_MODEM_CONTACTS_STORAGE_UNKNOWN = 0
MM_MODEM_CONTACTS_STORAGE_ME = 1
MM_MODEM_CONTACTS_STORAGE_SM = 2
MM_MODEM_CONTACTS_STORAGE_MT = 3

# enum MMModemLocationSource
MM_MODEM_LOCATION_SOURCE_NONE = 0
MM_MODEM_LOCATION_SOURCE_3GPP_LAC_CI = 1 << 0
MM_MODEM_LOCATION_SOURCE_GPS_RAW = 1 << 1
MM_MODEM_LOCATION_SOURCE_GPS_NMEA = 1 << 2

# enum MMModemLock
MM_MODEM_LOCK_UNKNOWN = 0
MM_MODEM_LOCK_NONE = 1
MM_MODEM_LOCK_SIM_PIN = 2
MM_MODEM_LOCK_SIM_PIN2 = 3
MM_MODEM_LOCK_SIM_PUK = 4
MM_MODEM_LOCK_SIM_PUK2 = 5
MM_MODEM_LOCK_PH_SP_PIN = 6
MM_MODEM_LOCK_PH_SP_PUK = 7
MM_MODEM_LOCK_PH_NET_PIN = 8
MM_MODEM_LOCK_PH_NET_PUK = 9
MM_MODEM_LOCK_PH_SIM_PIN = 10
MM_MODEM_LOCK_PH_CORP_PIN = 11
MM_MODEM_LOCK_PH_CORP_PUK = 12
MM_MODEM_LOCK_PH_FSIM_PIN = 13
MM_MODEM_LOCK_PH_FSIM_PUK = 14
MM_MODEM_LOCK_PH_NETSUB_PIN = 15
MM_MODEM_LOCK_PH_NETSUB_PUK = 16

# enum MMModemMode
MM_MODEM_MODE_NONE = 0
MM_MODEM_MODE_CS = 1 << 0
MM_MODEM_MODE_2G = 1 << 1
MM_MODEM_MODE_3G = 1 << 2
MM_MODEM_MODE_4G = 1 << 3
MM_MODEM_MODE_ANY = 0xFFFFFFFF

# enum MMModemState
MM_MODEM_STATE_FAILED = -1
MM_MODEM_STATE_UNKNOWN = 0
MM_MODEM_STATE_INITIALIZING = 1
MM_MODEM_STATE_LOCKED = 2
MM_MODEM_STATE_DISABLED = 3
MM_MODEM_STATE_DISABLING = 4
MM_MODEM_STATE_ENABLING = 5
MM_MODEM_STATE_ENABLED = 6
MM_MODEM_STATE_SEARCHING = 7
MM_MODEM_STATE_REGISTERED = 8
MM_MODEM_STATE_DISCONNECTING = 9
MM_MODEM_STATE_CONNECTING = 10
MM_MODEM_STATE_CONNECTED = 11

def ModemStateToString(state):
    """
    Returns a string for the given state.

    @param state: MMModemState value.

    @return A string that describes the given state.

    """
    MODEM_STATE_STRINGS = [
        'FAILED',
        'UNKNOWN',
        'INITIALIZING',
        'LOCKED',
        'DISABLED',
        'DISABLING',
        'ENABLING',
        'ENABLED',
        'SEARCHING',
        'REGISTERED',
        'DISCONNECTING',
        'CONNECTING',
        'CONNECTED'
    ]
    return MODEM_STATE_STRINGS[state + 1]

# enum MMModemPowerState
MM_MODEM_POWER_STATE_UNKNOWN = 0
MM_MODEM_POWER_STATE_OFF = 1
MM_MODEM_POWER_STATE_LOW = 2
MM_MODEM_POWER_STATE_ON = 3

# enum MMModemStateChangeReason
MM_MODEM_STATE_CHANGE_REASON_UNKNOWN = 0
MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED = 1
MM_MODEM_STATE_CHANGE_REASON_SUSPEND = 2

# enum MMSmsState
MM_SMS_STATE_UNKNOWN = 0
MM_SMS_STATE_STORED = 1
MM_SMS_STATE_RECEIVING = 2
MM_SMS_STATE_RECEIVED = 3
MM_SMS_STATE_SENDING = 4
MM_SMS_STATE_SENT = 5

# enum MMSmsStorage
MM_SMS_STORAGE_UNKNOWN = 0
MM_SMS_STORAGE_SM = 1
MM_SMS_STORAGE_ME = 2
MM_SMS_STORAGE_MT = 3
MM_SMS_STORAGE_SR = 4
MM_SMS_STORAGE_BM = 5
MM_SMS_STORAGE_TA = 6

# enum MMModemPortType
MM_MODEM_PORT_TYPE_UNKNOWN = 1
MM_MODEM_PORT_TYPE_NET = 2
MM_MODEM_PORT_TYPE_AT = 3
MM_MODEM_PORT_TYPE_QCDM = 4
MM_MODEM_PORT_TYPE_GPS = 5
MM_MODEM_PORT_TYPE_QMI = 6
MM_MODEM_PORT_TYPE_MBIM = 7

# enum MMSmsPduType
MM_SMS_PDU_TYPE_UNKNOWN = 0
MM_SMS_PDU_TYPE_DELIVER = 1
MM_SMS_PDU_TYPE_SUBMIT = 2
MM_SMS_PDU_TYPE_STATUS_REPORT = 3

# enum MMSmsDeliveryState
MM_SMS_DELIVERY_STATE_UNKNOWN = 0x100

# enum MMSmsValidityType
MM_SMS_VALIDITY_TYPE_UNKNOWN = 0
MM_SMS_VALIDITY_TYPE_RELATIVE = 1
MM_SMS_VALIDITY_TYPE_ABSOLUTE = 2
MM_SMS_VALIDITY_TYPE_ENHANCED = 3
