a
    ºMe÷  ã                   @   s8   d dl Z ddlmZ dZdZe  e¡ZG dd„ dƒZdS )é    Né   )Ú	epdconfigéz   éú   c                   @   s„   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„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚEPDc                 C   s0   t j| _t j| _t j| _t j| _t	| _
t| _d S ©N)r   ZRST_PINÚ	reset_pinZDC_PINÚdc_pinZBUSY_PINÚbusy_pinZCS_PINÚcs_pinÚ	EPD_WIDTHÚwidthÚ
EPD_HEIGHTÚheight©Úself© r   úP/home/pi/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13b_V4.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   Úreset1   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_command:   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_dataA   s    zEPD.send_datac                 C   s8   t  | jd¡ t  | jd¡ t  |¡ t  | jd¡ d S r   )r   r   r	   r   Zspi_writebyte2r   r   r   r   Ú
send_data2H   s    
zEPD.send_data2c                 C   s4   t  d¡ t | j¡dkr&t d¡ q
t  d¡ d S )Nze-Paper busyr   é
   ze-Paper busy release)ÚloggerÚdebugr   Zdigital_readr
   r   r   r   r   r   ÚbusyO   s    
zEPD.busyc                 C   s|   |   d¡ |  |d? d@ ¡ |  |d? d@ ¡ |   d¡ |  |d@ ¡ |  |d? d@ ¡ |  |d@ ¡ |  |d? d@ ¡ d S )NéD   é   éÿ   éE   é   ©r   r   )r   ÚxstartÚystartZxendZyendr   r   r   Úset_windowsV   s    

zEPD.set_windowsc                 C   sF   |   d¡ |  |d@ ¡ |   d¡ |  |d@ ¡ |  |d? d@ ¡ d S )NéN   r'   éO   r)   r*   )r   r+   r,   r   r   r   Ú
set_cursorb   s
    

zEPD.set_cursorc                 C   sè   t  ¡ dkrdS |  ¡  |  ¡  |  d¡ |  ¡  |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  dd| jd | jd ¡ |  	dd¡ |  d¡ |  d	¡ |  d
¡ |  d¡ |  d¡ |  d¡ |  d¡ |  ¡  dS )Nr   éÿÿÿÿé   r   éù   é   r&   é<   é   é   é€   é!   )
r   Zmodule_initr   r$   r   r   r-   r   r   r0   r   r   r   r   Úinitk   s.    













zEPD.initc                 C   s   |   d¡ |  ¡  d S )Né    )r   r$   r   r   r   r   Ú	ondisplay   s    
zEPD.ondisplayc                 C   s¦   |}|j \}}|| jkr.|| jkr.| d¡}nf|| jkrX|| jkrX|jddd d¡}n<t dt| jƒ d t| jƒ ¡ dgt| jd ƒ| j  S t	| 
d	¡ƒ}|S )
NÚ1éZ   T)Úexpandz Wrong image dimensions: must be Úxr   r)   Úraw)Úsizer   r   ÚconvertÚrotater"   ÚwarningÚstrÚintÚ	bytearrayÚtobytes)r   ZimageZimgZimwidthZimheightÚbufr   r   r   Ú	getbuffer”   s    
"zEPD.getbufferc                 C   s4   |   d¡ |  |¡ |   d¡ |  |¡ |  ¡  d S )Né$   é&   )r   r    r<   )r   Z
imageblackZimageredr   r   r   Údisplay¥   s
    



zEPD.displayc                 C   sx   | j d dkrt| j d ƒ}nt| j d ƒd }dgt|| j ƒ }|  d¡ |  |¡ |  d¡ |  |¡ |  ¡  d S )Nr)   r   r   r'   rL   rM   )r   rG   r   r   r    r<   )r   Z	linewidthrJ   r   r   r   Úclear¯   s    



z	EPD.clearc                 C   s   |   ¡  d S r   )rO   r   r   r   r   ÚClearÀ   s    z	EPD.Clearc                 C   s*   |   d¡ |  d¡ t d¡ t ¡  d S )Né   r   iÐ  )r   r   r   r   Úmodule_exitr   r   r   r   ÚsleepÄ   s    


z	EPD.sleepN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r    r$   r-   r0   r:   r<   rK   rN   rO   rP   rS   r   r   r   r   r   '   s   			$
r   )	ÚloggingÚ r   r   r   Ú	getLoggerrT   r"   r   r   r   r   r   Ú<module>   s
   
