B
    £ �a›)  ã            	   @   sN  d dl mZ d dlZd dlZd dlZd dlZd dlmZ dZdZ	da
dZdZdddgZd ad ad adddœZdZe ¡ Zi Zy"ed	ƒ�Ze e¡ZW dQ R X W n   d
ddœZY nX ed Zd&dd„Zd'dd„Zdd„ Zdd„ Zdd„ ZddddœZddddœZ d d d dœZ!dZ"da#d a$d a%da&da'dd„ Z(d d!„ Z)d"d#„ Z*da+d$d%„ Z,dS )(é    )ÚdefaultdictN)ÚIS_REMOTE_TESTéÿ   Fé   )ÚleftÚrighté   z/pedal_state/hardware_info.jsoné	   Údigit)ÚrevisionÚpedalr   ç{®Gáz„?c          	   C   sx   t dk rTtddƒ�}| d¡ W d Q R X t | ¡ tddƒ�}| d¡ W d Q R X n tddƒ�}| d¡ W d Q R X d S )Né
   z/sys/class/gpio/gpio130/valueÚwÚ1Ú0)ÚPEDAL_VERSIONÚopenÚwriteÚtimeÚsleep)ÚtÚf© r   ú!/home/debian/UI/pedal_hardware.pyÚ	effect_on*   s    
r   c          	   C   sx   t dk rTtddƒ�}| d¡ W d Q R X t | ¡ tddƒ�}| d¡ W d Q R X n tddƒ�}| d¡ W d Q R X d S )Nr   z/sys/class/gpio/gpio131/valuer   r   r   z/sys/class/gpio/gpio130/value)r   r   r   r   r   )r   r   r   r   r   Ú
effect_off:   s    
r   c           	   C   sº   yLt ddƒ�} |  tdƒ¡ W d Q R X t ddƒ�} |  tdƒ¡ W d Q R X W n tk
r`   Y nX t d¡ t ddƒ�} |  d¡ W d Q R X t ddƒ�} |  d¡ W d Q R X d	atƒ  d S )
Nz/sys/class/gpio/exportr   é‚   éƒ   g      ø?z!/sys/class/gpio/gpio130/directionÚoutz!/sys/class/gpio/gpio131/directionT)r   r   ÚstrÚOSErrorr   r   Úbypass_setupr   )r   r   r   r   Úsetup_bypassG   s    
r#   c               C   s   d S )Nr   r   r   r   r   Úset_master_tempox   s    r$   c               C   s   d S )Nr   r   r   r   r   Úset_master_time_sig{   s    r%   T)é   é0   é.   é   g¸…ëQ¸Ž?Ú c             C   s   t | | ƒdk S )Ng{®Gáz”?)Úabs)Za_tZb_tr   r   r   Úbutton_is_together�   s    r,   c              C   s  �yæ�xÞt rŠt ¡ t  tkrŠd a datdƒ tdkrLttt krLt	dt
ƒ n>tdkrlttt krlt	dtƒ ntdkrŠttt krŠt	dtƒ t r¢td	t t ¡ t  ƒ tjdd
�} | jdkrôt| j dkrô| jt| j< d| j t| j< dt| j< tdƒ t �rŠ| jdk�rB| jt| j k�rBtdk�rBd a dada|  ¡ a
t	dt
ƒ nF| jdk�r<| jt| j k�r<tdk�r<d a da|  ¡ adat	dtƒ n²| jdk�rÆ| jt| j k�rÆt ¡ a |  ¡ a
| ja| janv| jdk�r| jt| j k�rt ¡ a |  ¡ a| ja| jan:| jdk�r<| jt| j k�r<t ¡ a |  ¡ a| ja| ja| jdk�r–| jt| j k�r–t�rvtdk�rvt	dt
ƒ nt �rŠd a t	dt
ƒ t	dt
ƒ nÔ| jdk�r| jt| j k�rd a t�rÒtdk�rÒt	dtƒ t�rîtdk�rît	dtƒ nt �rd a t	dtƒ t	dtƒ n\| jdk�rj| jt| j k�rjd a t�rLtdk�rLt	dtƒ nt �r`d a t	dtƒ t	dtƒ | jdkrtdk �r°| jdk�r–td| jƒ | jdk�râtd| jƒ q| jdk�rÊtd| j ƒ | jdkrtd| j ƒ qW W n tjk
�r    Y nX d S )NFzgot button pressr&   Útap_downr'   Ú	step_downr(   Úbypass_downÚprev_t)Úblock)r&   r'   r(   Tr)   zsetting initial button state)r&   r'   Útap_stepÚtap_step_down)r(   r'   Ústep_bypassÚstep_bypass_downÚtap_step_upÚtap_upÚstep_bypass_upÚstep_upÚ	bypass_upé   r   r   )r0   r   Úperf_counterÚsame_time_delayÚ	was_multiÚprintÚe_codeÚe_valueÚswitch_downÚfoot_callbackÚtap_down_timestampÚstep_down_timestampÚbypass_down_timestampÚinput_queueÚgetÚcodeÚinitial_pressÚvalueÚ	switch_upÚmulti_comboÚ	timestampÚtyper   Úencoder_change_callbackÚqueueÚEmpty)Úer   r   r   Úprocess_input“   sª    


((







rT   c              C   sÐ   dd l } dd l}ddlm} ddl m}m} |  ¡ }| d¡}| d¡}| d¡}| || j¡ | || j¡ | || j¡ xNtr„P tsŽtƒ  x8| 	d¡D ]*\}	}
|	j
}x| ¡ D ]}t |¡ q²W qšW q~W d S )Nr   )ÚInputDevice)ÚDefaultSelectorÚ
EVENT_READz/dev/input/event1z/dev/input/event2z/dev/input/event3gš™™™™™É?)Ú	selectorsÚevdevrU   rV   rW   ÚregisterÚEXIT_THREADSr"   r#   ÚselectÚfileobjÚreadrG   Úput)rX   rY   rU   rV   rW   ÚselectorZ	knob_leftZfootswitchesZ
knob_rightÚkeyÚmaskÚdeviceÚeventr   r   r   Úinput_worker  s&    


re   c               C   s   t stjtd�at ¡  d S )N)Útarget)r   Ú	threadingÚThreadre   Ú	hw_threadÚstartr   r   r   r   Úadd_hardware_listeners  s    rk   )r   )r   )-Úcollectionsr   r   rQ   rg   ÚjsonÚstatic_globalsr   ZKNOB_MAXr[   r"   rC   rP   Zswitch_is_downrD   rE   rF   Z	knob_prevZmax_knob_speedÚQueuerG   Úhardware_infor   r   Úloadr   r   r   r#   r$   r%   rJ   rB   rL   r=   r0   r@   rA   r>   rM   r,   rT   re   ri   rk   r   r   r   r   Ú<module>   sP    





1
q