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