// Message wrapper enum MessageType { DevicePokeMessage = 1; DeviceStatusMessage = 2; DevicePropertiesMessage = 4; GroupMessage = 5; UngroupMessage = 15; JoinGroupMessage = 6; LeaveGroupMessage = 7; ProbeMessage = 8; ShellCommandMessage = 9; ShellCommandDataMessage = 10; ShellCommandDoneMessage = 11; ShellCommandFailMessage = 12; DeviceIdentityMessage = 13; DeviceLogMessage = 14; DevicePresentMessage = 16; DeviceAbsentMessage = 17; TouchDownMessage = 18; TouchMoveMessage = 19; TouchUpMessage = 20; TapMessage = 21; TypeMessage = 22; KeyDownMessage = 23; KeyUpMessage = 24; KeyPressMessage = 25; DeviceRegisteredMessage = 26; DeviceLogcatEntryMessage = 27; LogcatApplyFiltersMessage = 28; } message Envelope { required MessageType type = 1; required bytes message = 2; } // Logging message DeviceLogMessage { required string serial = 1; required double timestamp = 2; required uint32 priority = 3; required string tag = 4; required uint32 pid = 5; required string message = 6; required string identifier = 7; } // Introductions message ProviderMessage { required string channel = 1; required string name = 2; } message DevicePresentMessage { required string serial = 1; required DeviceStatus status = 2; required ProviderMessage provider = 3; } message DeviceRegisteredMessage { required string serial = 1; } message DeviceAbsentMessage { required string serial = 1; } message DevicePokeMessage { required string serial = 1; required string channel = 2; } message ProbeMessage { } enum DeviceStatus { OFFLINE = 1; UNAUTHORIZED = 2; ONLINE = 3; } message DeviceStatusMessage { required string serial = 1; required DeviceStatus status = 2; } message DeviceDisplayMessage { required uint32 id = 1; required uint32 width = 2; required uint32 height = 3; required uint32 orientation = 4; required uint32 xdpi = 5; required uint32 ydpi = 6; required double fps = 7; required double density = 8; required bool secure = 9; required string url = 10; } message DeviceIdentityMessage { required string serial = 1; required string platform = 2; required string manufacturer = 3; optional string operator = 4; required string model = 5; required string version = 6; required string abi = 7; required string sdk = 8; required DeviceDisplayMessage display = 9; } message DeviceProperty { required string name = 1; required string value = 2; } message DevicePropertiesMessage { required string serial = 1; repeated DeviceProperty properties = 2; } // Grouping enum RequirementType { SEMVER = 1; GLOB = 2; EXACT = 3; } message DeviceRequirement { required string name = 1; required string value = 2; required RequirementType type = 3; } message OwnerMessage { required string email = 1; required string name = 2; required string group = 3; } message GroupMessage { required OwnerMessage owner = 1; required uint32 timeout = 2; repeated DeviceRequirement requirements = 3; } message UngroupMessage { repeated DeviceRequirement requirements = 2; } message JoinGroupMessage { required string serial = 1; required OwnerMessage owner = 2; } message LeaveGroupMessage { required string serial = 1; required OwnerMessage owner = 2; } // Input message TouchDownMessage { required uint32 x = 1; required uint32 y = 2; } message TouchMoveMessage { required uint32 x = 1; required uint32 y = 2; } message TouchUpMessage { required uint32 x = 1; required uint32 y = 2; } message TapMessage { required uint32 x = 1; required uint32 y = 2; } message TypeMessage { required string text = 1; } enum KeyCode { HOME = 3; BACK = 4; BACKSPACE = 8; ENTER = 13; CAPS_LOCK = 20; ESC = 27; PAGE_UP = 33; PAGE_DOWN = 34; MOVE_END = 35; MOVE_HOME = 36; LEFT_ARROW = 37; UP_ARROW = 38; RIGHT_ARROW = 39; DOWN_ARROW = 40; INSERT = 45; DELETE = 46; MENU = 93; F1 = 112; F2 = 113; F3 = 114; F4 = 115; F5 = 116; F6 = 117; F7 = 118; F8 = 119; F9 = 120; F10 = 121; F11 = 122; F12 = 123; NUM_LOCK = 144; } message KeyDownMessage { required KeyCode keyCode = 1; } message KeyUpMessage { required KeyCode keyCode = 1; } message KeyPressMessage { required KeyCode keyCode = 1; } // Output message DeviceLogcatEntryMessage { required string serial = 1; required double date = 2; required uint32 pid = 3; required uint32 tid = 4; required uint32 priority = 5; required string tag = 6; required string message = 7; } message LogcatFilter { required string tag = 1; required uint32 priority = 2; } message LogcatApplyFiltersMessage { repeated LogcatFilter filters = 1; } // Commands message ShellCommandMessage { required string channel = 1; repeated string command = 2; } message ShellCommandDataMessage { required string serial = 1; required uint32 seq = 2; required bytes data = 3; } message ShellCommandDoneMessage { required string serial = 1; } message ShellCommandFailMessage { required string serial = 1; required string reason = 2; }