argbColors/SPECIFICATION.md
2025-01-23 02:08:56 +03:00

255 lines
9.3 KiB
Markdown
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Specification of the 048d:5711 Integrated Technology Express, Inc. GIGABYTE Device
#### Structure description
**USB control transfer used**
(and usbhid 🤓)
Endpoint: **0x00**, Direction: **OUT**
* bmRequestType: **0x21**
* bRequest: **9**
* wValue: **0x03cc**
* wIndex: **1 (0x0001)**
* wLength: **64**
* Data fragment: as described below. Trailing zeroes trimmed in this document however must be defined within actual data interaction. Therefore 'wLength: 64' is imperative'.
In libusb semantic:
```
unsigned char message[64] = { 0XCC, 0X60, }; // example 'cc60'
int returned_value = libusb_control_transfer(dev_handle, 0x21, 9, 0x03cc, 1, message, 64, TIMEOUT);
```
Endpoint: **0x80**, Direction: **IN**
* bmRequestType: **0xa1**
* bRequest: **1**
* wValue: **0x03cc**
* wIndex: **1 (0x0001)**
* wLength: **64**
In libusb semantic:
```
unsigned char buf[64] = {};
int returned_value = libusb_control_transfer(dev_handle, 0xa1, 1, 0x03cc, 1, buf, sizeof(buf), TIMEOUT);
```
**NOTE:** input values below marked with prefix "INPUT << "
----
Interaction could be split on three phases: Application startup, command transmission, ending
### Application initial flow:
```
cc60 ↓↓↓↓↓↓↓↓ version in hex
INPUT << cc01000100001802000000034954353731312d47494741425954452056302e302e32342e320000000000000002000100020001000001020000c01157
cc60 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ascii text: 'IT5711-GIGABYTE V0.0.24.2'
INPUT << cc01000100001802000000034954353731312d47494741425954452056302e302e32342e320000000000000002000100020001000001020000c01157
cc34
cc48
INPUT << cc
cc61
in? << cc000000020001000200010002000100020001
cc3c
cc3e
INPUT << cc
cc34
cc3d
cc3f
INPUT << cc
cc34
cc38
```
### Commands
NOTE: Переходы между изменениями цвета в sync режимах идут без следующих пред-последовательностей. Но переход от отдельных к синхронизированному - через стандартные ппоследовательности
There are two types of commands:
* syncronized - applies same setting to everything
* separate - adjusts settings separately
***Commands sent before actual directive. Structure is always the same***
```
cc20
cc21
cc22
cc23
cc24
cc25
cc26
cc27
cc90
cc91
cc92
cc28ff07
```
---
#### Turn off backlight - Applies to everything!
```
cc20ff070000000000000001ff
cc28ff07
```
EXAMPLE:
`cc20ff070000000000000001ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`
---
#### Turn off backlight (user selects: channel)
```
cc2204000000000000000001ff ← 1 |‾‾|‾‾‾‾‾‾‾‾‾‾‾1|
cc2410000000000000000001ff ← 2 | 6| |‾‾| |||| |
cc2520000000000000000001ff ← 3 | | ‾‾ |||| |
cc2640000000000000000001ff ← 4 |__| |‾‾‾| |
cc2780000000000000000001ff ← 5 | |_4_| |
cc9100020000000000000001ff ← 6 |___2_3_5_______|
cc28ff07
```
EXAMPLE:
`cc2204000000000000000001ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`
---
#### Wave 1 - Applies to everything!
```
cc20ff070000000000000001ff ← turns off backlight
cc28ff07
cc220000000000000000000964000000000000000000260200000000000007
cc2804
```
EXAMPLE:
`cc220000000000000000000964000000000000000000260200000000000007000000000000000000000000000000000000000000000000000000000000000000`
---
#### Wave 2 - Applies to everything!
```
cc20ff070000000000000001ff ← turns off backlight
cc28ff07
cc220000000000000000000a640000000000000000007d0000000000000020
cc2804
```
EXAMPLE:
`cc220000000000000000000a640000000000000000007d0000000000000020000000000000000000000000000000000000000000000000000000000000000000`
---
#### Individually set static color (user selects: color, brightness)
```
↓↓↓↓↓↓ → Color as RGB
cc2204000000000000000001__00______
cc2410000000000000000001__00______
cc2520000000000000000001__00______
cc2640000000000000000001__00______
cc2780000000000000000001__00______
cc9100020000000000000001__00______
cc28ff07 ↑↑
ff → Brightness max
b3 -1
80 -2
4d -3
1a -4
```
EXAMPLE:
`cc2204000000000000000001ff00ffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`
---
#### Synchronized static color (user selects: color) - Applies to everything!
```
↓↓↓↓↓↓ - Color as RGB
cc20ff070000000000000001ff00______
cc28ff07
```
EXAMPLE:
`cc20ff070000000000000001ff00ffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`
---
#### Impulse (user selects: color, intensity)
```
↓↓↓↓↓↓ - Color as RGB
cc22040000000000000000026400______0000000000____________00000001
cc24100000000000000000026400______0000000000____________00000001
cc25200000000000000000026400______0000000000____________00000001
cc26400000000000000000026400______0000000000____________00000001
cc27800000000000000000026400______0000000000____________00000001
cc91000200000000000000026400______0000000000____________00000001
cc28ff07 ↑↑↑↑↑↑↑↑↑↑↑↑
f401f401fa00 → Intensity max
bc02bc025e01 - 1
84038403c201 - 2
b004b004f401 - 3
400640062003 - 4
```
EXAMPLE:
`cc220400000000000000000264000040fe0000000000b004b004f401000000010000000000000000000000000000000000000000000000000000000000000000`
---
#### Flash (user selects: intensity, color and brightness)
```
↓↓↓↓↓↓ - Color RGB or BGR
cc2204000000000000000003__00______000000000064006400____0000000101
cc2410000000000000000003__00______000000000064006400____0000000101
cc2520000000000000000003__00______000000000064006400____0000000101
cc2640000000000000000003__00______000000000064006400____0000000101
cc2780000000000000000003__00______000000000064006400____0000000101
cc9100020000000000000003__00______000000000064006400____0000000101
cc28ff07 ↑↑ ↑↑↑↑
ff → Intensity max 2003 → Brightness max
b3 -1 b004 -1
80 -2 4006 -2
4d -3 d007 -3
1a -4 6009 -4
```
EXAMPLE:
`cc2204000000000000000003ff00ffffff0000000000640064002003000000010100000000000000000000000000000000000000000000000000000000000000`
---
#### Flash-double (user selects: brightness, color and intensity)
```
↓↓↓↓↓↓ - Color RGB
cc2204000000000000000003__00______000000000064006400____0000000102
cc2410000000000000000003__00______000000000064006400____0000000102
cc2520000000000000000003__00______000000000064006400____0000000102
cc2640000000000000000003__00______000000000064006400____0000000102
cc2780000000000000000003__00______000000000064006400____0000000102
cc9100020000000000000003__00______000000000064006400____0000000102
cc28ff07 ↑↑ ↑↑↑↑
ff → Brightness max e803 → Intensity max
b3 -1 7805 -1
80 -2 0807 -2
4d -3 9808 -3
1a -4 280a -4
```
EXAMPLE:
`cc2204000000000000000003ff00fd00fe000000000064006400e803000000010200000000000000000000000000000000000000000000000000000000000000`
---
#### Cycle (user selects: intensive and brightness)
```
↓↓↓↓↓↓- Old values; doesn't make any difference
cc2204000000000000000004__00fd00fe0000000000________0000000007
cc2410000000000000000004__00fd00fe0000000000________0000000007
cc2520000000000000000004__00fd00fe0000000000________0000000007
cc2640000000000000000004__00fd00fe0000000000________0000000007
cc2780000000000000000004__00fd00fe0000000000________0000000007
cc9100020000000000000004__00fd00fe0000000000________0000000007
cc28ff07 ↑↑ ↑↑↑↑↑↑↑↑
ff → Bright. max 9001c800 → Intensive max
b3 -1 58029001 -1
80 -2 2602c201 -2
4d -3 5203ee02 -3
1a -4 7805b004 -4
```
EXAMPLE:
`cc91000200000000000000041a00f0f0f000000000007805b0040000000007000000000000000000000000000000000000000000000000000000000000000000`
---
### Termination
[repeat last setup request for some reason]
```
cc4701
```