+
     vi32  c                   s   R t ^ RIt^ RIHt ^ RIHt ^ RIHt ]P                  ! ]	4      t
^At^At^t^tR]^@.R]^5^ ^ ^ ^ .R]^5^ ^ ^ ^.R]^5.R	]^6^ .R
]^5^ ^ ^^.R]^?^U^ ^ .R]^8^^.R]^8^ ^.R]^8^^ .R]^8^ ^ .R]^5^^ ^ ^.R]^.R]^./t]! R. R0O4      t]! R^^ ^ ^ 4      ]! R^^ ^^4      ]! R^^^^4      ]! R^^^^4      3 U u/ uF  p V P"                  V bK  	  up t]! R. R1O4      t]! R^ RR7      ]! R^RR7      ]! R^RR7      ]! R^RR7      ]! R ^RR7      ]! R!^RR7      ]! R"^RR7      ]! R#^RR7      ]! R$^RR7      ]! R%^	RR7      ]! R&^
RR7      ]! R'^RR7      ]! R(^RR7      ]! R)^RR7      ]! R*^RR7      ]! R+^RR7      ]! R,^RR7      ]! R-^RR7      3 Uu/ uF  pVP"                  VbK  	  upt ! R. R/]4      tR# u up i u upi )2a  liquidctl driver for ASUS Aura LED USB controllers.

Supported controllers:

- ASUS Aura LED Controller: idVendor=0x0b05, idProduct=0x19af

This controller is found on ASUS ProArt Z690-Creator WiFi and other boards

Additional controllers (requires user testing and feedback):

- idVendor=0x0B05, idProduct=0x1939
- idVendor=0x0B05, idProduct=0x18F3

These controllers have not been sufficiently tested. Users are asked to test and
report issues.

Limitations:

This controller only supports 'effect' modes that are managed entirely by the
controller. The other mode is 'direct' that is managed by software, but this
requires the continuous transmission of command codes to control dynamic lighting
effects (i.e. all lighting modes in which colors either change or the LED
blinks/fades/pulses).

In 'effect' mode, the software simply issues a  'fire-and-forget' command to the
controller, which subsequently manages the lighting effect on its own. There are
some limitations in 'effect' mode, as follows:

- Dynamic color modes (spectrum, rainbow, etc.) cannot be applied to individual
  color channels, but apply to all channels

- Static color modes (static) can be applied to individual color channels

- Off mode turns all channels off regardless of which channel is selected. However,
  individual channels can subsequently be enabled, while others will remain off.
  This applies only to static modes.


Acknowledgements:

- Aura Addressable Header Controller (for list of color mode names)
  https://gitlab.com/cneil02/aura-addressable-header-controller

- OpenRGB Project (for list of color mode names)
  https://github.com/CalcProgrammer1/OpenRGB

- @dehjomz for discovering color modes 0x10, 0x11, 0x12, 0x13

Aura LED control codes were independently obtained from USB traffic captured using
Wireshark on Windows. This Aura LED controller uses very different control codes
from previous Aura LED controllers.

Copyright CaseySJ and contributors
SPDX-License-Identifier: GPL-3.0-or-later
N)
namedtuple)UsbHidDriverNotSupportedByDevicedirect
end_direct
end_effect
start_seq1
start_seq2end_seq1end_seq2
reset_seq1
reset_seq2channel_off_pre1channel_off_pre2channel_off_prefixfirmwareconfig_ColorChannelZled1Zled2Zled3Zled4
_ColorModeZoffF)takes_colorZstaticTZ	breathingZflashingZspectrum_cycleZrainbowZspectrum_cycle_breathingZ
chase_fadeZspectrum_cycle_chase_fadeZchaseZspectrum_cycle_chaseZspectrum_cycle_waveZchase_rainbow_pulseZrainbow_flickerZgentle_transitionZwave_propagationZwave_propagation_pauseZ	red_pulsec                   s   a  ] tR t^t o RtRRR/ 3RRR/ 3RRR/ 3.tR tR tRR	 ltR
 t	R t
