a
    {ÑNe   ã                   @   s¶   d dl Z d dlZd dlZd dlZe e¡ZG dd„ dƒZG dd„ dƒZG dd„ dƒZ	e j
 d¡rheƒ Zne j
 d	¡r|e	ƒ Zneƒ Zd
d„ eeƒD ƒD ]Zeeje eeeeƒƒ q”dS )é    Nc                   @   s`   e Zd ZdZdZdZd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S )ÚRaspberryPié   é   é   é   é   c                 C   s&   dd l }dd l}|j| _| ¡ | _d S ©Nr   )ÚspidevZRPi.GPIOÚGPIOÚSpiDevÚSPI)Úselfr	   ZRPi© r   ú#/home/pi/waveshare_epd/epdconfig.pyÚ__init__.   s    zRaspberryPi.__init__c                 C   s   | j  ||¡ d S ©N©r
   Úoutput©r   ÚpinÚvaluer   r   r   Údigital_write5   s    zRaspberryPi.digital_writec                 C   s   | j  |¡S r   ©r
   Úinput©r   r   r   r   r   Údigital_read8   s    zRaspberryPi.digital_readc                 C   s   t  |d ¡ d S ©Ng     @@©ÚtimeÚsleep©r   Z	delaytimer   r   r   Údelay_ms;   s    zRaspberryPi.delay_msc                 C   s   | j  |¡ d S r   ©r   Z
writebytes©r   Údatar   r   r   Úspi_writebyte>   s    zRaspberryPi.spi_writebytec                 C   s   | j  |¡ d S r   )r   Zwritebytes2r#   r   r   r   Úspi_writebyte2A   s    zRaspberryPi.spi_writebyte2c                 C   s²   | j  | j j¡ | j  d¡ | j  | j| j j¡ | j  | j| j j¡ | j  | j| j j¡ | j  | j	| j j¡ | j  | j
| j j¡ | j  | j	d¡ | j dd¡ d| j_d| j_dS )NFé   r   é 	= )r
   ÚsetmodeÚBCMÚsetwarningsÚsetupÚRST_PINÚOUTÚDC_PINÚCS_PINÚPWR_PINÚBUSY_PINÚINr   r   ÚopenÚmax_speed_hzÚmode©r   r   r   r   Úmodule_initD   s    zRaspberryPi.module_initc                 C   sr   t  d¡ | j ¡  t  d¡ | j | jd¡ | j | jd¡ | j | jd¡ | j 	| j| j| j
| j| jg¡ d S ©Nzspi endz/close 5V, Module enters 0 power consumption ...r   )ÚloggerÚdebugr   Úcloser
   r   r-   r/   r1   Úcleanupr0   r2   r7   r   r   r   Úmodule_exitU   s    


zRaspberryPi.module_exitN©Ú__name__Ú
__module__Ú__qualname__r-   r/   r0   r2   r1   r   r   r   r!   r%   r&   r8   r>   r   r   r   r   r   &   s   r   c                   @   s`   e Zd ZdZdZdZd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S )Ú
JetsonNanor   r   r   r   r   c                 C   s„   dd l }tj tj t¡¡ddg}d | _|D ]0}tj |d¡}tj |¡r,|j	 
|¡| _ q^q,| jd u rptdƒ‚dd l}|j| _d S )Nr   z/usr/local/libz/usr/libzsysfs_software_spi.soz!Cannot find sysfs_software_spi.so)ÚctypesÚosÚpathÚdirnameÚrealpathÚ__file__r   ÚjoinÚexistsZcdllZLoadLibraryÚRuntimeErrorZJetson.GPIOr
   )r   rD   Z	find_dirsZfind_dirZso_filenameZJetsonr   r   r   r   i   s    ý
