a
    ºMe'  ã                   @   sT   d dl Z ddlmZ d dlZd dlmZ d dlZdZdZe  e	¡Z
G dd„ dƒZdS )	é    Né   )Ú	epdconfig)ÚImageéz   éú   c                   @   sn   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zddd„Zdd„ ZdS )ÚEPDc                 C   sh   t j| _t j| _t j| _t j| _t	| _
t| _d| _d| _d| _d| _t| _| j
dk r\d| _n| j
| _d S )Nr   iÿÿÿ iÿÿ  éÿ   é€   )r   ZRST_PINÚ	reset_pinZDC_PINÚdc_pinZBUSY_PINÚbusy_pinZCS_PINÚcs_pinÚ	EPD_WIDTHÚwidthÚ
EPD_HEIGHTÚheightÚBLACKÚWHITEÚYELLOWÚREDÚ	Gate_BITSÚSource_BITS©Úself© r   úM/home/pi/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13g.pyÚ__init__-   s    
zEPD.__init__c                 C   sL   t  | jd¡ t  d¡ t  | jd¡ t  d¡ t  | jd¡ t  d¡ d S )Nr   éÈ   r   é   )r   Údigital_writer
   Údelay_msr   r   r   r   Úreset@   s    

z	EPD.resetc                 C   s:   t  | jd¡ t  | jd¡ t  |g¡ t  | jd¡ d S )Nr   r   ©r   r   r   r   Zspi_writebyte)r   Zcommandr   r   r   Úsend_commandH   s    zEPD.send_commandc                 C   s:   t  | jd¡ t  | jd¡ t  |g¡ t  | jd¡ d S )Nr   r   r"   )r   Údatar   r   r   Ú	send_dataN   s    zEPD.send_datac                 C   s>   t  d¡ t d¡ t | j¡dkr0t d¡ qt  d¡ d S )Nze-Paper busy Héd   r   é   ze-Paper busy release)ÚloggerÚdebugr   r    Zdigital_readr   r   r   r   r   ÚReadBusyT   s
    

zEPD.ReadBusyc                 C   sN   |   d¡ |  | jd ¡ |  | jd ¡ |  | jd ¡ |  | jd ¡ d S )Néa   é   )r#   r%   r   r   r   r   r   r   Ú	SetWindow[   s
    
zEPD.SetWindowc                 C   s    |   d¡ |  d¡ |  ¡  d S )Né   r   )r#   r%   r*   r   r   r   r   ÚTurnOnDisplayc   s    

zEPD.TurnOnDisplayc                 C   s°  t  ¡ dkrdS |  ¡  |  ¡  |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d	¡ |  d
¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  ¡  |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d	¡ |  d¡ |  d¡ |  d ¡ |  d!¡ |  d"¡ |  ¡  dS )#Nr   éÿÿÿÿéM   éx   é   é)   r   é   é   é   éT   éD   é   r'   é?   é
   é%   r.   é   éP   é7   é`   r   éç   é   éã   é"   é´   éÐ   éµ   éé   é0   é   é   )r   Zmodule_initr!   r*   r#   r%   r-   r   r   r   r   Úinith   sZ    





































zEPD.initc                 C   s”  t  dd¡}| ddd  ¡ |j\}}|| jkrB|| jkrB|}n>|| jkrf|| jkrf|jddd}nt d	||| j| jf ¡ | 	d
¡j
|d}t| d¡ƒ}| jd dkrº| jd }n| jd d }| j}	dgt||	 ƒ }
d}td|	ƒD ] }td|ƒD ]}||d kr@|| d> ||d  d>  |
|||  < |d }qü|| d> ||d  d>  ||d  d>  ||d   |
|||  < |d }qüqî|
S )NÚP)r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   éü   éZ   T)Úexpandz3Invalid image dimensions: %d x %d, expected %d x %dÚRGB)ZpaletteÚrawrL   r   r   r:   r   r6   )r   ÚnewZ
putpaletteÚsizer   r   Úrotater(   ÚwarningÚconvertZquantizeÚ	bytearrayÚtobytesÚintÚrange)r   ÚimageZ	pal_imageZimwidthZimheightZ
image_tempZimage_4colorZ
buf_4colorÚWidthÚHeightZbufÚidxÚjÚir   r   r   Ú	getbuffer§   s0    
(
DzEPD.getbufferc                 C   s”   | j d dkr| j d }n| j d d }| j}|  d¡ td|ƒD ]D}td| jd ƒD ].}|dk rz|  ||||   ¡ qV|  d¡ qVqB|  ¡  d S )NrL   r   r   r7   é   )r   r   r#   r\   r   r%   r/   )r   r]   r^   r_   ra   rb   r   r   r   ÚdisplayË   s    
zEPD.displayéU   c                 C   sP   | j d }| j}|  d¡ td|ƒD ]}td|ƒD ]}|  |¡ q2q$|  ¡  d S )NrL   r7   r   )r   r   r#   r\   r%   r/   )r   Zcolorr^   r_   ra   rb   r   r   r   ÚClearÜ   s    

z	EPD.Clearc                 C   sF   |   d¡ |  ¡  t d¡ |   d¡ |  d¡ t d¡ t ¡  d S )Nr   r&   r5   é¥   iÐ  )r#   r*   r   r    r%   Úmodule_exitr   r   r   r   Úsleepç   s    




z	EPD.sleepN)rf   )Ú__name__Ú
__module__Ú__qualname__r   r!   r#   r%   r*   r-   r/   rM   rc   re   rg   rj   r   r   r   r   r   ,   s   ?$
r   )ÚloggingÚ r   ÚPILr   Úior   r   Ú	getLoggerrk   r(   r   r   r   r   r   Ú<module>   s   