R tR tR tR tR tR tRtV tR# )AuraLeda  
liquidctl driver for ASUS Aura LED USB controllers.
This driver only supports 'effect' mode, hence no speed/color channels

Devices 0x1939 and 0x18F3 are not fully supported at this time; users are asked
to experiment with this driver and provide feedback
i  i  zASUS Aura LED Controlleri9  i  c           
     s   V P                   P                  4        V P                  \        R,          4       . pV P                   P	                  \
        4      pV^,          ^8X  g   Q R4       hVP                  RRP                  \        \        VR,          4      4      R34       V P                  \        R,          4        V# )zInitialize the device.
Returns a list of `(property, value, unit)` tuples, containing the
firmware version and other useful information provided by the hardware.
r   zUnexpected reply for firmwarezFirmware version :i   i   Nr   )
deviceclear_enqueued_reports_write_FUNCTION_CODEread_READ_LENGTHappendjoinZmapZchr)selfkwargsstatusdatas   &,  >/usr/lib/python3.14/site-packages/liquidctl/driver/aura_led.py
initializeZAuraLed.initialize   s    
 	**,N:./ {{-Aw$? ??)2773sDJ3G+H"MN 	N<01	     c           
     s   . pV P                   P                  4        V P                  \        R,          4       V P                   P	                  \
        4      pV^,          ^08X  g   Q R4       h^pW4^,           ,          pW4^,           ,          pVP                  R\        V4      ,           RR34       VP                  R\        V4      ,           RR34       VP                  RR4      '       dk   ^p^pWG,           \
        8  dV   VP                  R\        V4      ,           R	P                  R
 W4WG,             4       4      R34       WG,          pV^,          pKf  V# )zGet a status report.r   zUnexpected reply for configzARGB channels: r   z RGB channels: ZdebugFzDevice Config: z, c              3   sD   "   T F  pR P                  V4      x  K  	  R# 5i)z0x{:02x}N)Zformat)Z.0Zx   & r#   Z	<genexpr>Z%AuraLed.get_status.<locals>.<genexpr>   s"      ":_QJ--a00:_s    )
r   r   r   r   r   r   r   ZstrZgetr   )	r   r    r!   r"   Zstart_indexZargb_channelsZrgb_channelsZnumZcounts	   &,       r#   
get_statusZAuraLed.get_status   s,   **,N8,-{{-Aw$= ==1_-!O,(3}+==r2FG(3|+<<b"EF::gu%%CE#l2)CJ6		 ":>[M^:_"   "
r%   c                s   \        V4      p\        V,          P                  '       d    \        V4      w  rgpWgV3p	MRp	VR8w  d6   V\
        9  d+   Rp
\
         F  pWR,           ,          p
K  	  \        V
4      Rh VR8X  d   \
        P                  4       pM\
        V,          3p. p V Fk  pV P                  VP                  W)4      pVP                  V^ ,          4       VP                  V^,          4       VP                  \        R,          4       Km  	  V F  pV P                  V4       K  	  V P                  4        R#    \	        R4      Rh; i)u   Set the color mode for a specific channel.

`colors` should be an iterable of zero or one `[red, green, blue]`
triples, where each red/green/blue component is a value in the range
0–255.
z one color required for this modeNZsynczvalid channels are Z r
       r)   r)   )Ziter_COLOR_MODESr   ZnextZ
