forked from gentilkiwi/mimikatz
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkull_m_busylight.h
139 lines (123 loc) · 5.01 KB
/
kull_m_busylight.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/* Benjamin DELPY `gentilkiwi`
https://blog.gentilkiwi.com
Licence : https://creativecommons.org/licenses/by/4.0/
*/
#pragma once
#include "globals.h"
#include "kull_m_hid.h"
#define BUSYLIGHT_INPUT_REPORT_SIZE 65
#define BUSYLIGHT_OUTPUT_REPORT_SIZE 65
#define BUSYLIGHT_CAP_INPUTEVENT 0x01
#define BUSYLIGHT_CAP_LIGHT 0x02
#define BUSYLIGHT_CAP_SOUND 0x04
#define BUSYLIGHT_CAP_JINGLE_CLIPS 0x08
#define BUSYLIGHT_MEDIA_MASK 0x80
typedef enum _BUSYLIGHT_MEDIA_VOLUME {
BUSYLIGHT_MEDIA_VOLUME_0_MUTE = 0,
BUSYLIGHT_MEDIA_VOLUME_1_MIN = 1,
BUSYLIGHT_MEDIA_VOLUME_2 = 2,
BUSYLIGHT_MEDIA_VOLUME_3 = 3,
BUSYLIGHT_MEDIA_VOLUME_4_MEDIUM = 4,
BUSYLIGHT_MEDIA_VOLUME_5 = 5,
BUSYLIGHT_MEDIA_VOLUME_6 = 6,
BUSYLIGHT_MEDIA_VOLUME_7_MAX = 7,
} BUSYLIGHT_MEDIA_VOLUME, *PBUSYLIGHT_MEDIA_VOLUME;
typedef const BUSYLIGHT_MEDIA_VOLUME *PCBUSYLIGHT_MEDIA_VOLUME;
typedef enum _BUSYLIGHT_MEDIA_SOUND_JINGLE {
BUSYLIGHT_MEDIA_SOUND_MUTE = (0 << 3),
BUSYLIGHT_MEDIA_SOUND_OPENOFFICE = (1 << 3),
BUSYLIGHT_MEDIA_SOUND_QUIET = (2 << 3),
BUSYLIGHT_MEDIA_SOUND_FUNKY = (3 << 3),
BUSYLIGHT_MEDIA_SOUND_FAIRYTALE = (4 << 3),
BUSYLIGHT_MEDIA_SOUND_KUANDOTRAIN = (5 << 3),
BUSYLIGHT_MEDIA_SOUND_TELEPHONENORDIC = (6 << 3),
BUSYLIGHT_MEDIA_SOUND_TELEPHONEORIGINAL = (7 << 3),
BUSYLIGHT_MEDIA_SOUND_TELEPHONEPICKMEUP = (8 << 3),
BUSYLIGHT_MEDIA_JINGLE_IM1 = (9 << 3),
BUSYLIGHT_MEDIA_JINGLE_IM2 = (10 << 3),
} BUSYLIGHT_MEDIA_SOUND_JINGLE, *PBUSYLIGHT_MEDIA_SOUND_JINGLE;
typedef const BUSYLIGHT_MEDIA_SOUND_JINGLE *PCBUSYLIGHT_MEDIA_SOUND_JINGLE;
#define BUSYLIGHT_MEDIA(sound, volume) (BUSYLIGHT_MEDIA_MASK | (sound) | (volume))
#define BUSYLIGHT_MEDIA_MUTE BUSYLIGHT_MEDIA(BUSYLIGHT_MEDIA_SOUND_MUTE, BUSYLIGHT_MEDIA_VOLUME_0_MUTE)
typedef struct _BUSYLIGHT_DEVICE_ID {
USHORT Vid;
USHORT Pid;
UCHAR Capabilities;
PCWSTR Description;
} BUSYLIGHT_DEVICE_ID, *PBUSYLIGHT_DEVICE_ID;
typedef const BUSYLIGHT_DEVICE_ID *PCBUSYLIGHT_DEVICE_ID;
typedef struct _BUSYLIGHT_DPI {
BYTE box_sensivity;
BYTE box_timeout;
BYTE box_triggertime;
} BUSYLIGHT_DPI, *PBUSYLIGHT_DPI;
typedef const BUSYLIGHT_DPI *PCBUSYLIGHT_DPI;
typedef struct _BUSYLIGHT_INFO {
BYTE status;
CHAR ProductId[4]; // 3 + NULL;
CHAR CostumerId[9]; // 8 + NULL;
CHAR Model[5]; // 4 + NULL;
CHAR Serial[9]; // 8 + NULL;
CHAR Mfg_ID[9]; // 8 + NULL;
CHAR Mfg_Date[9]; // 8 + NULL;
CHAR swrelease[7]; // 6 + NULL;
} BUSYLIGHT_INFO, *PBUSYLIGHT_INFO;
typedef struct _BUSYLIGHT_DEVICE {
struct _BUSYLIGHT_DEVICE * next;
DWORD id;
PWCHAR DevicePath;
HIDD_ATTRIBUTES hidAttributes;
HIDP_CAPS hidCaps;
PCBUSYLIGHT_DEVICE_ID deviceId;
BUSYLIGHT_DPI dpi;
HANDLE hBusy;
DWORD dKeepAliveThread;
HANDLE hKeepAliveThread;
DWORD dWorkerThread;
HANDLE hWorkerThread;
} BUSYLIGHT_DEVICE, *PBUSYLIGHT_DEVICE;
typedef struct _BUSYLIGHT_COLOR {
BYTE red;
BYTE green;
BYTE blue;
} BUSYLIGHT_COLOR, *PBUSYLIGHT_COLOR;
typedef const BUSYLIGHT_COLOR *PCBUSYLIGHT_COLOR;
typedef struct _BUSYLIGHT_COMMAND_STEP {
BYTE NextStep;
BYTE RepeatInterval;
BUSYLIGHT_COLOR color;
BYTE OnTimeSteps;
BYTE OffTimeSteps;
BYTE AudioByte;
} BUSYLIGHT_COMMAND_STEP, *PBUSYLIGHT_COMMAND_STEP;
typedef const BUSYLIGHT_COMMAND_STEP *PCBUSYLIGHT_COMMAND_STEP;
const BUSYLIGHT_COLOR
BUSYLIGHT_COLOR_OFF,
BUSYLIGHT_COLOR_RED,
BUSYLIGHT_COLOR_ORANGE,
BUSYLIGHT_COLOR_YELLOW,
BUSYLIGHT_COLOR_CHARTREUSE_GREEN,
BUSYLIGHT_COLOR_GREEN,
BUSYLIGHT_COLOR_SPRING_GREEN,
BUSYLIGHT_COLOR_CYAN,
BUSYLIGHT_COLOR_AZURE,
BUSYLIGHT_COLOR_BLUE,
BUSYLIGHT_COLOR_VIOLET,
BUSYLIGHT_COLOR_MAGENTA,
BUSYLIGHT_COLOR_ROSE,
BUSYLIGHT_COLOR_WHITE
;
PCBUSYLIGHT_DEVICE_ID kull_m_busylight_devices_getIdFromAttributes(PHIDD_ATTRIBUTES attributes);
BOOL kull_m_busylight_devices_get(PBUSYLIGHT_DEVICE *devices, DWORD *count, DWORD mask, BOOL bAutoThread);
void kull_m_busylight_devices_free(PBUSYLIGHT_DEVICE devices, BOOL instantOff);
//BOOL kull_m_busylight_request_create(PBUSYLIGHT_COMMAND_STEP commands, DWORD count, PCBUSYLIGHT_DPI dpi, PBYTE *data, DWORD *size);
BOOL kull_m_busylight_request_create(PCBUSYLIGHT_COMMAND_STEP commands, DWORD count, PBYTE *data, DWORD *size);
BOOL kull_m_busylight_device_send_raw(PBUSYLIGHT_DEVICE device, LPCVOID request, DWORD size);
BOOL kull_m_busylight_device_read_raw(PBUSYLIGHT_DEVICE device, LPVOID *data, DWORD *size);
DWORD WINAPI kull_m_busylight_keepAliveThread(LPVOID lpThreadParameter);
BOOL kull_m_busylight_device_read_infos(PBUSYLIGHT_DEVICE device, BUSYLIGHT_INFO *info);
BOOL kull_m_busylight_request_send(PBUSYLIGHT_DEVICE device, PCBUSYLIGHT_COMMAND_STEP commands, DWORD count, BOOL all);
BOOL kull_m_busylight_request_send_keepalive(PBUSYLIGHT_DEVICE device, BOOL all);
BOOL kull_m_busylight_request_send_off(PBUSYLIGHT_DEVICE device, BOOL all);
BOOL kull_m_busylight_request_single_send(PBUSYLIGHT_DEVICE device, const BUSYLIGHT_COLOR * color, BYTE sound, BYTE volume, BOOL all);