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d „ Zd!d"„ Zd#d$„ Zd+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   úO/home/pi/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13_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   Úreset5   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_commandB   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_dataM   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_data2T   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   ÚReadBusy^   s    
zEPD.ReadBusyc                 C   s*   |   d¡ |  d¡ |   d¡ |  ¡  d S )Né"   é÷   é    ©r   r   r#   r   r   r   r   ÚTurnOnDisplayh   s    


zEPD.TurnOnDisplayc                 C   s*   |   d¡ |  d¡ |   d¡ |  ¡  d S )Nr$   éÇ   r&   r'   r   r   r   r   ÚTurnOnDisplay_Fastr   s    


zEPD.TurnOnDisplay_Fastc                 C   s*   |   d¡ |  d¡ |   d¡ |  ¡  d S )Nr$   éÿ   r&   r'   r   r   r   r   ÚTurnOnDisplayPart|   s    


zEPD.TurnOnDisplayPartc                 C   s|   |   d¡ |  |d? d@ ¡ |  |d? d@ ¡ |   d¡ |  |d@ ¡ |  |d? d@ ¡ |  |d@ ¡ |  |d? d@ ¡ d S )NéD   é   r+   éE   é   ©r   r   )r   Zx_startZy_startZx_endZy_endr   r   r   Ú	SetWindow‹   s    

zEPD.SetWindowc                 C   sF   |   d¡ |  |d@ ¡ |   d¡ |  |d@ ¡ |  |d? d@ ¡ d S )NéN   r+   éO   r0   r1   )r   ÚxÚyr   r   r   Ú	SetCursor   s
    

zEPD.SetCursorc                 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   Úmodule_initr   r#   r   r   r2   r   r   r7   r   r   r   r   Úinitª   s.    













zEPD.initc                 C   sè   t  ¡ dkrdS |  ¡  |  d¡ |  ¡  |  d¡ |  d¡ |  d¡ |  d¡ |  dd| jd | jd ¡ |  	dd¡ |  d	¡ |  d
¡ |  d¡ |  ¡  |  d¡ |  d¡ |  d¡ |  d	¡ |  d¡ |  d¡ |  ¡  dS )Nr   r8   r9   r@   r?   r;   r.   r   r$   é±   r&   é   éd   é‘   )
r   rA   r   r   r#   r   r2   r   r   r7   r   r   r   r   Ú	init_fastÑ   s.    













zEPD.init_fastc                 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 r5   r   r0   Úraw)Úsizer   r   ÚconvertÚrotater!   ÚwarningÚstrÚintÚ	bytearrayÚtobytes)r   ÚimageZimgZimwidthZimheightZbufr   r   r   Ú	getbuffer÷   s    
"zEPD.getbufferc                 C   s    |   d¡ |  |¡ |  ¡  d S ©Né$   ©r   r   r(   ©r   rT   r   r   r   Údisplay  s    

zEPD.displayc                 C   s    |   d¡ |  |¡ |  ¡  d S rV   )r   r   r*   rY   r   r   r   Údisplay_fast  s    

zEPD.display_fastc                 C   s¾   t  | jd¡ t  d¡ t  | jd¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  dd| jd | jd ¡ |  	dd¡ |  d¡ |  
|¡ |  ¡  d S )	Nr   r   r<   r?   r:   r;   r.   rW   )r   r   r   r   r   r   r2   r   r   r7   r   r,   rY   r   r   r   ÚdisplayPartial  s     










zEPD.displayPartialc                 C   s4   |   d¡ |  |¡ |   d¡ |  |¡ |  ¡  d S )NrW   é&   rX   rY   r   r   r   ÚdisplayPartBaseImage;  s
    



zEPD.displayPartBaseImager+   c                 C   s`   | j d dkrt| j d ƒ}nt| j d ƒd }|  d¡ |  |gt| j| ƒ ¡ |  ¡  d S )Nr0   r   r   rW   )r   rQ   r   r   r   r(   )r   ZcolorZ	linewidthr   r   r   ÚClearG  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   ÚsleepV  s    


z	EPD.sleepN)r+   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r#   r(   r*   r,   r2   r7   rB   rG   rU   rZ   r[   r\   r^   r_   rb   r   r   r   r   r   (   s(   



'&
	
r   )	ÚloggingÚ r   r   r   Ú	getLoggerrc   r!   r   r   r   r   r   Ú<module>   s
   
