// Message wrapper

enum MessageType {
  CopyMessage                = 33;
  DeviceIntroductionMessage  = 74;
  DeviceAbsentMessage        = 1;
  DeviceIdentityMessage      = 2;
  DeviceLogcatEntryMessage   = 3;
  DeviceViewBridgeEntryMessage = 92;
  DeviceLogMessage           = 4;
  DeviceReadyMessage         = 5;
  DevicePresentMessage       = 6;
  DevicePropertiesMessage    = 7;
  DeviceRegisteredMessage    = 8;
  DeviceStatusMessage        = 9;
  GroupMessage               = 10;
  InstallMessage             = 30;
  PhysicalIdentifyMessage    = 29;
  JoinGroupMessage           = 11;
  JoinGroupByAdbFingerprintMessage = 69;
  JoinGroupByVncAuthResponseMessage = 90;
  VncAuthResponsesUpdatedMessage = 91;
  AutoGroupMessage           = 70;
  AdbKeysUpdatedMessage      = 71;
  KeyDownMessage             = 12;
  KeyPressMessage            = 13;
  KeyUpMessage               = 14;
  LaunchActivityMessage      = 31;
  LeaveGroupMessage          = 15;
  LogcatApplyFiltersMessage  = 16;
  PasteMessage               = 32;
  ProbeMessage               = 17;
  ShellCommandMessage        = 18;
  ShellKeepAliveMessage      = 19;
  TouchDownMessage           = 21;
  TouchMoveMessage           = 22;
  TouchUpMessage             = 23;
  TouchCommitMessage         = 65;
  TouchResetMessage          = 66;
  GestureStartMessage        = 67;
  GestureStopMessage         = 68;
  TransactionDoneMessage     = 24;
  TransactionProgressMessage = 25;
  TypeMessage                = 26;
  UngroupMessage             = 27;
  UninstallMessage           = 34;
  RotateMessage              = 35;
  ForwardTestMessage         = 36;
  ForwardCreateMessage       = 37;
  ForwardRemoveMessage       = 38;
  LogcatStartMessage         = 39;
  ViewBridgeStartMessage     = 93;
  LogcatStopMessage          = 40;
  ViewBridgeStopMessage      = 94;
  ViewBridgeGetMessage       = 95;
  BrowserOpenMessage         = 41;
  BrowserClearMessage        = 42;
  AirplaneModeEvent          = 43;
  BatteryEvent               = 44;
  DeviceBrowserMessage       = 45;
  ConnectivityEvent          = 46;
  PhoneStateEvent            = 47;
  RotationEvent              = 48;
  StoreOpenMessage           = 49;
  ScreenCaptureMessage       = 50;
  DeviceHeartbeatMessage     = 73;
  RebootMessage              = 52;
  ConnectStartMessage        = 53;
  ConnectStopMessage         = 54;
  RingerSetMessage           = 56;
  RingerGetMessage           = 64;
  WifiSetEnabledMessage      = 57;
  WifiGetStatusMessage       = 58;
  AccountAddMenuMessage      = 59;
  AccountAddMessage          = 60;
  AccountCheckMessage        = 63;
  AccountGetMessage          = 62;
  AccountRemoveMessage       = 55;
  SdStatusMessage            = 61;
  ReverseForwardsEvent       = 72;
  FileSystemListMessage      = 81;
  FileSystemGetMessage       = 82;
}

message FileSystemListMessage {
  required string dir = 1;
}

message FileSystemGetMessage {
  required string file = 1;
}

message Envelope {
  required MessageType type = 1;
  required bytes message = 2;
  optional string channel = 3;
}

message TransactionProgressMessage {
  required string source = 1;
  required uint32 seq = 2;
  optional string data = 3;
  optional uint32 progress = 4 [default = 0];
}

message TransactionDoneMessage {
  required string source = 1;
  required uint32 seq = 2;
  required bool success = 3;
  optional string data = 4;
  optional string body = 5;
}

// 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 DeviceHeartbeatMessage {
  required string serial = 1;
}

message DeviceIntroductionMessage {
  required string serial = 1;
  required DeviceStatus status = 2;
  required ProviderMessage provider = 3;
}

message DeviceRegisteredMessage {
  required string serial = 1;
}

message DevicePresentMessage {
  required string serial = 1;
}

message DeviceAbsentMessage {
  required string serial = 1;
}

message DeviceReadyMessage {
  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 int32 id = 1;
  required int32 width = 2;
  required int32 height = 3;
  required int32 rotation = 4;
  required float xdpi = 5;
  required float ydpi = 6;
  required float fps = 7;
  required float density = 8;
  required bool secure = 9;
  required string url = 10;
  optional float size = 11;
}

message DeviceBrowserAppMessage {
  required string id = 1;
  required string type = 2;
  required string name = 3;
  required bool selected = 4;
  required bool system = 5;
}

message DeviceBrowserMessage {
  required string serial = 1;
  required bool selected = 2;
  repeated DeviceBrowserAppMessage apps = 3;
}

message DevicePhoneMessage {
  optional string imei = 1;
  optional string phoneNumber = 2;
  optional string iccid = 3;
  optional string network = 4;
}

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;
  required DevicePhoneMessage phone = 11;
  optional string product = 12;
}

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;
  optional uint32 timeout = 2;
  repeated DeviceRequirement requirements = 3;
}

