1 // Copyright 2013, Fredrik Hultin.
2 // Copyright 2013, Jakob Bornecrantz.
3 // Copyright 2013, Joey Ferwerda.
4 // SPDX-License-Identifier: BSL-1.0
5 /*
6  * OpenHMD - Free and Open Source API and drivers for immersive technology.
7  */
8 
9 /* HTC Vive Driver */
10 
11 
12 static const unsigned char vive_magic_power_on[64] = {
13 	0x04, 0x78, 0x29, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
14 	0xa8, 0x0d, 0x76, 0x00, 0x40, 0xfc, 0x01, 0x05, 0xfa, 0xec, 0xd1, 0x6d, 0x00,
15 	0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x0d, 0x76, 0x00, 0x68, 0xfc,
16 	0x01, 0x05, 0x2c, 0xb0, 0x2e, 0x65, 0x7a, 0x0d, 0x76, 0x00, 0x68, 0x54, 0x72,
17 	0x00, 0x18, 0x54, 0x72, 0x00, 0x00, 0x6a, 0x72, 0x00, 0x00, 0x00, 0x00,
18 };
19 
20 static const unsigned char vive_magic_power_off1[64] = {
21 	0x04, 0x78, 0x29, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
22 	0x30, 0x05, 0x77, 0x00, 0x30, 0x05, 0x77, 0x00, 0x6c, 0x4d, 0x37, 0x65, 0x40,
23 	0xf9, 0x33, 0x00, 0x04, 0xf8, 0xa3, 0x04, 0x04, 0x00, 0x00, 0x00, 0x70, 0xb0,
24 	0x72, 0x00, 0xf4, 0xf7, 0xa3, 0x04, 0x7c, 0xf8, 0x33, 0x00, 0x0c, 0xf8, 0xa3,
25 	0x04, 0x0a, 0x6e, 0x29, 0x65, 0x24, 0xf9, 0x33, 0x00, 0x00, 0x00, 0x00,
26 };
27 
28 static const unsigned char vive_magic_power_off2[64] = {
29 	0x04, 0x78, 0x29, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
30 	0x30, 0x05, 0x77, 0x00, 0xe4, 0xf7, 0x33, 0x00, 0xe4, 0xf7, 0x33, 0x00, 0x60,
31 	0x6e, 0x72, 0x00, 0xb4, 0xf7, 0x33, 0x00, 0x04, 0x00, 0x00, 0x00, 0x70, 0xb0,
32 	0x72, 0x00, 0x90, 0xf7, 0x33, 0x00, 0x7c, 0xf8, 0x33, 0x00, 0xd0, 0xf7, 0x33,
33 	0x00, 0x3c, 0x68, 0x29, 0x65, 0x24, 0xf9, 0x33, 0x00, 0x00, 0x00, 0x00,
34 };
35 
36 static const unsigned char vive_magic_enable_lighthouse[5] = {
37 	0x04
38 };
39 
40 static const unsigned char vive_pro_magic_power_on[64] = {
41 	0x04, 0x78, 0x29, 0x38, 0x00, 0x00, 0x00, 0x00,
42 	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
43 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46 	0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
47 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49 };
50 
51 static const unsigned char vive_pro_magic_power_off[64] = {
52 	0x04, 0x78, 0x29, 0x38, 0x01, 0x00, 0x00, 0x00,
53 	0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
54 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
55 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57 	0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00,
58 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60 };
61 
62 static const unsigned char vive_pro_enable_imu[64] = {
63 	0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
64 	0x80, 0xe3, 0x38, 0x3e, 0x75, 0x7f, 0x00, 0x00,
65 	0x90, 0x08, 0x04, 0x2c, 0x75, 0x7f, 0x00, 0x00,
66 	0x10, 0x0e, 0x8c, 0x36, 0x75, 0x7f, 0x00, 0x00,
67 	0x48, 0x6b, 0x00, 0x2c, 0x75, 0x7f, 0x00, 0x00,
68 	0xf2, 0x49, 0x12, 0x3e, 0x75, 0x7f, 0x00, 0x00,
69 	0x98, 0xe3, 0x38, 0x3e, 0x75, 0x7f, 0x00, 0x00,
70 	0x08, 0x0e, 0x8c, 0x36, 0x75, 0x7f, 0x00, 0x00
71 };
72