o
    ïØ{fú  ã                   @   sº   d dl mZ d dlZd dlZG dd„ deƒZG dd„ deƒZedkr[ejdd… rAejd d	krAeƒ Z	e
d
e	 ¡ ƒ e
de	 ¡ ƒ eƒ Ze ¡ Ze
deƒ erTe d¡ e d ¡ dS dS )é    )Úprint_functionNc                   @   sl   e Zd ZdZed ZdZdZdZdZdZ	dZ
dZdZdZdZdZdZd	d
„ Zedd„ ƒZdd„ Zdd„ ZdS )ÚModemManagerHelperúorg.freedesktop.ModemManagerz.Modemé   é   r   é   é   é   c                 C   s8   t  ¡ | _| j dd¡| _t  | j| j¡}| ¡ | _d S )Nr   z/org/freedesktop/ModemManager)	ÚdbusÚ	SystemBusÚbusÚ
get_objectÚproxyÚ	InterfaceÚMM_DBUS_IFACEÚEnumerateDevicesÚmodems)ÚselfÚmodem_manager© r   ú9/usr/lib/python3/dist-packages/UpdateManager/Core/roam.pyÚ__init__C   s   
ÿzModemManagerHelper.__init__c                 C   ó   t  | d¡}| ||¡}|S ©Nzorg.freedesktop.DBus.Properties©r
   r   ÚGet©r   Ú	interfaceÚpropertyÚpropsr   r   r   Úget_dbus_propertyJ   ó   z$ModemManagerHelper.get_dbus_propertyc                 C   sp   | j D ]2}| j | j|¡}|  || jd¡}|| jkrqt || jd ¡}| 	¡ }|d | j
| jfv r5 dS qdS )NÚTypez.Gsm.Networkr   TF)r   r   r   r   r    ÚMM_DBUS_IFACE_MODEMÚMM_MODEM_TYPE_GSMr
   r   ÚGetRegistrationInfoÚ'MM_MODEM_GSM_NETWORK_REG_STATUS_UNKNOWNÚ'MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING)r   ÚmÚdevÚtypeÚnetÚregr   r   r   Úis_gsm_roamingP   s"   

ÿ
ÿ
ÿþz!ModemManagerHelper.is_gsm_roamingc                 C   s‚   | j D ];}| j | j|¡}|  || jd¡}|| jkrqt || jd ¡}| 	¡ \}}| j
| jf}||v r7 dS ||v r> dS qdS )Nr"   z.CdmaTF)r   r   r   r   r    r#   ÚMM_MODEM_TYPE_CDMAr
   r   ÚGetRegistrationStateÚ+MM_MODEM_CDMA_REGISTRATION_STATE_REGISTEREDÚ(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING)r   r(   r)   r*   ÚcdmaÚcmda_1xÚevdoÚroaming_statesr   r   r   Úis_cdma_roamingb   s$   

ÿ
ÿÿz"ModemManagerHelper.is_cdma_roamingN)Ú__name__Ú
__module__Ú__qualname__r   r#   r$   r.   Ú$MM_MODEM_GSM_NETWORK_REG_STATUS_IDLEÚ$MM_MODEM_GSM_NETWORK_REG_STATUS_HOMEÚ)MM_MODEM_GSM_NETWORK_REG_STATUS_SEARCHINGÚ&MM_MODEM_GSM_NETWORK_REG_STATUS_DENIEDr&   r'   Ú(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWNr0   Ú%MM_MODEM_CDMA_REGISTRATION_STATE_HOMEr1   r   Ústaticmethodr    r-   r6   r   r   r   r   r      s(    
r   c                   @   sx   e Zd ZdZdZdZdZeegZdZdZ	dZ
dZee	e
egZdZd	ZdZdZd
Zdd„ Zedd„ ƒZdd„ Zdd„ ZdS )ÚNetworkManagerHelperúorg.freedesktop.NetworkManagerr   r   é(   r   é2   é<   éF   r   r   c                 C   s   t  ¡ | _| j dd¡| _d S )NrB   z/org/freedesktop/NetworkManager)r
   r   r   r   r   )r   r   r   r   r   š   s   

ÿzNetworkManagerHelper.__init__c                 C   r   r   r   r   r   r   r   r    Ÿ   r!   z&NetworkManagerHelper.get_dbus_propertyc           
      C   s´   d}|   | j| jd¡}|D ]J}| j | j|¡}|   || jd d¡}|s$q|   || jd d¡}|D ]&}| j | j|¡}|   || jd d¡}	|	| jkrM  dS |	| jkrV  dS q0q|S )	NFÚActiveConnectionsz.Connection.ActiveÚDefaultÚDevicesz.DeviceÚ
DeviceTypeT)r    r   ÚNM_DBUS_IFACEr   r   ÚNM_DEVICE_TYPE_GSMÚNM_DEVICE_TYPE_CDMA)
r   ÚresÚactivesÚaÚactiveÚdefault_routeÚdevsÚdr)   r*   r   r   r   Ú is_active_connection_gsm_or_cdma¥   s4   
ÿÿÿÿ

÷
z5NetworkManagerHelper.is_active_connection_gsm_or_cdmac                 C   s.   d}|   ¡ rtƒ }|| ¡ O }|| ¡ O }|S )NF)rU   r   r-   r6   )r   rN   Úmmhelperr   r   r   Ú(is_active_connection_gsm_or_cdma_roaming½   s   z=NetworkManagerHelper.is_active_connection_gsm_or_cdma_roamingN)r7   r8   r9   rK   ÚNM_STATE_UNKNOWNÚNM_STATE_CONNECTING_OLDÚNM_STATE_CONNECTINGÚNM_STATE_CONNECTING_LISTÚNM_STATE_CONNECTED_OLDÚNM_STATE_CONNECTED_LOCALÚNM_STATE_CONNECTED_SITEÚNM_STATE_CONNECTED_GLOBALÚNM_STATE_CONNECTED_LISTÚNM_DEVICE_TYPE_UNKNOWNÚNM_DEVICE_TYPE_ETHERNETÚNM_DEVICE_TYPE_WIFIrL   rM   r   r@   r    rU   rW   r   r   r   r   rA   x   s6    ÿý
rA   Ú__main__r   z--testr-   Úis_cdma_romaingzroam: )Ú
__future__r   r
   ÚsysÚobjectr   rA   r7   ÚargvrV   Úprintr-   r6   ÚnmhelperrW   Ú
is_roamingÚexitr   r   r   r   Ú<module>   s"   YN

ò