U
    óûˆcú  ã                   @   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… r‚ejd d	kr‚eƒ Z	e
d
e	 ¡ ƒ e
de	 ¡ ƒ eƒ Ze ¡ Ze
deƒ er¨e d¡ e d ¡ 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_IFACEZEnumerateDevicesÚmodems)ÚselfZmodem_manager© r   ú9/usr/lib/python3/dist-packages/UpdateManager/Core/roam.pyÚ__init__C   s    
ÿzModemManagerHelper.__init__c                 C   s   t  | d¡}| ||¡}|S ©Nzorg.freedesktop.DBus.Properties©r
   r   ZGet©r   Z	interfaceÚpropertyZpropsr   r   r   Úget_dbus_propertyJ   s    z$ModemManagerHelper.get_dbus_propertyc                 C   sp   | j D ]d}| j | j|¡}|  || jd¡}|| jkr6qt || jd ¡}| 	¡ }|d | j
| jfkr dS qdS )NÚTypez.Gsm.Networkr   TF)r   r   r   r   r   ÚMM_DBUS_IFACE_MODEMÚMM_MODEM_TYPE_GSMr
   r   ZGetRegistrationInfoÚ'MM_MODEM_GSM_NETWORK_REG_STATUS_UNKNOWNÚ'MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING)r   ÚmÚdevÚtypeZnetZregr   r   r   Úis_gsm_roamingP   s     

ÿ
ÿ
ÿz!ModemManagerHelper.is_gsm_roamingc                 C   s‚   | j D ]v}| j | j|¡}|  || jd¡}|| jkr6qt || jd ¡}| 	¡ \}}| j
| jf}||krn dS ||kr dS qdS )Nr   z.CdmaTF)r   r   r   r   r   r   ÚMM_MODEM_TYPE_CDMAr
   r   ZGetRegistrationStateÚ+MM_MODEM_CDMA_REGISTRATION_STATE_REGISTEREDÚ(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING)r   r    r!   r"   ZcdmaZcmda_1xZevdoZroaming_statesr   r   r   Úis_cdma_roamingb   s"    

ÿ
ÿz"ModemManagerHelper.is_cdma_roamingN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r$   Z$MM_MODEM_GSM_NETWORK_REG_STATUS_IDLEZ$MM_MODEM_GSM_NETWORK_REG_STATUS_HOMEZ)MM_MODEM_GSM_NETWORK_REG_STATUS_SEARCHINGZ&MM_MODEM_GSM_NETWORK_REG_STATUS_DENIEDr   r   Z(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWNr%   Z%MM_MODEM_CDMA_REGISTRATION_STATE_HOMEr&   r   Ústaticmethodr   r#   r'   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 )Nr-   z/org/freedesktop/NetworkManager)r
   r   r   r   r   )r   r   r   r   r   š   s    
ÿzNetworkManagerHelper.__init__c                 C   s   t  | d¡}| ||¡}|S r   r   r   r   r   r   r   Ÿ   s    z&NetworkManagerHelper.get_dbus_propertyc           
      C   s¶   d}|   | j| jd¡}|D ]–}| j | j|¡}|   || jd d¡}|sHq|   || jd d¡}|D ]N}| j | j|¡}|   || jd d¡}	|	| jkrš  dS |	| jkr`  dS q`q`q|S )	NFZActiveConnectionsz.Connection.ActiveZDefaultZDevicesz.DeviceZ
DeviceTypeT)r   r   ÚNM_DBUS_IFACEr   r   ÚNM_DEVICE_TYPE_GSMÚNM_DEVICE_TYPE_CDMA)
r   ÚresZactivesÚaZactiveZdefault_routeZdevsÚdr!   r"   r   r   r   Ú is_active_connection_gsm_or_cdma¥   sB      ÿ  ÿ  ÿ  ÿ

z5NetworkManagerHelper.is_active_connection_gsm_or_cdmac                 C   s.   d}|   ¡ r*tƒ }|| ¡ O }|| ¡ O }|S )NF)r8   r   r#   r'   )r   r5   Úmmhelperr   r   r   Ú(is_active_connection_gsm_or_cdma_roaming½   s    z=NetworkManagerHelper.is_active_connection_gsm_or_cdma_roamingN)r(   r)   r*   r2   ZNM_STATE_UNKNOWNZNM_STATE_CONNECTING_OLDZNM_STATE_CONNECTINGZNM_STATE_CONNECTING_LISTZNM_STATE_CONNECTED_OLDZNM_STATE_CONNECTED_LOCALZNM_STATE_CONNECTED_SITEZNM_STATE_CONNECTED_GLOBALZNM_STATE_CONNECTED_LISTZNM_DEVICE_TYPE_UNKNOWNZNM_DEVICE_TYPE_ETHERNETZNM_DEVICE_TYPE_WIFIr3   r4   r   r+   r   r8   r:   r   r   r   r   r,   x   s4   ÿý
r,   Ú__main__r   z--testr#   Zis_cdma_romaingzroam: )Z
__future__r   r
   ÚsysÚobjectr   r,   r(   Úargvr9   Úprintr#   r'   Znmhelperr:   Z
is_roamingÚexitr   r   r   r   Ú<module>   s   YN

