
    ia                        d dl Z ddlmZ e j                  Ze j
                  Ze j                  Ze j                  Z
e j                  Z G d de j                        Z G d de j                        Z G d d	e j                        Z G d
 de j                        Z G d de j                        Z G d de j                        Z G d de j                        Z G d de j                        Z G d de j,                        Z G d de j                        Z G d de j                        Z G d de j                        Zy)    N   )ecodesc                        e Zd ZdZdefdefgZy)Replayz
    Defines scheduling of the force-feedback effect
    @length: duration of the effect
    @delay: delay before effect should start playing
    lengthdelayN__name__
__module____qualname____doc___u16_fields_     R/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/evdev/ff.pyr   r      s     
4	$Hr   r   c                        e Zd ZdZdefdefgZy)Triggerz
    Defines what triggers the force-feedback effect
    @button: number of the button triggering the effect
    @interval: controls how soon the effect can be re-triggered
    buttonintervalNr	   r   r   r   r   r      s      
4	THr   r   c                   ,    e Zd ZdZdefdefdefdefgZy)Envelopea  
    Generic force-feedback effect envelope
    @attack_length: duration of the attack (ms)
    @attack_level: level at the beginning of the attack
    @fade_length: duration of fade (ms)
    @fade_level: level at the end of fade

    The @attack_level and @fade_level are absolute values; when applying
    envelope force-feedback core will convert to positive/negative
    value based on polarity of the default level of the effect.
    Valid range for the attack and fade levels is 0x0000 - 0x7fff
    attack_lengthattack_levelfade_length
fade_levelNr	   r   r   r   r   r   &   s0     
$			t	Hr   r   c                        e Zd ZdZdefdefgZy)Constantz
    Defines parameters of a constant force-feedback effect
    @level: strength of the effect; may be negative
    @envelope: envelope data
    levelff_envelopeNr
   r   r   r   _s16r   r   r   r   r   r   r   <   s     
$	!Hr   r   c                   &    e Zd ZdZdefdefdefgZy)Rampz
    Defines parameters of a ramp force-feedback effect
    @start_level: beginning strength of the effect; may be negative
    @end_level: final strength of the effect; may be negative
    @envelope: envelope data
    start_level	end_levelr    Nr!   r   r   r   r$   r$   I   s(     
	d	!Hr   r$   c                   8    e Zd ZdZdefdefdefdefdefdefgZy)		Conditiona  
    Defines a spring or friction force-feedback effect
    @right_saturation: maximum level when joystick moved all way to the right
    @left_saturation: same for the left side
    @right_coeff: controls how fast the force grows when the joystick moves to the right
    @left_coeff: same for the left side
    @deadband: size of the dead zone, where no force is produced
    @center: position of the dead zone
    right_saturationleft_saturationright_coeff
left_coeffdeadbandcenterN)r
   r   r   r   r   r"   r   r   r   r   r(   r(   X   s@     
T"	D!		t	T	4Hr   r(   c                   d    e Zd ZdZdefdefdefdefdefdefdefd	 ej                  e      fgZ
y
)Periodica|  
    Defines parameters of a periodic force-feedback effect
    @waveform: kind of the effect (wave)
    @period: period of the wave (ms)
    @magnitude: peak value
    @offset: mean value of the wave (roughly)
    @phase: 'horizontal' shift
    @envelope: envelope data
    @custom_len: number of samples (FF_CUSTOM only)
    @custom_data: buffer of samples (FF_CUSTOM only)
    waveformperiod	magnitudeoffsetphaseenvelope
custom_lencustom_dataN)r
   r   r   r   r   r"   r   _u32ctypesPOINTERr   r   r   r   r0   r0   m   sZ    
 
T	4	d	4	$	X	t	t,-	Hr   r0   c                        e Zd ZdZdefdefgZy)Rumblea:  
    Defines parameters of a periodic force-feedback effect
    @strong_magnitude: magnitude of the heavy motor
    @weak_magnitude: magnitude of the light one

    Some rumble pads have two motors of different weight. Strong_magnitude
    represents the magnitude of the vibration generated by the heavy one.
    strong_magnitudeweak_magnitudeNr	   r   r   r   r=   r=      s      
T"	4 Hr   r=   c                   4    e Zd Zdefdefdefdedz  fdefgZy)
EffectTypeff_constant_effectff_ramp_effectff_periodic_effectff_condition_effect   ff_rumble_effectN)	r
   r   r   r   r$   r0   r(   r=   r   r   r   r   rA   rA      s5    	x(	4 	x(		A.	V$Hr   rA   c                   4    e Zd ZdefdefdefdefdefdefgZy)Effecttypeid	direction
ff_trigger	ff_replayuN)	r
   r   r   r   r"   r   r   rA   r   r   r   r   rI   rI      s7    		t	d	w	f	jHr   rI   c                   (    e Zd ZdefdefdefdefgZy)UInputUpload
request_idretvaleffectoldN)r
   r   r   r9   _s32rI   r   r   r   r   rQ   rQ      s(    	t	4	6		Hr   rQ   c                   "    e Zd ZdefdefdefgZy)UInputEraserR   rS   	effect_idN)r
   r   r   r9   rV   r   r   r   r   rX   rX      s!    	t	4	dHr   rX   )r:    r   c_uint8_u8c_uint16r   c_uint32r9   c_int16r"   c_int32rV   	Structurer   r   r   r   r$   r(   r0   r=   UnionrA   rI   rQ   rX   r   r   r   <module>rc      s    nn~~~~
V 

f 
v ,
v 
6    *v 2V   V 6## &"" r   