+
     vi   c                   s&   R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ]P                  ! ]
4      t^t^ t^t^t^t^At^t^3t^1t^Vt^St^@t^Bt^2t. ROt. ROtR. ROR. ROR. RO/tR. R^U^.R^R^.R^X^.R	^U^./tRRRRRRRRR	R/tR
 t ! R R]4      t ] t!R# )zliquidctl drivers for sixth generation Asetek liquid coolers.

Copyright Andrew Robertson, Jonas Malaco and contributors
SPDX-License-Identifier: GPL-3.0-or-later
N)
_Base690LcNotSupportedByDevice)clampZshiftZpulseZblinkingalertfixedc                  s@    R P                  \        \        V 4      4      # )z, )ZjoinmapZrepr)Znamess   *@/usr/lib/python3.14/site-packages/liquidctl/driver/asetek_pro.py_quotedr   I   s    99Su%&&    c                   s   a a ] tR t^Ot oRtRRRR^/3RRRR^/3RRR	R^/3.tV 3R
 ltRR/R ltRR ltR t	R t
RR ltR tR tR tR tR t]V 3R l4       tRtVtV ;t# )HydroProzEliquidctl driver for Corsair-branded sixth generation Asetek coolers.i  i  zCorsair Hydro H150i Pro	fan_counti  zCorsair Hydro H115i Proi  zCorsair Hydro H100i Proc                sD   < \         SV `  ! W3/ VB  W0n        R V n        R # N)super__init__
_fan_count_data)selfdeviceZdescriptionr   kwargs	__class__s   &&&&,r   r   ZHydroPro.__init__X   s!    77#
r	   read_lengthNc               s    V P                   P                  \        V4       V P                   P                  \        V4      ^ V # )z>Write `data` and return response of up to `read_length` bytes.)r   Zwrite_WRITE_ENDPOINTZread_READ_ENDPOINT)r   Zdatar   s   &&$r   _postZHydroPro._post]   s6    
 	/40{{<Q{KKr	   c                sp   VP                  4       pV\        9  d   \        R\        \          24      hV P	                  \
        \        P                  V4      .^R7       V P	                  \        .^R7      pRP                  ! \        VR,          4      !  pV P                  P                  4        RVR3.# )zInitialize the device.z%unknown pump mode, should be one of: r   z{}.{}.{}.{}:   i   NzFirmware version )lower_PUMP_MODES
ValueErrorr   r   _CMD_WRITE_PUMP_MODEindex_CMD_READ_FIRMWAREZformatZtupler   release)r   	pump_moder   msgZfirmwares   &&,  r   
initializeZHydroPro.initializee   s     OO%	K'DWkEZD[\]]

(+*;*;I*FGUV
Wjj,-1j= ''s3x9  2.
 	
r	   c                s   V P                  \        .^R7      pV^,          V^,          ^
,          ,           pV P                  4       pV P                  \        .^R7      p\        V^,          ,          pV P                  \
        .^R7      pV^,          ^,          V^,          ,           pV P                  P                  4        RVR3.pV F  w  rVP                  RV R2V	R34       K  	  VRVR3R	VR3.,           # )
zJGet a status report.

Returns a list of `(property, value, unit)` tuples.
r   zLiquid temperatureu   °CzFan z speedZrpmz	Pump moder   z
Pump speed)	r   _CMD_READ_AIO_TEMP_get_fan_speeds_CMD_READ_PUMP_MODEr   _CMD_READ_PUMP_SPEEDr   r"   append)
r   r   r$   Zaio_tempZ
fan_speedsr#   Z
pump_speedZstatusfanspeeds
   &,        r   
get_statusZHydroPro.get_statusx   s     jj,-1j=q6CF2I%))+
jj-.Aj>A'	jj./Qj?!fkSV+
'59:$JCMMT#f-ue<= % )R(:u-
 
 	
r	   c                sH   . p\        V P                  4       F  pV P                  \        V.^R7      pV^ ,          ^A8w  g   V^,          V8w  d   \        P                  RV4       KP  VP                  V^,           V^,          ^,          V^,          ,           34       K  	  V# )zRead the RPM speed of the fans.r   z%failed to get current speed of fan %d)ranger   r   _CMD_READ_FAN_SPEED_LOGGERZwarningr*   )r   Zspeedsir$   s   &   r   r'   ZHydroPro._get_fan_speeds   s     t'A**1151*EC1v~Q1 GKMM1q53q6Q;#a&"89: ( r	   c           	     s   VP                  4       pVP                  4       p\        V4      pV\        9  d*   \        \        P	                  4       !  p\        RV 24      hV\        9  d   \        \         p\        RV 24      hVR8X  d   RpV P                  ^_V^ ,          ^ V^,          ^ V^,          ^ .V^ ,          ,           V^,          ,           V^,          ,           ^R7       V P                  ^^^.^R7       V P                  P                  4        R# V P                  W24      pVR8X  d   V^ ,          V^ ,          .p\        \        P                  ! V!  4      pV P                  \        \        V4      .V,           ^R7       VR8w  dA   \        V,          \        P!                  V4      ,          p	V P                  \"        V	.^R7       V P                  \        V,          ^R7       V P                  P                  4        R# )z*Set the color mode for a specific channel.z)unknown lighting mode, should be one of: z&unknown speed value, should be one of r   r   Nr   )   (   i2   )r   list_COLOR_CHANGE_MODESr   Zkeysr   _COLOR_SPEEDSr   r   r"   _check_color_count_bounds	itertoolsZchain_CMD_WRITE_COLOR_LISTlen_COLOR_SPEEDS_VALUESr    _CMD_WRITE_COLOR_SPEED)
r   channelmodeZcolorsr,   r   ZvalidtempsZ
set_colorsZmagic_values
   &&&&&,    r   	set_colorZHydroPro.set_color   s    zz|f**05578EHPQQ%]+EEeWMNN7?
 !EJJeAheAheAhM#%+AY/17;HI  KJJd|J3KK!//=7?Qi+F)//623


)3v;7*DRS
T7?.t4]5H5H5OPKJJ.<!JL