ValueError_COLOR_CHANNELSZKeyErrorZvaluesconstruct_color_commandsnamer   r   r   end_color_sequence)r   channelmodeZcolorsZspeedr    ZrZgZbsingle_colorZmessageZchanZselected_channelsZfull_cmd_seqZ	cmd_tupleZcmd_seqs   &&&&&,          r#   	set_colorZAuraLed.set_color   sG    f)))Pv,a !ay %Lf!?+G'#:% (7#-	 f / 6 6 8!0!9 ;	 &D55diiTI	!-	!-z :; & $GKK  $!qP #CE4Os   E Ec                    \        4       hzNot supported by this device.r   )r   r/   Zprofiler       &&&,r#   set_speed_profileZAuraLed.set_speed_profile      "$$r%   c                r3   r4   r   )r   r/   Zdutyr    r5   r#   set_fixed_speedZAuraLed.set_fixed_speed"  r7   r%   c                s    \        \        4       F;  pV P                  \        R,          4       V P                  \        R,          4       K=  	  R# )zReset all LED channels.r   r   N)range_RESET_CHANNEL_ITERATIONSr   r   )r   ir&   r#   reset_all_channelsZAuraLed.reset_all_channels&  s4    01AKK|45KK|45 2r%   c                s   V P                  \        R,          4       \        \        4       F;  pV P                  \        R,          4       V P                  \        R,          4       K=  	  V P                  \        R,          4       R FO  pV P                  \        R,          \        V,          P
                  ^V^d8H  ,          ,          V^.,           4       KQ  	  V P                  4        V P                  \        R,          4       R# )	z0
Uses direct mode to disable a specific channel
r   r   r   r   r   r   N)r)   i   i(   i<   iP   id   )r   r   r9   r:   r+   direct_channel_idr.   )r   r/   r;      && r#   channel_offZAuraLed.channel_off,  s     	N<0101AKK'9:;KK'9:; 2 	N#789 *AKKx("7+==cARSUVXZ[\ *
 	!N<01r%   c                sL   \         V,          p\        V,          P                  p\        V,          P                  p\        V,          P                  p\
        R,          V^ ^ VP                  .,           p\
        R,          V^ .,           . ROV,          ,           pW,          pWx3# )z4
Create command strings for specified color channel
r   r   r(   )r*   r+   channel_type
channel_id
rgb_offsetr   value)	r   r/   r0   r1   r@   rA   rB   Zdata1Zdata2s	   &&&&     r#   r,   Z AuraLed.construct_color_commandsA  s     D!&w/<<$W-88
$W-88
|,dD$**/UU|,
D/AAIPZDZZ~r%   c                sv    V P                  \        R ,          4       V P                  \        R,          4       R# )r	   r
   N)r   r   )r   s   &r#   r.   ZAuraLed.end_color_sequenceN  s$    N:./N:./r%   c                s    ^ .\         \        V4      ,
          ,          pV P                  P                  W,           4       R# )r)   N)_WRITE_LENGTHZlenr   Zwrite)r   r"   Zpaddingr>   r#   r   ZAuraLed._writeR  s+    %=3t945$.)r%   c                r3   r4   r   )r   r/   r0   rC   r    s   &&&&,r#   
set_screenZAuraLed.set_screenV  r7   r%   ) N)Znormal)__name__Z
__module__Z__qualname__Z__firstlineno____doc__Z_MATCHESr$   r'   r2   r6   r8   r<   r?   r,   r.   r   rE   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r#   r   r      sz      
3R8	3R8	3R8H!FBD"L%%62*0*% %r%   r   )r-   rA   r=   r@   rB   )r-   rC   r   )rG   ZloggingZcollectionsr    Zliquidctl.driver.usbr   Zliquidctl.errorr   Z	getLoggerrF   Z_LOGGERr   rD   r:   Z	_CMD_CODEr   r   r-   r+   r   r*   r   )r/   r0   s   00r#   <module>rH      s  6p  " - 0


H
% 	 y$9dD$d;9dD$d;9d#9dD)D$dD9D$d39dD$/9dD$/D$5D$59dD$dCD!y$( ^ 	fdD$4fdD$5fdD$5fdD$5	 LL' &FG

 	5$E28Tt4;$7:t6#Tu=9d6-tG<48.%H7Dd3)4UC($EB($EB$d>&%@%t?+TuE;%8% 	IItO2S%l S%Ks   G G