a
    =i                     @   s"   d Z ddlmZ G dd dZdS )u  
Класс - адаптер, для класса TCA9548A 
Цель адаптера: Приведение  протокола общения с внешним классом к унифицированным требованиям контроллера.
   )TCA9548Ac                   @   sh   e Zd ZdddZddddZdedddd	Zdeddd
dZdeedddZ	ddddZ
dS )TCA9548A_adapterN@   i2c_busi2c_address)returnc                 C   s   d | _ | j | _d S )N)TCA9548A_instanceDEFAULT_CONFIGcopyTCA9548A_config)self r   9/var/aqua_controller/devices/tca9548a/tca9548a_adapter.py__init__   s    zTCA9548A_adapter.__init__)optionsr   c              
   C   s   zp|r8t |tstddD ]}||v r|| | j|< q| jd}| jd}|d urn|d urnt||d| _W n4 ty } ztd| |W Y d }~n
d }~0 0 d S )N.   options должен быть словаремr   r   r   )i2caddressu>   Ошибка инициализации устройства: )	
isinstancedict	TypeErrorr   getr   r	   	ExceptionRuntimeError)r   r   key_i2c_bus_i2c_addresser   r   r   run   s    
zTCA9548A_adapter.runc              
   C   s   z|d u rW d S t |ts"tdd|vr2td|d}t |tsXtdt| d|  krldks~n td| d| jd u rt	d	| d
| j
| W n: ty } z"t	d| d| |W Y d }~n
d }~0 0 d S )Nr   channelu1   Параметр channel не обнаружен.u_   Номер канала должен быть целым числом (int). Получено:        u   Номер канала #uS    выходит за диапазон допустимых значений (0 - 7)uG   Невозможно установить активным канал #u=   . Устройство не инициализировано.u[   Ошибка установки активного состояния для канала #z: )r   r   r   KeyErrorr   int
ValueErrortyper	   r   Zset_channelr   )r   r   _channelr   r   r   r   set6   s"    



zTCA9548A_adapter.setc              
   C   sp   z6| j d u rtd| j }|dkr.t|nd }|W S  tyj } ztd| |W Y d }~n
d }~0 0 d S )Nu   Невозможно определить номер активного канала. Устройство инициализировано.uR   Ошибка определения номера активного канала: )r	   r   r   Zget_channelr$   r   )r   r   Z_get_channelr   r   r   r   r   S   s    

zTCA9548A_adapter.getc              
   C   sP   | j r@zW n4 ty> } ztd| |W Y d }~n
d }~0 0 d | _ d | _d S )Nu6   Ошибка остановки устройства: )r	   r   r   r   )r   r   r   r   r   stop_   s    &zTCA9548A_adapter.stop)N)N)N)__name__
__module____qualname__r
   r   r   r   r(   r$   r   r*   r   r   r   r   r      s   
r   N)__doc__Ztca9548ar   r   r   r   r   r   <module>   s   