&t,!
<r	   c                s    \         V,          w  r4\        V4      V8  d   \        V R V R24      h\        V4      V8  d   \        P	                  RV4       VRV pV# )z mode requires z colorsztoo many colors, dropping to %dN)_COLOR_COUNT_BOUNDSr:   r   r0   Zdebug)r   Z
color_listZ	mode_nameZrequiresZmaximums   &&&  r   r7   Z"HydroPro._check_color_count_bounds   s`    /	:z?X%	{/(7KLLz?W$MM;WE#HW-Jr	   c                s   VP                  4       pV P                  V4      pV P                  V^ ^d\        4      pV F  w  rg\        P                  RWV4       K  	  \        \        \        V!  4      w  rV F*  p
V P                  \        V
.V,           V	,           ^ R7       K,  	  V P                  P                  4        R# )z+Set channel to follow a speed duty profile.u8   setting %s PWM point: (%i°C, %i%%), device interpolatedr   N)r   _fan_indexesZ_prepare_profile_MAX_PROFILE_POINTSr0   infor   r4   Zzipr   _CMD_WRITE_FAN_CURVEr   r"   )r   r=   Zprofiler   Zfan_indexesZadjustedZtempdutyr?   Zdutiesr1   s   &&&,       r   set_speed_profileZHydroPro.set_speed_profile   s     --/''0((!S:MN"JDLLSt- # D#x.1AJJ,a0586ArJR  	r	   c                s   VP                  4       p\        V^ ^d4      pV P                  V4       F:  p\        P	                  RV^,           V4       V P                  \        WB.^ R7       K<  	  V P                  P                  4        R# )z"Set channel to a fixed speed duty.zsetting speed for fan %d to %dr   N)	r   r   rB   r0   rD   r   _CMD_WRITE_FAN_SPEEDr   r"   )r   r=   rF   r   r1   s   &&&, r   set_fixed_speedZHydroPro.set_fixed_speed   so     --/T1c"""7+ALL91q5$GJJ,a6BJG , 	r	   c                s,   VP                  R 4      '       d`   \        V4      ^8  d;   \        VR,          4      ^,
          pW P                  8  d   \	        RV 24      hV.# \        V P                  4      # VR8X  d   \        4       h\	        RV 24      h)r+   :r   NNzunknown channel: Zpump)Z
startswithr:   Zintr   r   r.   r   )r   r=   Zchannel_nums   && r   rB   ZHydroPro._fan_indexes   s    e$$7|a!'"+.2//1$'8	%BCC#}$))&((0	:;;r	   c                s    \        4       h)zNot supported by this device.r   )r   r=   r>   Zvaluer   s   &&&&,r   
set_screenZHydroPro.set_screen  s    "$$r	   c                s&   < \         SV `  ! V3/ VB # r   )r   probe)ZclsZhandler   r   s   &&,r   rK   ZHydroPro.probe  s    w}V.v..r	   )r   r   )balanced)normal)__name__Z
__module__Z__qualname__Z__firstlineno____doc__Z_MATCHESr   r   r%   r-   r'   r@   r7   rG   rI   rB   rJ   ZclassmethodrK   Z__static_attributes__Z__classdictcell__Z__classcell__)r   Z__classdict__s   @@r   r
   r
   O   s     O 
2[!4DE	2[!4DE	2[!4DEH
L L
&
: (T
"	<% / / /r	   r
   )ZquietrL   Zperformance)ZslowerrM   Zfaster)iF   r3      )iP   i7   r2   )rP   i
   i   )r   r   )i      )   rQ   )rR   rR   )"rO   r8   ZloggingZliquidctl.driver.asetekr    Zliquidctl.errorr   Zliquidctl.utilr   Z	getLoggerrN   r0   r   Z_READ_MAX_LENGTHr   rC   r&   r/   r!   r(   r)   r9   r<   rE   rH   r   r   r6   r;   r5   rA   r   r
   ZCorsairAsetekProDriver) r	   r   <module>rS      s     . 0  


H
%            2.  
  
   & RdD\dD\tdD\  VVVV '{/z {/~ " r	   