a
    ci@                     @   s.   d Z ddlmZ ddlmZ G dd dZdS )u  
Адаптер для дисплея ST7735 (128x160) через SPI.
Прямая трансляция параметров YAML → методы драйвера st7735.ST7735.

Логика:
1.  Если текст не задан или пуст → clear()
2.  Если текст задан:
	- есть координаты xy [x, y] → draw_multiline_text(x, y, ...)
	- есть координаты rc [row, col] → draw_position_text(row, col, ...)
	- нет координат → draw_multiline_text(0, 0, ...)
   )ST7735    )Optionalc                   @   sz   e Zd ZddddddZdddd	Zdee dd
ddZdee dd
ddZdee dd
ddZ	ddddZ
dS )ST7735_adapter         Nz#000000dc_pinres_pincs_pin
spi_handlebg_color)returnc                 C   s   d | _ | j | _d S N)ST7735_instanceDEFAULT_CONFIGcopyST7735_configself r   5/var/aqua_controller/devices/st7735/st7735_adapter.py__init__   s    zST7735_adapter.__init__)optionsr   c              
   C   s   z|r0t |tr0dD ]}||v r|| | j|< q|rHd|vsH|d d u rPtdt| jd | jd | jd | jd d| _| j|d  | j  W n4 ty } ztd	| |W Y d }~n
d }~0 0 d S )
Nr	   r   uU   Обязательный параметр 'spi_handle' не передан в optionsr
   r   r   r   )r
   r   r   r   u>   Ошибка инициализации устройства: )	
isinstancedictr   RuntimeErrorr   r   Zset_spiclear	Exception)r   r   keyer   r   r   run)   s"    zST7735_adapter.runc              
   C   s  z| j d u rtd|d u r&tdt|ts8td|dd }||dd|dd|d	d
|dd
|dd
|dd d}|d u s| s| j   W d S |d ur| r|d}|d}|d ur"t|t	t
fr"t|dkr"| j jf t|d
 t|d d| nj|d urtt|t	t
frtt|dkrt| j jf t|d
 t|d d| n| j jf d
d
d| W n6 ty } ztd| |W Y d }~n
d }~0 0 d S )Nu;   Устройство не инициализировано.u.   Словарь options отсутствует.u/   options должен быть словарем.textcolorZTEXTr   Z
BACKGROUNDrotationr   line_spacingchar_spacingfont)r#   r$   r   r%   r&   r'   r(   xyrc   r   )xy)rowcolu.   Ошибка установки данных: )r   r   KeyErrorr   r   	TypeErrorgetstripr   listtuplelenZdraw_multiline_textintZdraw_position_textr   )r   r   Z_textZ_options_kwargsZ_xyZ_rcr!   r   r   r   setQ   sX    










(

(


zST7735_adapter.setc                 C   s   t dd S )Nu=   Метод не доступен для устройства.)r   )r   r   r   r   r   r2      s    zST7735_adapter.getc                 C   s    | j r| j   d | _ d | _d S r   )r   Zcleanupr   r   r   r   r   stop   s    
zST7735_adapter.stop)N)N)N)__name__
__module____qualname__r   r   r   r   r"   r8   r2   r9   r   r   r   r   r      s   	(?r   N)__doc__Zst7735r   typingr   r   r   r   r   r   <module>   s   