zJetsonNano.__init__c                 C   s   | j  ||¡ d S r   r   r   r   r   r   r   |   s    zJetsonNano.digital_writec                 C   s   | j  | j¡S r   )r
   r   r2   r   r   r   r   r      s    zJetsonNano.digital_readc                 C   s   t  |d ¡ d S r   r   r    r   r   r   r!   ‚   s    zJetsonNano.delay_msc                 C   s   | j  |d ¡ d S r   )r   ÚSYSFS_software_spi_transferr#   r   r   r   r%   …   s    zJetsonNano.spi_writebytec                 C   s&   t t|ƒƒD ]}| j || ¡ qd S r   )ÚrangeÚlenr   rM   )r   r$   Úir   r   r   r&   ˆ   s    zJetsonNano.spi_writebyte2c                 C   sž   | j  | j j¡ | j  d¡ | j  | j| j j¡ | j  | j| j j¡ | j  | j| j j¡ | j  | j	| j j¡ | j  | j
| j j¡ | j  | j	d¡ | j ¡  dS )NFr'   r   )r
   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r   ZSYSFS_software_spi_beginr7   r   r   r   r8   Œ   s    
zJetsonNano.module_initc                 C   sr   t  d¡ | j ¡  t  d¡ | j | jd¡ | j | jd¡ | j | jd¡ | j 	| j| j| j
| j| jg¡ d S r9   )r:   r;   r   ZSYSFS_software_spi_endr
   r   r-   r/   r1   r=   r0   r2   r7   r   r   r   r>   š   s    


zJetsonNano.module_exitNr?   r   r   r   r   rC   a   s   rC   c                   @   sd   e Zd ZdZdZdZdZd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S )Ú	SunriseX3r   r   r   r   r   r   c                 C   s&   dd l }dd l}|j| _| ¡ | _d S r   )r	   Z
Hobot.GPIOr
   r   r   )r   r	   ZHobotr   r   r   r   ¯   s    zSunriseX3.__init__c                 C   s   | j  ||¡ d S r   r   r   r   r   r   r   ¶   s    zSunriseX3.digital_writec                 C   s   | j  |¡S r   r   r   r   r   r   r   ¹   s    zSunriseX3.digital_readc                 C   s   t  |d ¡ d S r   r   r    r   r   r   r!   ¼   s    zSunriseX3.delay_msc                 C   s   | j  |¡ d S r   r"   r#   r   r   r   r%   ¿   s    zSunriseX3.spi_writebytec                 C   s   | j  |¡ d S r   )r   Zxfer3r#   r   r   r   r&   Â   s    zSunriseX3.spi_writebyte2c                 C   sÊ   | j dkrÂd| _ | j | jj¡ | j d¡ | j | j| jj¡ | j | j| jj¡ | j | j	| jj¡ | j | j
| jj¡ | j | j| jj¡ | j | j
d¡ | j dd¡ d| j_d| j_dS dS d S )Nr   r'   Fé   r(   )ÚFlagr
   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r   r4   r5   r6   r7   r   r   r   r8   Ç   s    
zSunriseX3.module_initc                 C   sx   t  d¡ | j ¡  t  d¡ d| _| j | jd¡ | j | jd¡ | j | j	d¡ | j 
| j| j| j| jg| j	¡ d S r9   )r:   r;   r   r<   rS   r
   r   r-   r/   r1   r=   r0   r2   r7   r   r   r   r>   Ü   s    


zSunriseX3.module_exitN)r@   rA   rB   r-   r/   r0   r2   r1   rS   r   r   r   r!   r%   r&   r8   r>   r   r   r   r   rQ   ¦   s   rQ   z)/sys/bus/platform/drivers/gpiomem-bcm2835z!/sys/bus/platform/drivers/gpio-x3c                 C   s   g | ]}|  d ¡s|‘qS )Ú_)Ú
startswith)Ú.0Úxr   r   r   Ú
<listcomp>ð   ó    rX   )rE   ÚloggingÚsysr   Ú	getLoggerr@   r:   r   rC   rQ   rF   rK   ÚimplementationÚdirÚfuncÚsetattrÚmodulesÚgetattrr   r   r   r   Ú<module>   s   
;EC