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

