// Message wrapper enum MessageType { DEVICE_POKE = 1; DEVICE_STATUS = 2; DEVICE_TYPE = 3; DEVICE_PROPERTIES = 4; GROUP = 5; JOIN_GROUP = 6; LEAVE_GROUP = 7; PROBE = 8; SHELL_COMMAND = 9; DEVICE_DATA = 10; DEVICE_DONE = 11; DEVICE_FAIL = 12; DEVICE_IDENTITY = 13; DEVICE_LOG = 14; } 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; } // Introductions message DevicePokeMessage { required string serial = 1; required string channel = 2; } message ProbeMessage { } enum DeviceStatus { ABSENT = 1; OFFLINE = 2; UNAUTHORIZED = 3; ONLINE = 4; } message DeviceStatusMessage { required string serial = 1; required DeviceStatus status = 2; } enum DeviceType { PHYSICAL = 1; VIRTUAL = 2; } message DeviceTypeMessage { required string serial = 1; required DeviceType type = 2; } enum DevicePlatform { ANDROID = 100; IOS = 200; FIREFOX = 300; } enum DeviceManufacturer { ACER = 1100; APPLE = 1200; ASUS = 1300; CASIO = 1400; FUJITSU = 1500; HTC = 1600; HUAWEI = 1700; KYOCERA = 1800; LG = 1900; MOTOROLA = 2000; NEC = 2100; PANASONIC = 2200; PANTECH = 2300; RIM = 2400; SAMSUNG = 2500; SHARP = 2600; SONY = 2700; TOSHIBA = 2800; ZTE = 2900; } message DeviceIdentityMessage { required string serial = 1; required DevicePlatform platform = 2; required DeviceManufacturer manufacturer = 3; required string model = 4; required string version = 5; required string abi = 6; required string sdk = 7; } 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 JoinGroupMessage { required string serial = 1; } message LeaveGroupMessage { required string serial = 1; } // Commands message ShellCommandMessage { required string channel = 1; repeated string command = 2; } message DeviceDataMessage { required string serial = 1; required uint32 seq = 2; required bytes data = 3; } message DeviceDoneMessage { required string serial = 1; } message DeviceFailMessage { required string serial = 1; required string reason = 2; }