B
    ¶§]7  ã            "   @   s:  d Z ddlZddlZddlT ddlmZ dd„ Zdd„ Zd	d
„ Zd?dd„Z	dd„ Z
ef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/d0„ Zd1d2„ Zd3d4„ Zd5d6d7d8d9d: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.d0d2d4g"ZdS )@zW
Created on Tue May 15 01:17:55 2018

@author: hank
@page:   https://github.com/hankso
é    N)Ú*)ÚGPIOc             C   s   t  | |¡ d S )N)r   Úsetup)ÚpinÚstate© r   ú./tmp/pip-build-_ba0108w/gpio4/gpio4/arduino.pyÚpinMode   s    r	   c             C   s:   yt  | |¡ W n$ tk
r4   td | | ¡ƒ‚Y nX d S )Nz>Pin {} is not setup yet, please run`pinMode({}, state)` first!)r   ÚoutputÚ	NameErrorÚformat)r   Úvaluer   r   r   ÚdigitalWrite   s
    r   c             C   s4   y
t  | ¡S  tk
r.   td | | ¡ƒ‚Y nX d S )Nz>Pin {} is not setup yet, please run`pinMode({}, state)` first!)r   Úinputr   r   )r   r   r   r   ÚdigitalRead   s
    
r   c                sB   t  | |¡‰ ˆ  d¡ |d k	r>|dkr>t |‡ fdd„¡ ¡  d S )Né2   r   c                 s   ˆ   ¡ S )N)Ústop)ÚargsÚkwargs)Úpr   r   Ú<lambda>-   ó    ztone.<locals>.<lambda>)r   ÚPWMÚstartÚ	threadingÚTimer)r   Z	frequencyÚdurationr   )r   r   Útone)   s    
r   c             C   s   t  | ¡ ¡  d S )N)r   r   r   )r   r   r   r   ÚnoTone0   s    r   c             C   s‚   t ƒ }x"t| ƒ|kr(t ƒ | |krdS qW x"t| ƒ|krLt ƒ | |kr,dS q,W t ƒ }x"t| ƒ|krvt ƒ | |krVdS qVW t ƒ | S )Nr   )Úmicrosr   )r   r   Útimeoutr   r   r   r   ÚpulseIn4   s    r!   c             C   s¤   t |tƒ d}|tkrRxˆtdƒD ],}t |tƒ |t| ƒd| > O }t |tƒ q W nN|tkr’xDtdƒD ](}t |tƒ |t| ƒ|> O }t |tƒ qdW ntd |¡ƒ‚|S )Nr   é   é   zInvalid bitOrder: {})	r   ÚLOWÚMSBFIRSTÚrangeÚHIGHr   ÚLSBFIRSTÚ
ValueErrorr   )ÚdataPinÚclockPinÚbitOrderr   Úir   r   r   ÚshiftInF   s    


r.   c             C   sš   |t krFxŒtdƒD ].}t|tƒ t| |dd| > @ ƒ t|tƒ qW nP|tkrˆxFtdƒD ]*}t|tƒ t| |d|> @ ƒ t|tƒ qXW ntd |¡ƒ‚d S )Nr"   é   r#   zInvalid bitOrder: {})r%   r&   r   r$   r'   r(   r)   r   )r*   r+   r,   r   r-   r   r   r   ÚshiftOutX   s    

r0   c             C   s   t  | d ¡ d S )Ng     @�@)ÚtimeÚsleep)r    r   r   r   Údelayj   s    r3   c             C   s   t  | d ¡ d S )Ng    €„.A)r1   r2   )r    r   r   r   ÚdelayMicrosecondsn   s    r4   c               C   s   t   ¡ d S )Niè  )r1   r   r   r   r   r   r   s    r   c               C   s   t   ¡ d S )Ni@B )r1   r   r   r   r   Úmillisv   s    r5   c             C   s   t t| |ƒ|ƒS )N)ÚmaxÚmin)ÚxÚaÚbr   r   r   Ú	constrain}   s    r;   c             C   s    t | | ƒ||  ||  | S )N)Úfloat)r8   ÚlowÚhighZt_lowZt_highr   r   r   Úmap�   s    r?   c             C   s   t | |dƒS )Nr   )ÚbitWrite)r8   Únr   r   r   ÚbitClearˆ   s    rB   c             C   s   t | |dƒS )Nr/   )r@   )r8   rA   r   r   r   ÚbitSetŒ   s    rC   c             C   s   | |? d@ S )Nr/   r   )r8   rA   r   r   r   ÚbitRead�   s    rD   c             C   s$   |r| d|> O } n| d|>  M } | S )Nr/   r   )r8   rA   r:   r   r   r   r@   ”   s    r@   c             C   s   | d? d@ S )Nr"   éÿ   r   )r8   r   r   r   ÚhighByteœ   s    rF   c             C   s   | d@ S )NrE   r   )r8   r   r   r   ÚlowByte    s    rG   c             C   s   t j| ||gd� d S )N)ZedgeÚcallback)r   Zadd_event_detect)r   ZISRÚmoder   r   r   ÚattachInterrupt§   s    rJ   c             C   s   t  | ¡ d S )N)r   Zremove_event_detect)r   r   r   r   ÚdetachInterrupt«   s    rK   c               C   s   t  ¡  d S )N)r   Zenable_interruptsr   r   r   r   Ú
interrupts¯   s    rL   c               C   s   t  ¡  d S )N)r   Zdisable_interruptsr   r   r   r   ÚnoInterrupts³   s    rM   r'   r$   ZOUTPUTZINPUTZINPUT_PULLUPZINPUT_PULLDNr%   r(   ÚtrueÚfalse)N) Ú__doc__r   r1   Zgpio4.constantsZgpio4r   r	   r   r   r   r   Z
FOREVER_msr!   r.   r0   r3   r4   r   r5   r;   r?   rB   rC   rD   r@   rF   rG   rJ   rK   rL   rM   Ú__all__r   r   r   r   Ú<module>   sF   


