// 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; } 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 DevicePresentMessage { required string serial = 1; required string provider = 2; required DeviceStatus status = 4; } 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 GroupMessage { required string channel = 1; required uint32 timeout = 2; repeated DeviceRequirement requirements = 3; } message UngroupMessage { required string channel = 1; repeated DeviceRequirement requirements = 2; } message JoinGroupMessage { required string serial = 1; } message LeaveGroupMessage { required string serial = 1; } // 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; } message KeyDownMessage { required uint32 key = 1; } message KeyUpMessage { required uint32 key = 1; } message KeyPressMessage { required uint32 key = 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; }