1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef __UHID_H_ 8*8d67ca89SAndroid Build Coastguard Worker #define __UHID_H_ 9*8d67ca89SAndroid Build Coastguard Worker #include <linux/input.h> 10*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h> 11*8d67ca89SAndroid Build Coastguard Worker #include <linux/hid.h> 12*8d67ca89SAndroid Build Coastguard Worker enum uhid_event_type { 13*8d67ca89SAndroid Build Coastguard Worker __UHID_LEGACY_CREATE, 14*8d67ca89SAndroid Build Coastguard Worker UHID_DESTROY, 15*8d67ca89SAndroid Build Coastguard Worker UHID_START, 16*8d67ca89SAndroid Build Coastguard Worker UHID_STOP, 17*8d67ca89SAndroid Build Coastguard Worker UHID_OPEN, 18*8d67ca89SAndroid Build Coastguard Worker UHID_CLOSE, 19*8d67ca89SAndroid Build Coastguard Worker UHID_OUTPUT, 20*8d67ca89SAndroid Build Coastguard Worker __UHID_LEGACY_OUTPUT_EV, 21*8d67ca89SAndroid Build Coastguard Worker __UHID_LEGACY_INPUT, 22*8d67ca89SAndroid Build Coastguard Worker UHID_GET_REPORT, 23*8d67ca89SAndroid Build Coastguard Worker UHID_GET_REPORT_REPLY, 24*8d67ca89SAndroid Build Coastguard Worker UHID_CREATE2, 25*8d67ca89SAndroid Build Coastguard Worker UHID_INPUT2, 26*8d67ca89SAndroid Build Coastguard Worker UHID_SET_REPORT, 27*8d67ca89SAndroid Build Coastguard Worker UHID_SET_REPORT_REPLY, 28*8d67ca89SAndroid Build Coastguard Worker }; 29*8d67ca89SAndroid Build Coastguard Worker struct uhid_create2_req { 30*8d67ca89SAndroid Build Coastguard Worker __u8 name[128]; 31*8d67ca89SAndroid Build Coastguard Worker __u8 phys[64]; 32*8d67ca89SAndroid Build Coastguard Worker __u8 uniq[64]; 33*8d67ca89SAndroid Build Coastguard Worker __u16 rd_size; 34*8d67ca89SAndroid Build Coastguard Worker __u16 bus; 35*8d67ca89SAndroid Build Coastguard Worker __u32 vendor; 36*8d67ca89SAndroid Build Coastguard Worker __u32 product; 37*8d67ca89SAndroid Build Coastguard Worker __u32 version; 38*8d67ca89SAndroid Build Coastguard Worker __u32 country; 39*8d67ca89SAndroid Build Coastguard Worker __u8 rd_data[HID_MAX_DESCRIPTOR_SIZE]; 40*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 41*8d67ca89SAndroid Build Coastguard Worker enum uhid_dev_flag { 42*8d67ca89SAndroid Build Coastguard Worker UHID_DEV_NUMBERED_FEATURE_REPORTS = (1ULL << 0), 43*8d67ca89SAndroid Build Coastguard Worker UHID_DEV_NUMBERED_OUTPUT_REPORTS = (1ULL << 1), 44*8d67ca89SAndroid Build Coastguard Worker UHID_DEV_NUMBERED_INPUT_REPORTS = (1ULL << 2), 45*8d67ca89SAndroid Build Coastguard Worker }; 46*8d67ca89SAndroid Build Coastguard Worker struct uhid_start_req { 47*8d67ca89SAndroid Build Coastguard Worker __u64 dev_flags; 48*8d67ca89SAndroid Build Coastguard Worker }; 49*8d67ca89SAndroid Build Coastguard Worker #define UHID_DATA_MAX 4096 50*8d67ca89SAndroid Build Coastguard Worker enum uhid_report_type { 51*8d67ca89SAndroid Build Coastguard Worker UHID_FEATURE_REPORT, 52*8d67ca89SAndroid Build Coastguard Worker UHID_OUTPUT_REPORT, 53*8d67ca89SAndroid Build Coastguard Worker UHID_INPUT_REPORT, 54*8d67ca89SAndroid Build Coastguard Worker }; 55*8d67ca89SAndroid Build Coastguard Worker struct uhid_input2_req { 56*8d67ca89SAndroid Build Coastguard Worker __u16 size; 57*8d67ca89SAndroid Build Coastguard Worker __u8 data[UHID_DATA_MAX]; 58*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 59*8d67ca89SAndroid Build Coastguard Worker struct uhid_output_req { 60*8d67ca89SAndroid Build Coastguard Worker __u8 data[UHID_DATA_MAX]; 61*8d67ca89SAndroid Build Coastguard Worker __u16 size; 62*8d67ca89SAndroid Build Coastguard Worker __u8 rtype; 63*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 64*8d67ca89SAndroid Build Coastguard Worker struct uhid_get_report_req { 65*8d67ca89SAndroid Build Coastguard Worker __u32 id; 66*8d67ca89SAndroid Build Coastguard Worker __u8 rnum; 67*8d67ca89SAndroid Build Coastguard Worker __u8 rtype; 68*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 69*8d67ca89SAndroid Build Coastguard Worker struct uhid_get_report_reply_req { 70*8d67ca89SAndroid Build Coastguard Worker __u32 id; 71*8d67ca89SAndroid Build Coastguard Worker __u16 err; 72*8d67ca89SAndroid Build Coastguard Worker __u16 size; 73*8d67ca89SAndroid Build Coastguard Worker __u8 data[UHID_DATA_MAX]; 74*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 75*8d67ca89SAndroid Build Coastguard Worker struct uhid_set_report_req { 76*8d67ca89SAndroid Build Coastguard Worker __u32 id; 77*8d67ca89SAndroid Build Coastguard Worker __u8 rnum; 78*8d67ca89SAndroid Build Coastguard Worker __u8 rtype; 79*8d67ca89SAndroid Build Coastguard Worker __u16 size; 80*8d67ca89SAndroid Build Coastguard Worker __u8 data[UHID_DATA_MAX]; 81*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 82*8d67ca89SAndroid Build Coastguard Worker struct uhid_set_report_reply_req { 83*8d67ca89SAndroid Build Coastguard Worker __u32 id; 84*8d67ca89SAndroid Build Coastguard Worker __u16 err; 85*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 86*8d67ca89SAndroid Build Coastguard Worker enum uhid_legacy_event_type { 87*8d67ca89SAndroid Build Coastguard Worker UHID_CREATE = __UHID_LEGACY_CREATE, 88*8d67ca89SAndroid Build Coastguard Worker UHID_OUTPUT_EV = __UHID_LEGACY_OUTPUT_EV, 89*8d67ca89SAndroid Build Coastguard Worker UHID_INPUT = __UHID_LEGACY_INPUT, 90*8d67ca89SAndroid Build Coastguard Worker UHID_FEATURE = UHID_GET_REPORT, 91*8d67ca89SAndroid Build Coastguard Worker UHID_FEATURE_ANSWER = UHID_GET_REPORT_REPLY, 92*8d67ca89SAndroid Build Coastguard Worker }; 93*8d67ca89SAndroid Build Coastguard Worker struct uhid_create_req { 94*8d67ca89SAndroid Build Coastguard Worker __u8 name[128]; 95*8d67ca89SAndroid Build Coastguard Worker __u8 phys[64]; 96*8d67ca89SAndroid Build Coastguard Worker __u8 uniq[64]; 97*8d67ca89SAndroid Build Coastguard Worker __u8 * rd_data; 98*8d67ca89SAndroid Build Coastguard Worker __u16 rd_size; 99*8d67ca89SAndroid Build Coastguard Worker __u16 bus; 100*8d67ca89SAndroid Build Coastguard Worker __u32 vendor; 101*8d67ca89SAndroid Build Coastguard Worker __u32 product; 102*8d67ca89SAndroid Build Coastguard Worker __u32 version; 103*8d67ca89SAndroid Build Coastguard Worker __u32 country; 104*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 105*8d67ca89SAndroid Build Coastguard Worker struct uhid_input_req { 106*8d67ca89SAndroid Build Coastguard Worker __u8 data[UHID_DATA_MAX]; 107*8d67ca89SAndroid Build Coastguard Worker __u16 size; 108*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 109*8d67ca89SAndroid Build Coastguard Worker struct uhid_output_ev_req { 110*8d67ca89SAndroid Build Coastguard Worker __u16 type; 111*8d67ca89SAndroid Build Coastguard Worker __u16 code; 112*8d67ca89SAndroid Build Coastguard Worker __s32 value; 113*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 114*8d67ca89SAndroid Build Coastguard Worker struct uhid_feature_req { 115*8d67ca89SAndroid Build Coastguard Worker __u32 id; 116*8d67ca89SAndroid Build Coastguard Worker __u8 rnum; 117*8d67ca89SAndroid Build Coastguard Worker __u8 rtype; 118*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 119*8d67ca89SAndroid Build Coastguard Worker struct uhid_feature_answer_req { 120*8d67ca89SAndroid Build Coastguard Worker __u32 id; 121*8d67ca89SAndroid Build Coastguard Worker __u16 err; 122*8d67ca89SAndroid Build Coastguard Worker __u16 size; 123*8d67ca89SAndroid Build Coastguard Worker __u8 data[UHID_DATA_MAX]; 124*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 125*8d67ca89SAndroid Build Coastguard Worker struct uhid_event { 126*8d67ca89SAndroid Build Coastguard Worker __u32 type; 127*8d67ca89SAndroid Build Coastguard Worker union { 128*8d67ca89SAndroid Build Coastguard Worker struct uhid_create_req create; 129*8d67ca89SAndroid Build Coastguard Worker struct uhid_input_req input; 130*8d67ca89SAndroid Build Coastguard Worker struct uhid_output_req output; 131*8d67ca89SAndroid Build Coastguard Worker struct uhid_output_ev_req output_ev; 132*8d67ca89SAndroid Build Coastguard Worker struct uhid_feature_req feature; 133*8d67ca89SAndroid Build Coastguard Worker struct uhid_get_report_req get_report; 134*8d67ca89SAndroid Build Coastguard Worker struct uhid_feature_answer_req feature_answer; 135*8d67ca89SAndroid Build Coastguard Worker struct uhid_get_report_reply_req get_report_reply; 136*8d67ca89SAndroid Build Coastguard Worker struct uhid_create2_req create2; 137*8d67ca89SAndroid Build Coastguard Worker struct uhid_input2_req input2; 138*8d67ca89SAndroid Build Coastguard Worker struct uhid_set_report_req set_report; 139*8d67ca89SAndroid Build Coastguard Worker struct uhid_set_report_reply_req set_report_reply; 140*8d67ca89SAndroid Build Coastguard Worker struct uhid_start_req start; 141*8d67ca89SAndroid Build Coastguard Worker } u; 142*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 143*8d67ca89SAndroid Build Coastguard Worker #endif 144