§
    bíhh¦)  ã                   ó¢  — 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g d¢Zd ad ad adddœZd	Z ej        ¦   «         Zi Z	  ed
¦  «        5 Z ej        e¦  «        Zddd¦  «         n# 1 swxY w Y   n#  dddœZY nxY wed         Zdd„Zdd„Zd„ Zd„ Z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„ Z(d„ Z)d„ Z*da+d„ Z,dS )é    )ÚdefaultdictN)ÚIS_REMOTE_TESTéÿ   F)FFFé   )ÚleftÚrighté   z/pedal_state/hardware_info.jsoné	   Údigit)ÚrevisionÚpedalr   ç{®Gáz„?c                 óº  — t           dk     r‘t          dd¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        | ¦  «         t          dd¦  «        5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t          dd¦  «        5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né
   ú/sys/class/gpio/gpio130/valueÚwÚ1Ú0©ÚPEDAL_VERSIONÚopenÚwriteÚtimeÚsleep©ÚtÚfs     ú!/home/debian/UI/pedal_hardware.pyÚ	effect_onr   *   s’  € õ �rÒÐÝÐ1°3Ñ7Ô7ð 	¸1Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åŒ
�1‰ŒˆÝÐ1°3Ñ7Ô7ð 	¸1Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	õ Ð1°3Ñ7Ô7ð 	¸1Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó3   œ>¾AÁAÁ-BÂBÂBÂ-CÃCÃCc                 óº  — t           dk     r‘t          dd¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        | ¦  «         t          dd¦  «        5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t          dd¦  «        5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   z/sys/class/gpio/gpio131/valuer   r   r   r   r   r   s     r   Ú
effect_offr"   :   s�  € å�rÒÐÝÐ1°3Ñ7Ô7ð 	¸1Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åŒ
�1‰ŒˆÝÐ1°3Ñ7Ô7ð 	¸1Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	õ Ð1°3Ñ7Ô7ð 	¸1Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	r    c                  óŽ  — 	 t          dd¦  «        5 } |                      t          d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          dd¦  «        5 } |                      t          d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   n# t          $ r Y nw xY wt	          j        d¦  «         t          dd¦  «        5 } |                      d¦  «         d d d ¦  «         n# 1 swxY w Y   t          dd¦  «        5 } |                      d¦  «         d d d ¦  «         n# 1 swxY w Y   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   s    r   Úsetup_bypassr*   G   s#  € ðÝÐ*¨CÑ0Ô0ð 	°AØ�GŠG•C˜‘H”HÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åÐ*¨CÑ0Ô0ð 	°AØ�GŠG•C˜‘H”HÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øøåð ð ð Øˆðøøøå„Jˆs�O„O€OÝ	Ð1°3Ñ	7Ô	7ð ¸1Ø	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Ð1°3Ñ	7Ô	7ð ¸1Ø	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð €LÝ�K„K€K€K€Ks{   ‚B ’#AµB ÁAÁB ÁAÁ	B Á#BÁ?B ÂBÂB ÂBÂB Â
B$Â#B$ÃC-Ã-C1Ã4C1ÄD*Ä*D.Ä1D.c                  ó   — d S ©N© r-   ó    r   Úset_master_tempor/   x   ó   € Ø€Dr.   c                  ó   — d S r,   r-   r-   r.   r   Úset_master_time_sigr2   {   r0   r.   T©é   é0   é.   é   g
×£p=
§?Ú c                 ó.   — t          | |z
  ¦  «        dk     S )Ng{®Gáz”?)Úabs)Úa_tÚb_ts     r   Úbutton_is_togetherr=   �   s   € Ýˆs�S‰y‰>Œ>˜DÒ Ð r.   c                  ó&  — 	 	 t           rÛt          j        ¦   «         t           z
  t          k    r·d a dat
          dk    r1t          t          t
                   k    rt          dt          ¦  «         nwt
          dk    r1t          t          t
                   k    rt          dt          ¦  «         n;t
          dk    r0t          t          t
                   k    rt          dt          ¦  «         t                               d¬	¦  «        } | j        d
v rPt          | j                 dk    r:| j        t          | j        <   d| j        z
  t"          | j        <   dt          | j        <   t           r¼| j        dv rU| j        t          | j                 k    r:t
          dv r1d a dada|                      ¦   «         a	t          dt          ¦  «         �nq| j        dv rS| j        t          | j                 k    r8t
          dv r/d a da|                      ¦   «         adat          dt          ¦  «         �n| j        dk    rQ| j        t          | j                 k    r6t          j        ¦   «         a |                      ¦   «         a	| j        a| j        an·| j        dk    rQ| j        t          | j                 k    r6t          j        ¦   «         a |                      ¦   «         a
