// 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 string message = 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;
  optional string appId = 2;
}

message ViewBridgeStartMessage {
  repeated LogcatFilter filters = 1;
  optional string appId = 2;
}

message LogcatStopMessage {
  optional string appId = 1;
}

message ViewBridgeStopMessage {
  optional string appId = 1;
}

message ViewBridgeGetMessage {
  optional string seq = 1;
  required string serial = 2;
}

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;
}
