| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | enum MessageType {    kMessageTypeHello = 0x1;    kMessageTypeGoodbye = 0x2;    kMessageTypeProbe = 0x3;    kMessageTypeNotify = 0xa;    kMessageTypeLoad = 0x14;    kMessageTypePlay = 0x15;    kMessageTypePause = 0x16;    kMessageTypePlayPause = 0x17;    kMessageTypeSeek = 0x18;    kMessageTypePrev = 0x19;    kMessageTypeNext = 0x1a;    kMessageTypeVolume = 0x1b;    kMessageTypeShuffle = 0x1c;    kMessageTypeRepeat = 0x1d;    kMessageTypeVolumeDown = 0x1f;    kMessageTypeVolumeUp = 0x20;    kMessageTypeReplace = 0x21;    kMessageTypeLogout = 0x22;    kMessageTypeAction = 0x23;}enum PlayStatus {    kPlayStatusStop = 0x0;    kPlayStatusPlay = 0x1;    kPlayStatusPause = 0x2;    kPlayStatusLoading = 0x3;}message TrackRef {    optional bytes gid = 0x1;    optional string uri = 0x2;    optional bool queued = 0x3;    optional string context = 0x4;}message State {    optional string context_uri = 0x2;    optional uint32 index = 0x3;    optional uint32 position_ms = 0x4;    optional PlayStatus status = 0x5;    optional uint64 position_measured_at = 0x7;    optional string context_description = 0x8;    optional bool shuffle = 0xd;    optional bool repeat = 0xe;    optional uint32 playing_track_index = 0x1a;    repeated TrackRef track = 0x1b;}enum CapabilityType {    kSupportedContexts = 0x1;    kCanBePlayer = 0x2;    kRestrictToLocal = 0x3;    kDeviceType = 0x4;    kGaiaEqConnectId = 0x5;    kSupportsLogout = 0x6;    kIsObservable = 0x7;    kVolumeSteps = 0x8;    kSupportedTypes = 0x9;    kCommandAcks = 0xa;    kSupportsRename = 0xb;    kHidden = 0xc;    kSupportsPlaylistV2 = 0xd;    kSupportsExternalEpisodes = 0xe;}message Capability {    optional CapabilityType typ = 0x1;    repeated int64 intValue = 0x2;    repeated string stringValue = 0x3;}message DeviceState {    optional string sw_version = 0x1;    optional bool is_active = 0xa;    optional bool can_play = 0xb;    optional uint32 volume = 0xc;    optional string name = 0xd;    optional uint32 error_code = 0xe;    optional int64 became_active_at = 0xf;    optional string error_message = 0x10;    repeated Capability capabilities = 0x11;    repeated string local_uris = 0x12;}message Frame {    optional uint32 version = 0x1;    optional string ident = 0x2;    optional string protocol_version = 0x3;    optional uint32 seq_nr = 0x4;    optional MessageType typ = 0x5;    optional DeviceState device_state = 0x7;    optional State state = 0xc;    optional uint32 position = 0xd;    optional uint32 volume = 0xe;    optional int64 state_update_id = 0x11;    repeated string recipient = 0x12;}
 |