| j        a| j        an[| j        dk    rP| j        t          | j                 k    r5t          j        ¦   «         a |                      ¦   «         a| j        a| j        a| j        dk    ry| j        t"          | j                 k    r^t          r"t$          dk    rt          dt          ¦  «         �ndt           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          ¦  «         nßt          r!t$          dk    rt          dt          ¦  «         n·t           rd a t          dt          ¦  «         t          dt          ¦  «         nƒ| j        dk    rx| j        t"          | j                 k    r]d a t          r!t$          dk    rt          dt          ¦  «         n3t           rd a t          dt          ¦  «         t          dt          ¦  «         | j        dk    rŽt*          dk     rA| j        dk    rt-          d| j        ¦  «         | j        dk    rt-          d| j        ¦  «         nB| j        dk    rt-          d| j         ¦  «         | j        dk    rt-          d| j         ¦  «         �Œz# t.          j        $ r Y d S w xY w)NTFr4   Útap_downr5   Ú	step_downr6   Úbypass_down)Úblockr3   r7   )r4   r5   Útap_stepÚtap_step_down)r6   r5   Ústep_bypassÚstep_bypass_downÚtap_step_upÚtap_upÚstep_bypass_upÚstep_upÚ	bypass_upé   r   r   )Úprev_tr   Úperf_counterÚsame_time_delayÚ	was_multiÚ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)Úes    r   Úprocess_inputre   “   s  € ðlð`	AÝð 
H�4Ô,Ñ.Ô.µÑ7½?ÒJÐJà�Ø!�	å˜R’<�<¥G­{½6Ô/BÒ$BÐ$BÝ! *Õ.@ÑAÔAÐAÐAÝ˜r’\�\¥gµ½VÔ1DÒ&DÐ&DÝ! +Õ/BÑCÔCÐCÐCÝ˜r’\�\¥gµ½VÔ1DÒ&DÐ&DÝ! -Õ1FÑGÔGÐGõ —’ e�Ñ,Ô,ˆAØŒv˜Ð%Ð%­-¸¼Ô*?À4Ò*GÐ*Gà&'¤g•˜AœFÑ#Ø$%¨¬¡K•	˜!œ&Ñ!Ø(-•˜aœfÑ%õ ð &à”6˜XÐ%Ð%¨!¬'µ[ÀÄÔ5HÒ*HÐ*HÍVÐX`ÐM`ÐM`Ø!�FØ $�IØ",�KØ)*¯ª©¬Ð&Ý! /Õ3EÑFÔFÐFÑFØ”V˜xÐ'Ð'¨A¬Gµ{À1Ä6Ô7JÒ,JÐ,JÍvÐYaÐOaÐOaØ!�FØ $�IØ,-¯KªK©M¬MÐ)Ø"/�KÝ!Ð"4Õ6KÑLÔLÐLùà”6˜R’<�< A¤G­{¸1¼6Ô/BÒ$BÐ$BÝ!Ô.Ñ0Ô0�FØ)*¯ª©¬Ð&ØœV�FØœg�G�GØ”V˜r’\�\ a¤gµ¸Q¼VÔ1DÒ&DÐ&DÝ!Ô.Ñ0Ô0�FØ*+¯+ª+©-¬-Ð'ØœV�FØœg�G�GØ”V˜r’\�\ a¤gµ¸Q¼VÔ1DÒ&DÐ&DÝ!Ô.Ñ0Ô0�FØ,-¯KªK©M¬MÐ)ØœV�FØœg�Gð
 Œv˜Š|ˆ| ¤­9°Q´VÔ+<Ò <Ð <Ýð @¥°
Ò!:Ð!:Ý! -Õ1CÑDÔDÐDÑDåð FØ!%˜Ý% jÕ2DÑEÔEÐEÝ! (Õ,>Ñ?Ô?Ð?Ñ?Ø”˜2’� !¤'­Y°q´vÔ->Ò">Ð">Ø�Ýð B¥°
Ò!:Ð!:Ý! -Õ1DÑEÔEÐEÐEÝð B¥;°-Ò#?Ð#?Ý!Ð"2Õ4GÑHÔHÐHÐHåð HØ!%˜Ý% kÕ3FÑGÔGÐGÝ! )Õ-@ÑAÔAÐAÐAØ”˜2’� !¤'­Y°q´vÔ->Ò">Ð">Ø�Ýð F¥°Ò!=Ð!=Ý!Ð"2Õ4IÑJÔJÐJÐJåð LØ!%˜Ý% mÕ5JÑKÔKÐKÝ! +Õ/DÑEÔEÐEàŒv˜Š{ˆ{Ý  2Ò%Ð%Ø”v ’{�{Ý/°°a´gÑ>Ô>Ð>Ø”v ’{�{Ý/°°q´wÑ?Ô?Ð?øà”v ’{�{Ý/°°q´w°hÑ?Ô?Ð?Ø”v ’{�{Ý/°¸¼°xÑ@Ô@Ð@ñA`	AøõB Œ;ð ð ð Øˆˆðøøøs   ‚U;U= Õ=VÖVc                  ó\  — dd l } dd l}ddlm} ddl m}m} |                      ¦   «         }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     || j        ¦  «         |                     || j        ¦  «         |                     || j        ¦  «         	 t          rd S t          st          ¦   «          | 	                    d¦  «        D ]=\  }	}
|	j
        }|                     ¦   «         D ]}t                               |¦  «         ŒŒ>Œr)	Nr   )ÚInputDevice)ÚDefaultSelectorÚ
