1syntax = "proto3"; 2 3package pandora; 4 5option java_outer_classname = "HidProto"; 6 7import "google/protobuf/empty.proto"; 8 9service HID { 10 // Register service 11 rpc RegisterService(ServiceRequest) returns (google.protobuf.Empty); 12 // Connect HID Host 13 rpc ConnectHost(google.protobuf.Empty) returns (google.protobuf.Empty); 14 // Disconnect HID Host 15 rpc DisconnectHost(google.protobuf.Empty) returns (google.protobuf.Empty); 16 // Virtual Cable Unplug HID Host 17 rpc VirtualCableUnplugHost(google.protobuf.Empty) returns (google.protobuf.Empty); 18 // Send a SET_REPORT command, acting as a HID host, to a connected HID device 19 rpc SendHostReport(SendHostReportRequest) returns (SendHostReportResponse); 20 // receive Protocol Mode Event 21 rpc OnSetProtocolMode(google.protobuf.Empty) returns (stream ProtocolModeEvent); 22 // receive Report Event 23 rpc OnSetReport(google.protobuf.Empty) returns (stream ReportEvent); 24} 25// Enum values match those in BluetoothHidHost.java 26enum HidReportType { 27 HID_REPORT_TYPE_UNSPECIFIED = 0; 28 HID_REPORT_TYPE_INPUT = 1; 29 HID_REPORT_TYPE_OUTPUT = 2; 30 HID_REPORT_TYPE_FEATURE = 3; 31} 32// Enum values match those in BluetoothHidHost.java 33enum ProtocolMode { 34 PROTOCOL_REPORT_MODE = 0; 35 PROTOCOL_BOOT_MODE = 1; 36 PROTOCOL_UNSUPPORTED_MODE = 255; 37} 38enum HidReportId { 39 HID_KEYBD_RPT_ID = 0; 40 HID_MOUSE_RPT_ID = 1; 41 HID_INVALID_RPT_ID = 3; 42} 43 44enum HidServiceType { 45 SERVICE_TYPE_HID = 0; 46 SERVICE_TYPE_HOGP = 1; 47 SERVICE_TYPE_BOTH = 2; 48} 49 50message ServiceRequest { 51 HidServiceType service_type = 1; 52} 53 54message SendHostReportRequest { 55 bytes address = 1; 56 HidReportType report_type = 2; 57 string report = 3; 58} 59 60message SendHostReportResponse { 61 62} 63 64message ProtocolModeEvent { 65 ProtocolMode protocol_mode = 1; 66} 67 68message ReportEvent { 69 HidReportType report_type = 1; 70 HidReportId report_id = 2; 71 string report_data = 3; 72} 73