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ZdZg d¢Zg 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_V2.pyÚ__init__)   s    zEPD.__init__r   r   )Lé€   é`   é@   r   r   r   r   é   r   é    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   é   r   r   r   é   é	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   é   éA   é¨   é2   é0   é
   )Lr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   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   ÚresetX   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_dataf   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_data2m   s    
zEPD.send_data2c                 C   s    t  | j¡dkrt  d¡ q d S )Nr   éd   )r   Zdigital_readr	   r%   r   r   r   r   ÚReadBusys   s    zEPD.ReadBusyc                 C   s*   |   d¡ |  d¡ |   d¡ |  ¡  d S )Né"   éÇ   r   ©r(   r,   r/   r   r   r   r   ÚTurnOnDisplayw   s    


zEPD.TurnOnDisplayc                 C   s*   |   d¡ |  d¡ |   d¡ |  ¡  d S )Nr0   é   r   r2   r   r   r   r   ÚTurnOnDisplayPart}   s    


zEPD.TurnOnDisplayPartc                 C   sÜ  t  ¡ dkrdS |  ¡  || jkr|  ¡  |  d¡ |  ¡  |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d	¡ |  d¡ |  d¡ |  d
¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d	¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  | jd ¡ |  d¡ |  | jd ¡ |  | jd ¡ |  | jd ¡ |  d¡ |  | jd ¡ |  d¡ |  | jd ¡ |  d¡ tdƒD ]}|  | j| ¡ q´|  d¡ |  d¡ |  d¡ |  d	¡ |  d¡ |  ¡  nÐ|  d¡ |  d¡ |  ¡  |  d¡ tdƒD ]}|  | j	| ¡ q6|  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d ¡ |  d!¡ |  d"¡ |  ¡  |  d¡ |  d¡ dS )#Nr   éÿÿÿÿé   ét   éT   é~   é;   r   éù   é   éD   é   éE   é<   r   é,   éU   éF   é   éG   éH   éI   é:   éJ   éK   r   éN   éO   é&   é7   r   r0   éÀ   r   )
r   Zmodule_initr&   ÚFULL_UPDATEr/   r(   r,   Úlut_full_updateÚrangeÚlut_partial_update)r   ÚupdateÚcountr   r   r   Úinitƒ   sŠ    

















































zEPD.initc                 C   sz  | j d dkrt| j d ƒ}nt| j d ƒd }dg|| j  }| d¡}|j\}}| ¡ }|| j krÚ|| jkrÚt d¡ t|ƒD ]T}t|ƒD ]F}	||	|f dkrŽ||	 }	|t|	d ƒ||    d|	d ?  M  < qŽq‚nœ|| jkrv|| j krvt d¡ t|ƒD ]p}t|ƒD ]`}	|}
| j|	 d }||	|f dkr|| d }|t|
d ƒ||    d|d ?  M  < qq|S )	Né   r   r   éÿ   Ú1ZVerticalr   Z
Horizontal)	r   Úintr   ÚconvertÚsizeÚloadÚloggerÚdebugrS   )r   ÚimageÚ	linewidthÚbufZimage_monocolorZimwidthZimheightZpixelsÚyÚxZnewxZnewyr   r   r   Ú	getbufferÝ   s0    


0
2zEPD.getbufferc                 C   s    |   d¡ |  |¡ |  ¡  d S )Né$   ©r(   r-   r3   ©r   ra   r   r   r   Údisplayû   s    

zEPD.displayc                 C   s´   | j d dkrt| j d ƒ}nt| j d ƒd }dg| j | }td| jƒD ]2}td|ƒD ]"}||||    ||||  < qZqL|  d¡ |  |¡ |  d¡ |  |¡ |  ¡  d S )NrX   r   r   rg   rN   )r   r[   r   rS   r(   r-   r5   )r   ra   rb   rc   ÚjÚir   r   r   ÚdisplayPartial   s    "



zEPD.displayPartialc                 C   s4   |   d¡ |  |¡ |   d¡ |  |¡ |  ¡  d S )Nrg   rN   rh   ri   r   r   r   ÚdisplayPartBaseImage  s
    



zEPD.displayPartBaseImagerY   c                 C   s’   | j d dkrt| j d ƒ}nt| j d ƒd }dg| j | }td| jƒD ]$}td|ƒD ]}|||||  < qZqL|  d¡ |  |¡ |  ¡  d S )NrX   r   r   rg   )r   r[   r   rS   r(   r-   r3   )r   Zcolorrb   rc   rk   rl   r   r   r   ÚClear  s    

z	EPD.Clearc                 C   s*   |   d¡ |  d¡ t d¡ t ¡  d S )Nr   r   iÐ  )r(   r,   r   r%   Úmodule_exitr   r   r   r   Úsleep1  s    


z	EPD.sleepN)rY   )Ú__name__Ú
__module__Ú__qualname__r   rQ   ÚPART_UPDATErR   rT   r&   r(   r,   r-   r/   r3   r5   rW   rf   rj   rm   rn   ro   rq   r   r   r   r   r   (   s&   Z
r   )	ÚloggingÚ r   r   r   Ú	getLoggerrr   r_   r   r   r   r   r   Ú<module>   s
   