EVENT_READz/dev/input/event1z/dev/input/event2z/dev/input/event3Tgš™™™™™É?)Ú	selectorsÚevdevrg   rh   ri   ÚregisterÚEXIT_THREADSr)   r*   ÚselectÚfileobjÚreadrX   Úput)rj   rk   rg   rh   ri   ÚselectorÚ	knob_leftÚfootswitchesÚ
knob_rightÚkeyÚmaskÚdeviceÚevents                r   Úinput_workerrz     s[  € ØÐÐÐÐÐÐÐØ!Ð!Ð!Ð!Ð!Ð!Ø5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø×(Ò(Ñ*Ô*€HØ×!Ò!Ð"5Ñ6Ô6€IØ×$Ò$Ð%8Ñ9Ô9€LØ×"Ò"Ð#6Ñ7Ô7€Jà×Ò�i Ô!5Ñ6Ô6Ð6Ø×Ò�j )Ô"6Ñ7Ô7Ð7Ø×Ò�l IÔ$8Ñ9Ô9Ð9ð
'Ýð 	ØˆEÝð 	Ý‰NŒNˆNà!Ÿš¨Ñ-Ô-ð 	'ð 	'‰IˆC�Ø”[ˆFØŸš™œð 'ð '�å—’ Ñ&Ô&Ð&Ð&ð'ð
'r.   c                  ó~   — t           s5t          j        t          ¬¦  «        at                               ¦   «          d S d S )N)Útarget)r   Ú	threadingÚThreadrz   Ú	hw_threadÚstartr-   r.   r   Úadd_hardware_listenersr�     s?   € õ
 ð åÔ$­LÐ9Ñ9Ô9ˆ	Ý�ŠÑÔÐÐÐðð r.   )r   )-Úcollectionsr   r   rb   r}   ÚjsonÚstatic_globalsr   ÚKNOB_MAXrm   r)   rT   ra   Úswitch_is_downrU   rV   rW   Ú	knob_prevÚmax_knob_speedÚQueuerX   Úhardware_infor   r   Úloadr   r   r"   r*   r/   r2   r[   rS   r]   rO   rM   rQ   rR   rP   r^   r=   re   rz   r   r�   r-   r.   r   ú<module>rŒ      sH  ðà #Ð #Ð #Ð #Ð #Ð #à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #ð *Ð )Ð )Ð )Ð )Ð )à€Ø€Ø€ð €ØÐ Ø&Ð&Ð&€ØÐ ØÐ ØÐ à˜sÐ
#Ð
#€	Ø€àˆeŒk‰mŒm€Ø€ð6Ø	ˆÐ/Ñ	0Ô	0ð %°AØ!˜œ	 !™œˆð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %øøð6Ø!"¨WÐ5Ð5€M€M€Møøøà˜jÔ)€ðð ð ð ð 
ð 
ð 
ð 
ðð ð ðb	ð 	ð 	ð	ð 	ð 	ð ˜t¨Ð.Ð.€Ø˜! Ð#Ð#€Ø˜˜qÐ!Ð!€	Ø€à	€Ø	
€Ø
€Ø€	Ø€ð!ð !ð !ðoð oð oðb'ð 'ð 'ð0 €	ðð ð ð ð s0   Á
A> ÁA2Á&A> Á2A6Á6A> Á9A6Á:A> Á>B