message AutoGroupMessage {
  required OwnerMessage owner = 1;
  required string identifier = 2;
}

message UngroupMessage {
  repeated DeviceRequirement requirements = 2;
}

message JoinGroupMessage {
  required string serial = 1;
  required OwnerMessage owner = 2;
}

message JoinGroupByAdbFingerprintMessage {
  required string serial = 1;
  required string fingerprint = 2;
  optional string comment = 3;
  optional string currentGroup = 4;
}

message JoinGroupByVncAuthResponseMessage {
  required string serial = 1;
  required string response = 2;
  optional string currentGroup = 4;
}

message AdbKeysUpdatedMessage {
}

message VncAuthResponsesUpdatedMessage {
}

message LeaveGroupMessage {
  required string serial = 1;
  required OwnerMessage owner = 2;
  required string reason = 3;
}

// Input

message PhysicalIdentifyMessage {
}

message TouchDownMessage {
  required uint32 seq = 1;
  required uint32 contact = 2;
  required float x = 3;
  required float y = 4;
  optional float pressure = 5;
}

message TouchMoveMessage {
  required uint32 seq = 1;
  required uint32 contact = 2;
  required float x = 3;
  required float y = 4;
  optional float pressure = 5;
}

message TouchUpMessage {
  required uint32 seq = 1;
  required uint32 contact = 2;
}

message TouchCommitMessage {
  required uint32 seq = 1;
}

message TouchResetMessage {
  required uint32 seq = 1;
}

message GestureStartMessage {
  required uint32 seq = 1;
}

message GestureStopMessage {
  required uint32 seq = 1;
}

message TypeMessage {
  required string text = 1;
}

message PasteMessage {
  required string text = 1;
}

message CopyMessage {
}

message KeyDownMessage {
  required string key = 1;
}

message KeyUpMessage {
  required string key = 1;
}

message KeyPressMessage {
  required string key = 1;
}

message RebootMessage {
}

// Output

message DeviceLogcatEntryMessage {
  required string serial = 1;
  required double date = 2;
  required uint32 pid = 3;
}

message DeviceViewBridgeEntryMessage {
  required string serial = 1;
  required double date = 2;
  required string message = 3;
}

message LogcatFilter {
  required string tag = 1;
  required uint32 priority = 2;
}

message LogcatStartMessage {
  repeated LogcatFilter filters = 1;
}

message LogcatStopMessage {
}

message LogcatApplyFiltersMessage {
  repeated LogcatFilter filters = 1;
}

// Commands

message ShellCommandMessage {
  required string command = 1;
  required uint32 timeout = 2;
}

message ShellKeepAliveMessage {
  required uint32 timeout = 1;
}

message InstallMessage {
  required string href = 1;
  required bool launch = 2;
  optional string manifest = 3;
}

message UninstallMessage {
  required string packageName = 1;
}

message LaunchActivityMessage {
  required string action = 1;
  required string component = 2;
  repeated string category = 3;
  optional uint32 flags = 4;
}

message RotateMessage {
  required int32 rotation = 1;
}

message ForwardTestMessage {
  required string targetHost = 1;
  required uint32 targetPort = 2;
}

message ForwardCreateMessage {
  required string id = 1;
  required uint32 devicePort = 2;
  required string targetHost = 3;
  required uint32 targetPort = 4;
}

message ForwardRemoveMessage {
  required string id = 1;
}

message ReverseForward {
  required string id = 1;
  required uint32 devicePort = 2;
  required string targetHost = 3;
  required uint32 targetPort = 4;
}

message ReverseForwardsEvent {
  required string serial = 1;
  repeated ReverseForward forwards = 2;
}

message BrowserOpenMessage {
  required string url = 1;
  optional string browser = 2;
}

message BrowserClearMessage {
  optional string browser = 1;
}

message StoreOpenMessage {
}

message ScreenCaptureMessage {
}

message ConnectStartMessage {
}

message ConnectStopMessage {
}

message AccountAddMenuMessage {
}

message AccountAddMessage {
  required string user = 1;
  required string password = 2;
}

message AccountCheckMessage {
  required string type = 1;
  required string account = 2;
}

message AccountGetMessage {
  optional string type = 1;
}

message AccountRemoveMessage {
  required string type = 1;
  optional string account = 2;
}

message SdStatusMessage {
}

enum RingerMode {
    SILENT = 0;
    VIBRATE = 1;
    NORMAL = 2;
}

message RingerSetMessage {
  required RingerMode mode = 1;
}

message RingerGetMessage {
}

message WifiSetEnabledMessage {
  required bool enabled = 1;
}

message WifiGetStatusMessage {
}

// Events, these must be kept in sync with STFService/wire.proto

message AirplaneModeEvent {
  required string serial = 1;
  required bool enabled = 2;
}

message BatteryEvent {
  required string serial = 1;
  required string status = 2;
  required string health = 3;
  required string source = 4;
  required uint32 level = 5;
  required uint32 scale = 6;
  required double temp = 7;
  required double voltage = 8;
}

message ConnectivityEvent {
  required string serial = 1;
  required bool connected = 2;
  optional string type = 3;
  optional string subtype = 4;
  optional bool failover = 5;
  optional bool roaming = 6;
}

message PhoneStateEvent {
  required string serial = 1;
  required string state = 2;
  required bool manual = 3;
  optional string operator = 4;
}

message RotationEvent {
  required string serial = 1;
  required int32 rotation = 2;
}
