diff --git a/dist/lib/protos/AudioFormatSettingsMessage.proto b/dist/lib/protos/AudioFormatSettingsMessage.proto new file mode 100644 index 0000000..b3e5ea8 --- /dev/null +++ b/dist/lib/protos/AudioFormatSettingsMessage.proto @@ -0,0 +1,5 @@ +syntax = "proto2"; + +message AudioFormatSettings { + optional bytes formatSettingsPlistData = 1; +} \ No newline at end of file diff --git a/dist/lib/protos/ClientUpdatesConfigMessage.proto b/dist/lib/protos/ClientUpdatesConfigMessage.proto old mode 100755 new mode 100644 index ea42b4f..3d55cc9 --- a/dist/lib/protos/ClientUpdatesConfigMessage.proto +++ b/dist/lib/protos/ClientUpdatesConfigMessage.proto @@ -11,5 +11,6 @@ message ClientUpdatesConfigMessage { optional bool nowPlayingUpdates = 2; optional bool volumeUpdates = 3; optional bool keyboardUpdates = 4; + optional bool outputDeviceUpdates = 5; } diff --git a/dist/lib/protos/CommandInfo.proto b/dist/lib/protos/CommandInfo.proto old mode 100755 new mode 100644 index 0c91cb4..901deab --- a/dist/lib/protos/CommandInfo.proto +++ b/dist/lib/protos/CommandInfo.proto @@ -1,82 +1,89 @@ syntax = "proto2"; enum Command { -Unknown=0; -Play=1; -Pause=2; -TogglePlayPause=3; -Stop=4; -NextTrack=5; -PreviousTrack=6; -AdvanceShuffleMode=7; -AdvanceRepeatMode=8; -BeginFastForward=9; -EndFastForward=10; -BeginRewind=11; -EndRewind=12; -Rewind15Seconds=13; -FastForward15Seconds=14; -Rewind30Seconds=15; -FastForward30Seconds=16; - -SkipForward=18; -SkipBackward=19; -ChangePlaybackRate=20; -RateTrack=21; -LikeTrack=22; -DislikeTrack=23; -BookmarkTrack=24; - -SeekToPlaybackPosition=45; -ChangeRepeatMode=46; -ChangeShuffleMode=47; - -EnableLanguageOption=53; -DisableLanguageOption=54; + Unknown = 0; + Play = 1; + Pause = 2; + TogglePlayPause = 3; + Stop = 4; + NextTrack = 5; + PreviousTrack = 6; + AdvanceShuffleMode = 7; + AdvanceRepeatMode = 8; + BeginFastForward = 9; + EndFastForward = 10; + BeginRewind = 11; + EndRewind = 12; + Rewind15Seconds = 13; + FastForward15Seconds = 14; + Rewind30Seconds = 15; + FastForward30Seconds = 16; + SkipForward = 18; + SkipBackward = 19; + ChangePlaybackRate = 20; + RateTrack = 21; + LikeTrack = 22; + DislikeTrack = 23; + BookmarkTrack = 24; + SeekToPlaybackPosition = 45; + ChangeRepeatMode = 46; + ChangeShuffleMode = 47; + EnableLanguageOption = 53; + DisableLanguageOption = 54; + NextChapter = 25; + PreviousChapter = 26; + NextAlbum = 27; + PreviousAlbum = 28; + NextPlaylist = 29; + PreviousPlaylist = 30; + BanTrack = 31; + AddTrackToWishList = 32; + RemoveTrackFromWishList = 33; + NextInContext = 34; + PreviousInContext = 35; + ResetPlaybackTimeout = 41; + SetPlaybackQueue = 48; + AddNowPlayingItemToLibrary = 49; + CreateRadioStation = 50; + AddItemToLibrary = 51; + InsertIntoPlaybackQueue = 52; + ReorderPlaybackQueue = 55; + RemoveFromPlaybackQueue = 56; + PlayItemInPlaybackQueue = 57; +} -NextChapter=25; -PreviousChapter=26; -NextAlbum=27; -PreviousAlbum=28; -NextPlaylist=29; -PreviousPlaylist=30; -BanTrack=31; -AddTrackToWishList=32; -RemoveTrackFromWishList=33; -NextInContext=34; -PreviousInContext=35; +message CommandInfo { + enum RepeatMode { + Unknown = 0; + One = 1; + All = 2; + } -ResetPlaybackTimeout=41; -SetPlaybackQueue=48; -AddNowPlayingItemToLibrary=49; -CreateRadioStation=50; -AddItemToLibrary=51; -InsertIntoPlaybackQueue=52; + enum ShuffleMode { + Unkown = 0; + Off = 1; + Albums = 2; + Songs = 3; + } -ReorderPlaybackQueue=55; -RemoveFromPlaybackQueue=56; -PlayItemInPlaybackQueue=57; + optional Command command = 1; + optional bool enabled = 2; + optional bool active = 3; + repeated double preferredIntervals = 4; + optional string localizedTitle = 5; + optional float minimumRating = 6; + optional float maximumRating = 7; + repeated float supportedRates = 8; + optional string localizedShortTitle = 9; + optional RepeatMode repeatMode = 10; + optional ShuffleMode shuffleMode = 11; + optional int32 presentationStyle = 12; + optional int32 skipInterval = 13; + optional int32 numAvailableSkips = 14; + optional int32 skipFrequency = 15; + optional int32 canScrub = 16; + repeated int32 supportedPlaybackQueueTypes = 17; + repeated string supportedCustomQueueIdentifiers = 18; + repeated int32 supportedInsertionPositions = 19; + optional bool supportsSharedQueue = 20; } - -message CommandInfo { - optional Command command = 1; - optional bool enabled = 2; - optional bool active = 3; - repeated double preferredIntervals = 4; - optional string localizedTitle = 5; - optional float minimumRating = 6; - optional float maximumRating = 7; - repeated float supportedRates = 8; - optional string localizedShortTitle = 9; - optional int32 repeatMode = 10; - optional int32 shuffleMode = 11; - optional int32 presentationStyle = 12; - optional int32 skipInterval = 13; - optional int32 numAvailableSkips = 14; - optional int32 skipFrequency = 15; - optional int32 canScrub = 16; - repeated int32 supportedPlaybackQueueTypes = 17; - repeated string supportedCustomQueueIdentifiers = 18; - repeated int32 supportedInsertionPositions = 19; - optional bool supportsSharedQueue = 20; -} \ No newline at end of file diff --git a/dist/lib/protos/CommandOptions.proto b/dist/lib/protos/CommandOptions.proto old mode 100755 new mode 100644 index 21ac017..3ef03fc --- a/dist/lib/protos/CommandOptions.proto +++ b/dist/lib/protos/CommandOptions.proto @@ -1,34 +1,47 @@ syntax = "proto2"; message CommandOptions { - optional string sourceId = 2; - optional string mediaType = 3; - optional bool externalPlayerCommand = 4; - optional float skipInterval = 5; - optional float playbackRate = 6; - optional float rating = 7; - optional bool negative = 8; - optional double playbackPosition = 9; - optional int32 repeatMode = 10; - optional int32 shuffleMode = 11; - optional uint64 trackID = 12; - optional int64 radioStationID = 13; - optional string radioStationHash = 14; - optional bytes systemAppPlaybackQueueData = 15; - optional string destinationAppDisplayID = 16; - optional uint32 sendOptions = 17; - optional bool requestDefermentToPlaybackQueuePosition = 18; - optional string contextID = 19; - optional bool shouldOverrideManuallyCuratedQueue = 20; - optional string stationURL = 21; - optional bool shouldBeginRadioPlayback = 22; - optional int32 playbackQueueInsertionPosition = 23; - optional string contentItemID = 24; - optional int32 playbackQueueOffset = 25; - optional int32 playbackQueueDestinationOffset = 26; - optional bytes languageOption = 27; - optional bytes playbackQueueContext = 28; - optional string insertAfterContentItemID = 29; - optional string nowPlayingContentItemID = 30; - optional int32 replaceIntent = 31; + enum RepeatMode { + Unknown = 0; + One = 1; + All = 2; + } + + enum ShuffleMode { + Unkown = 0; + Off = 1; + Albums = 2; + Songs = 3; + } + + optional string sourceId = 2; + optional string mediaType = 3; + optional bool externalPlayerCommand = 4; + optional float skipInterval = 5; + optional float playbackRate = 6; + optional float rating = 7; + optional bool negative = 8; + optional double playbackPosition = 9; + optional RepeatMode repeatMode = 10; + optional ShuffleMode shuffleMode = 11; + optional uint64 trackID = 12; + optional int64 radioStationID = 13; + optional string radioStationHash = 14; + optional bytes systemAppPlaybackQueueData = 15; + optional string destinationAppDisplayID = 16; + optional uint32 sendOptions = 17; + optional bool requestDefermentToPlaybackQueuePosition = 18; + optional string contextID = 19; + optional bool shouldOverrideManuallyCuratedQueue = 20; + optional string stationURL = 21; + optional bool shouldBeginRadioPlayback = 22; + optional int32 playbackQueueInsertionPosition = 23; + optional string contentItemID = 24; + optional int32 playbackQueueOffset = 25; + optional int32 playbackQueueDestinationOffset = 26; + optional bytes languageOption = 27; + optional bytes playbackQueueContext = 28; + optional string insertAfterContentItemID = 29; + optional string nowPlayingContentItemID = 30; + optional int32 replaceIntent = 31; } \ No newline at end of file diff --git a/dist/lib/protos/ContentItem.proto b/dist/lib/protos/ContentItem.proto old mode 100755 new mode 100644 index 0c81263..05bd256 --- a/dist/lib/protos/ContentItem.proto +++ b/dist/lib/protos/ContentItem.proto @@ -6,13 +6,16 @@ import "LanguageOption.proto"; message ContentItem { optional string identifier = 1; optional ContentItemMetadata metadata = 2; - optional bytes info = 3; - repeated LanguageOption availableLanguageOptions = 4; - repeated LanguageOption currentLanguageOptions = 5; -// optional Lyrics lyrics = 6; -// repeated Sections sections = 7; - optional string parentIdentifier = 8; - optional string ancestorIdentifier = 9; - optional string queueIdentifier = 10; - optional string requestIdentifier = 11; + optional bytes artworkData = 3; + optional string info = 4; + repeated LanguageOption availableLanguageOptions = 5; + repeated LanguageOption currentLanguageOptions = 6; +// optional Lyrics lyrics = 7; +// repeated Sections sections = 8; + optional string parentIdentifier = 9; + optional string ancestorIdentifier = 10; + optional string queueIdentifier = 11; + optional string requestIdentifier = 12; + optional int32 artworkDataWidth = 13; + optional int32 artworkDataHeight = 14; } \ No newline at end of file diff --git a/dist/lib/protos/ContentItemMetadata.proto b/dist/lib/protos/ContentItemMetadata.proto old mode 100755 new mode 100644 index ce2378f..c99c161 --- a/dist/lib/protos/ContentItemMetadata.proto +++ b/dist/lib/protos/ContentItemMetadata.proto @@ -1,6 +1,18 @@ syntax = "proto2"; message ContentItemMetadata { + enum MediaType { + UnknownMediaType = 0; + Audio = 1; + Video = 2; + } + enum MediaSubType { + UnknownMediaSubType = 0; + Music = 1; + Podcast = 4; + AudioBook = 5; + ITunesU = 6; + } optional string title = 1; optional string subtitle = 2; optional bool isContainer = 3; @@ -64,8 +76,8 @@ message ContentItemMetadata { optional float downloadProgress = 61; optional bytes appMetricsData = 62; optional string seriesName = 63; - optional int32 mediaType = 64; - optional int32 mediaSubType = 65; + optional MediaType mediaType = 64; + optional MediaSubType mediaSubType = 65; optional bytes nowPlayingInfoData = 67; optional bytes userInfoData = 68; @@ -81,4 +93,11 @@ message ContentItemMetadata { optional int32 artworkDataHeight = 78; optional bytes currentPlaybackDateData = 79; optional string artworkIdentifier = 80; + optional bool isLoading = 81; + optional bytes artworkURLTemplatesData = 82; + optional int64 legacyUniqueIdentifier = 83; + optional int32 episodeType = 84; + optional string artworkFileURL = 85; + optional string brandIdentifier = 86; + optional string localizedDurationString = 87; } \ No newline at end of file diff --git a/dist/lib/protos/CryptoPairingMessage.proto b/dist/lib/protos/CryptoPairingMessage.proto old mode 100755 new mode 100644 index 1f8a777..5b51e02 --- a/dist/lib/protos/CryptoPairingMessage.proto +++ b/dist/lib/protos/CryptoPairingMessage.proto @@ -7,9 +7,9 @@ extend ProtocolMessage { } message CryptoPairingMessage { - optional bytes pairingData = 1; // Example: <00010006 0101> + required bytes pairingData = 1; // Example: <00010006 0101> required int32 status = 2; // Example: 0 - optional bool isRetrying = 3; - optional bool isUsingSystemPairing = 4; - optional int32 state = 5; + required bool isRetrying = 3; + required bool isUsingSystemPairing = 4; + required int32 state = 5; } diff --git a/dist/lib/protos/DeviceInfoMessage.proto b/dist/lib/protos/DeviceInfoMessage.proto old mode 100755 new mode 100644 index 0b9fef2..923aca0 --- a/dist/lib/protos/DeviceInfoMessage.proto +++ b/dist/lib/protos/DeviceInfoMessage.proto @@ -14,7 +14,30 @@ message DeviceInfoMessage { required string applicationBundleIdentifier = 5; // Example: com.example.myremote optional string applicationBundleVersion = 6; // Example: 107 required int32 protocolVersion = 7; // Example: 1 - optional int32 lastSupportedMessageType = 8; - optional bool allowsPairing = 9; - optional bool supportsSystemPairing = 10; + optional uint32 lastSupportedMessageType = 8; + optional bool supportsSystemPairing = 9; + optional bool allowsPairing = 10; + optional bool connected = 11; + optional string systemMediaApplication = 12; + optional bool supportsACL = 13; + optional bool supportsSharedQueue = 14; + optional bool supportsExtendedMotion = 15; + optional bytes bluetoothAddress = 16; + optional uint32 sharedQueueVersion = 17; + optional string deviceUID = 19; + optional string managedConfigDeviceID = 20; + optional int32 deviceClass = 21; + optional uint32 logicalDeviceCount = 22; + optional bool tightlySyncedGroup = 23; + optional bool isProxyGroupPlayer = 24; + optional string tightSyncUID = 25; + optional string groupUID = 26; + optional string groupName = 27; + // optional <> groupedDevices = 28; + optional bool isGroupLeader = 29; + optional bool isAirplayActive = 30; + optional string systemPodcastApplication = 31; + optional string enderDefaultGroupUID = 32; + repeated string airplayReceivers = 33; + optional string linkAgent = 34; } diff --git a/dist/lib/protos/DeviceInfoUpdateMessage.proto b/dist/lib/protos/DeviceInfoUpdateMessage.proto new file mode 100644 index 0000000..9de6bc2 --- /dev/null +++ b/dist/lib/protos/DeviceInfoUpdateMessage.proto @@ -0,0 +1,43 @@ +syntax = "proto2"; + +import "ProtocolMessage.proto"; + +extend ProtocolMessage { + optional DeviceInfoUpdateMessage deviceInfoMessage = 20; +} + +message DeviceInfoUpdateMessage { + required string uniqueIdentifier = 1; // Example: B8D8678C-9DA9-4D29-9338-5D6B827B8063 + required string name = 2; // Example: Jean's iPhone + optional string localizedModelName = 3; // Example: iPhone + required string systemBuildVersion = 4; // Example: 13F69 + required string applicationBundleIdentifier = 5; // Example: com.example.myremote + optional string applicationBundleVersion = 6; // Example: 107 + required int32 protocolVersion = 7; // Example: 1 + optional uint32 lastSupportedMessageType = 8; + optional bool supportsSystemPairing = 9; + optional bool allowsPairing = 10; + optional bool connected = 11; + optional string systemMediaApplication = 12; + optional bool supportsACL = 13; + optional bool supportsSharedQueue = 14; + optional bool supportsExtendedMotion = 15; + optional bytes bluetoothAddress = 16; + optional uint32 sharedQueueVersion = 17; + optional string deviceUID = 19; + optional string managedConfigDeviceID = 20; + optional int32 deviceClass = 21; + optional uint32 logicalDeviceCount = 22; + optional bool tightlySyncedGroup = 23; + optional bool isProxyGroupPlayer = 24; + optional string tightSyncUID = 25; + optional string groupUID = 26; + optional string groupName = 27; + // optional <> groupedDevices = 28; + optional bool isGroupLeader = 29; + optional bool isAirplayActive = 30; + optional string systemPodcastApplication = 31; + optional string enderDefaultGroupUID = 32; + repeated string airplayReceivers = 33; + optional string linkAgent = 34; +} diff --git a/dist/lib/protos/GetKeyboardSessionMessage.proto b/dist/lib/protos/GetKeyboardSessionMessage.proto old mode 100755 new mode 100644 index b3d7b3e..ea075d1 --- a/dist/lib/protos/GetKeyboardSessionMessage.proto +++ b/dist/lib/protos/GetKeyboardSessionMessage.proto @@ -7,5 +7,5 @@ extend ProtocolMessage { } message GetKeyboardSessionMessage { - + } diff --git a/dist/lib/protos/KeyboardMessage.proto b/dist/lib/protos/KeyboardMessage.proto old mode 100755 new mode 100644 index bd5501b..393d246 --- a/dist/lib/protos/KeyboardMessage.proto +++ b/dist/lib/protos/KeyboardMessage.proto @@ -1,7 +1,7 @@ syntax = "proto2"; import "ProtocolMessage.proto"; -import "TextEditingAttributes.proto"; +import "TextEditingAttributesMessage.proto"; extend ProtocolMessage { optional KeyboardMessage keyboardMessage = 28; @@ -10,4 +10,5 @@ extend ProtocolMessage { message KeyboardMessage { optional int32 state = 1; optional TextEditingAttributes attributes = 3; + optional bytes encryptedTextCyphertext = 4; } diff --git a/dist/lib/protos/LanguageOption.proto b/dist/lib/protos/LanguageOption.proto old mode 100755 new mode 100644 diff --git a/dist/lib/protos/NotificationMessage.proto b/dist/lib/protos/NotificationMessage.proto old mode 100755 new mode 100644 index 5df69cd..7ad6a3a --- a/dist/lib/protos/NotificationMessage.proto +++ b/dist/lib/protos/NotificationMessage.proto @@ -1,7 +1,6 @@ syntax = "proto2"; import "ProtocolMessage.proto"; -import "PlayerPath.proto"; extend ProtocolMessage { optional NotificationMessage notificationMessage = 16; @@ -9,6 +8,5 @@ extend ProtocolMessage { message NotificationMessage { repeated string notification = 1; - repeated bytes userInfos = 2; - repeated PlayerPath playerPaths = 3; + repeated bytes userInfo = 2; } \ No newline at end of file diff --git a/dist/lib/protos/NowPlayingClient.proto b/dist/lib/protos/NowPlayingClient.proto old mode 100755 new mode 100644 index eb738a7..41032db --- a/dist/lib/protos/NowPlayingClient.proto +++ b/dist/lib/protos/NowPlayingClient.proto @@ -1,11 +1,12 @@ syntax = "proto2"; message NowPlayingClient { - optional int32 processIdentifier = 1; - optional string bundleIdentifier = 2; - optional string parentApplicationBundleIdentifier = 3; - optional int32 processUserIdentifier = 4; - optional int32 nowPlayingVisibility = 5; + optional int32 processIdentifier = 1; + optional string bundleIdentifier = 2; + optional string parentApplicationBundleIdentifier = 3; + optional int32 processUserIdentifier = 4; + optional int32 nowPlayingVisibility = 5; // optional TintColor tintColor = 6; - optional string displayName = 7; -} \ No newline at end of file + optional string displayName = 7; + repeated string bundleIdentifierHierarchys = 8; +} diff --git a/dist/lib/protos/NowPlayingInfo.proto b/dist/lib/protos/NowPlayingInfo.proto old mode 100755 new mode 100644 index 567ff4c..c53e527 --- a/dist/lib/protos/NowPlayingInfo.proto +++ b/dist/lib/protos/NowPlayingInfo.proto @@ -1,13 +1,26 @@ syntax = "proto2"; message NowPlayingInfo { + enum RepeatMode { + Unknown = 0; + One = 1; + All = 2; + } + + enum ShuffleMode { + Unkown = 0; + Off = 1; + Albums = 2; + Songs = 3; + } + optional string album = 1; optional string artist = 2; optional double duration = 3; optional double elapsedTime = 4; optional float playbackRate = 5; - optional int32 repeatMode = 6; - optional int32 shuffleMode = 7; + optional RepeatMode repeatMode = 6; + optional ShuffleMode shuffleMode = 7; optional double timestamp = 8; optional string title = 9; optional uint64 uniqueIdentifier = 10; @@ -19,4 +32,4 @@ message NowPlayingInfo { optional bytes artworkDataDigest = 16; optional bool isAlwaysLive = 17; optional bool isAdvertisement = 18; -} \ No newline at end of file +} diff --git a/dist/lib/protos/NowPlayingPlayer.proto b/dist/lib/protos/NowPlayingPlayer.proto old mode 100755 new mode 100644 index 6d6dc07..85b944f --- a/dist/lib/protos/NowPlayingPlayer.proto +++ b/dist/lib/protos/NowPlayingPlayer.proto @@ -1,7 +1,7 @@ syntax = "proto2"; message NowPlayingPlayer { - optional string identifier = 1; - optional string displayName = 2; - optional bool isDefaultPlayer = 3; -} \ No newline at end of file + optional string identifier = 1; + optional string displayName = 2; + optional bool isDefaultPlayer = 3; +} diff --git a/dist/lib/protos/Origin.proto b/dist/lib/protos/Origin.proto old mode 100755 new mode 100644 index 9d51236..47a58f9 --- a/dist/lib/protos/Origin.proto +++ b/dist/lib/protos/Origin.proto @@ -3,8 +3,14 @@ syntax = "proto2"; import "DeviceInfoMessage.proto"; message Origin { - optional int32 type = 1; - optional string displayName = 2; - optional int32 identifier = 3; - optional DeviceInfoMessage deviceInfo = 4; + enum Type { + Unknown = 0; + Local = 1; + Custom = 2; + } + + optional Type type = 1; + optional string displayName = 2; + optional int32 identifier = 3; + optional DeviceInfoMessage deviceInfo = 4; } \ No newline at end of file diff --git a/dist/lib/protos/PlaybackQueue.proto b/dist/lib/protos/PlaybackQueue.proto index 5d67163..164b78b 100644 --- a/dist/lib/protos/PlaybackQueue.proto +++ b/dist/lib/protos/PlaybackQueue.proto @@ -1,10 +1,14 @@ syntax = "proto2"; import "ContentItem.proto"; -import "PlayerPath.proto"; +import "PlaybackQueueContext.proto"; message PlaybackQueue { - optional ContentItem contentItem = 2; - optional string requestID = 4; - optional PlayerPath playerPath = 5; -} \ No newline at end of file + optional int32 location = 1; + repeated ContentItem contentItems = 2; + optional PlaybackQueueContext context = 3; + optional string requestId = 4; + // optional ResolvedPlayerPath resolvedPlayerPath = 5; + optional bool sendingPlaybackQueueTransaction = 6; + optional string queueIdentifier = 7; +} diff --git a/dist/lib/protos/PlaybackQueueCapabilities.proto b/dist/lib/protos/PlaybackQueueCapabilities.proto new file mode 100644 index 0000000..58203d7 --- /dev/null +++ b/dist/lib/protos/PlaybackQueueCapabilities.proto @@ -0,0 +1,7 @@ +syntax = "proto2"; + +message PlaybackQueueCapabilities { + optional bool requestByRange = 1; + optional bool requestByIdentifiers = 2; + optional bool requestByRequest = 3; +} diff --git a/dist/lib/protos/PlaybackQueueContext.proto b/dist/lib/protos/PlaybackQueueContext.proto new file mode 100644 index 0000000..32742f8 --- /dev/null +++ b/dist/lib/protos/PlaybackQueueContext.proto @@ -0,0 +1,5 @@ +syntax = "proto2"; + +message PlaybackQueueContext { + optional string revision = 1; +} diff --git a/dist/lib/protos/PlaybackQueueRequestMessage.proto b/dist/lib/protos/PlaybackQueueRequestMessage.proto index c3622df..bfe1f35 100644 --- a/dist/lib/protos/PlaybackQueueRequestMessage.proto +++ b/dist/lib/protos/PlaybackQueueRequestMessage.proto @@ -1,17 +1,29 @@ syntax = "proto2"; import "ProtocolMessage.proto"; +import "PlaybackQueueContext.proto"; +import "PlayerPath.proto"; extend ProtocolMessage { optional PlaybackQueueRequestMessage playbackQueueRequestMessage = 37; } message PlaybackQueueRequestMessage { - required int32 location = 1; - required int32 length = 2; + optional int32 location = 1; + optional int32 length = 2; optional bool includeMetadata = 3; optional double artworkWidth = 4; optional double artworkHeight = 5; + optional bool includeLyrics = 6; + optional bool includeSections = 7; + optional bool includeInfo = 8; optional bool includeLanguageOptions = 9; - required string requestID = 11; + optional PlaybackQueueContext context = 10; + optional string requestID = 11; + repeated string contentItemIdentifiers = 12; + optional bool returnContentItemAssetsInUserCompletion = 13; + optional PlayerPath playerPath = 14; + optional int32 cachingPolicy = 15; + optional string label = 16; + optional bool isLegacyNowPlayingInfoRequest = 17; } diff --git a/dist/lib/protos/PlayerPath.proto b/dist/lib/protos/PlayerPath.proto old mode 100755 new mode 100644 index 630bff1..9dd87fa --- a/dist/lib/protos/PlayerPath.proto +++ b/dist/lib/protos/PlayerPath.proto @@ -5,7 +5,7 @@ import "NowPlayingClient.proto"; import "NowPlayingPlayer.proto"; message PlayerPath { - optional Origin origin = 1; - optional NowPlayingClient client = 2; - optional NowPlayingPlayer player = 3; + optional Origin origin = 1; + optional NowPlayingClient client = 2; + optional NowPlayingPlayer player = 3; } \ No newline at end of file diff --git a/dist/lib/protos/ProtocolMessage.proto b/dist/lib/protos/ProtocolMessage.proto old mode 100755 new mode 100644 index d9e6951..d1e937e --- a/dist/lib/protos/ProtocolMessage.proto +++ b/dist/lib/protos/ProtocolMessage.proto @@ -5,14 +5,13 @@ message ProtocolMessage { enum Type { SEND_COMMAND_MESSAGE = 1; - COMMAND_RESULT_MESSAGE = 2; + SEND_COMMAND_RESULT_MESSAGE = 2; GET_STATE_MESSAGE = 3; SET_STATE_MESSAGE = 4; SET_ARTWORK_MESSAGE = 5; REGISTER_HID_DEVICE_MESSAGE = 6; REGISTER_HID_DEVICE_RESULT_MESSAGE = 7; SEND_HID_EVENT_MESSAGE = 8; - SEND_HID_REPORT_MESSAGE = 9; SEND_VIRTUAL_TOUCH_EVENT_MESSAGE = 10; NOTIFICATION_MESSAGE = 11; CONTENT_ITEMS_CHANGED_NOTIFICATION_MESSAGE = 12; @@ -38,55 +37,18 @@ message ProtocolMessage { CRYPTO_PAIRING_MESSAGE = 34; GAME_CONTROLLER_PROPERTIES_MESSAGE = 35; SET_READY_STATE_MESSAGE = 36; - DEVICE_INFO_UPDATE = 37; - SET_DISCONNECTING_STATE_MESSAGE = 38; - SEND_BUTTON_EVENT = 39; + DEVICE_INFO_UPDATE_MESSAGE = 37; + SET_CONNECTION_STATE_MESSAGE = 38; SET_HILITE_MODE_MESSAGE = 40; WAKE_DEVICE_MESSAGE = 41; - GENERIC_MESSAGE = 42; - SEND_PACKED_VIRTUAL_TOUCH_EVENT = 43; - SEND_LYRICS_EVENT = 44; - PLAYBACK_QUEUE_CAPABILITIES_REQUEST = 45; - MODIFY_OUTPUT_CONTEXT_REQUEST = 46; + SEND_PACKED_VIRTUAL_TOUCH_EVENT_MESSAGE = 43; + SET_NOW_PLAYING_CLIENT_MESSAGE = 46; + UPDATE_CLIENT_MESSAGE = 55; + UPDATE_CONTENT_ITEM_MESSAGE = 56; } - required Type type = 1; // Identifies which underlying message is filled in. + optional Type type = 1; // Identifies which underlying message is filled in. optional string identifier = 2; optional int32 priority = 4; - - // One of the following will be filled in. -// optional SendCommandMessage sendCommandMessage = 6; -// optional SendCommandResultMessage sendCommandResultMessage = 7; -// optional SetStateMessage setStateMessage = 9; -// optional SetArtworkMessage setArtworkMessage = 10; -// optional RegisterHIDDeviceMessage registerHIDDeviceMessage = 11; -// optional RegisterHIDDeviceResultMessage registerHIDDeviceResultMessage = 12; -// optional SendHIDEventMessage sendHIDEventMessage = 13; -// optional SendVirtualTouchEventMessage sendVirtualTouchEventMessage = 15; -// optional NotificationMessage notificationMessage = 16; -// optional ContentItemsChangedNotificationMessage contentItemsChangedNotificationMessage = 17; -// optional DeviceInfoMessage deviceInfoMessage = 20; -// optional ClientUpdatesConfigMessage clientUpdatesConfigMessage = 21; -// optional VolumeControlAvailabilityMessage volumeControlAvailabilityMessage = 22; -// optional GameControllerMessage gameControllerMessage = 23; -// optional RegisterGameControllerMessage registerGameControllerMessage = 24; -// optional RegisterGameControllerResponseMessage registerGameControllerResponseMessage = 25; -// optional UnregisterGameControllerMessage unregisterGameControllerMessage = 26; -// optional RegisterForGameControllerEventsMessage registerForGameControllerEventsMessage = 27; -// optional KeyboardMessage keyboardMessage = 28; -// optional GetKeyboardSessionMessage getKeyboardSessionMessage = 29; -// optional TextInputMessage textInputMessage = 30; -// optional GetVoiceInputDevicesMessage getVoiceInputDevicesMessage = 31; -// optional GetVoiceInputDevicesResponseMessage getVoiceInputDevicesResponseMessage = 32; -// optional RegisterVoiceInputDeviceMessage registerVoiceInputDeviceMessage = 33; -// optional RegisterVoiceInputDeviceResponseMessage registerVoiceInputDeviceResponseMessage = 34; -// optional SetRecordingStateMessage setRecordingStateMessage = 35; -// optional SendVoiceInputMessage sendVoiceInputMessage = 36; -// optional GetPlaybackQueueMessage getPlaybackQueueMessage = 37; -// optional TransactionMessage transactionMessage = 38; -// optional CryptoPairingMessage cryptoPairingMessage = 39; -// optional GameControllerPropertiesMessage gameControllerPropertiesMessage = 40; -// optional SetReadyStateMessage setReadyStateMessage = 41; -// optional SendButtonEventMessage sendButtonEventMessage = 43; -// optional SetHiliteModeMessage setHiliteModeMessage = 44; + optional uint64 timestamp = 5; } diff --git a/dist/lib/protos/RegisterForGameControllerEventsMessage.proto b/dist/lib/protos/RegisterForGameControllerEventsMessage.proto old mode 100755 new mode 100644 index 9a1544d..f34cd43 --- a/dist/lib/protos/RegisterForGameControllerEventsMessage.proto +++ b/dist/lib/protos/RegisterForGameControllerEventsMessage.proto @@ -7,5 +7,12 @@ extend ProtocolMessage { } message RegisterForGameControllerEventsMessage { - optional int32 inputModeFlags = 1; + enum InputModeFlags { + None = 0; + Motion = 1; + Buttons = 2; + Digitizer = 3; + } + + optional InputModeFlags inputModeFlags = 1; } diff --git a/dist/lib/protos/RegisterHIDDeviceMessage.proto b/dist/lib/protos/RegisterHIDDeviceMessage.proto old mode 100755 new mode 100644 index 9b3fb43..87d09a0 --- a/dist/lib/protos/RegisterHIDDeviceMessage.proto +++ b/dist/lib/protos/RegisterHIDDeviceMessage.proto @@ -1,7 +1,7 @@ syntax = "proto2"; import "ProtocolMessage.proto"; -import "VirtualTouchDeviceDescriptor.proto"; +import "VirtualTouchDeviceDescriptorMessage.proto"; extend ProtocolMessage { optional RegisterHIDDeviceMessage registerHIDDeviceMessage = 11; diff --git a/dist/lib/protos/RegisterHIDDeviceResultMessage.proto b/dist/lib/protos/RegisterHIDDeviceResultMessage.proto old mode 100755 new mode 100644 diff --git a/dist/lib/protos/RegisterVoiceInputDeviceMessage.proto b/dist/lib/protos/RegisterVoiceInputDeviceMessage.proto old mode 100755 new mode 100644 index 672de4a..1fb1e97 --- a/dist/lib/protos/RegisterVoiceInputDeviceMessage.proto +++ b/dist/lib/protos/RegisterVoiceInputDeviceMessage.proto @@ -1,7 +1,7 @@ syntax = "proto2"; import "ProtocolMessage.proto"; -import "VoiceInputDeviceDescriptor.proto"; +import "VoiceInputDeviceDescriptorMessage.proto"; extend ProtocolMessage { optional RegisterVoiceInputDeviceMessage registerVoiceInputDeviceMessage = 33; diff --git a/dist/lib/protos/RegisterVoiceInputDeviceResponseMessage.proto b/dist/lib/protos/RegisterVoiceInputDeviceResponseMessage.proto old mode 100755 new mode 100644 diff --git a/dist/lib/protos/SendCommandMessage.proto b/dist/lib/protos/SendCommandMessage.proto old mode 100755 new mode 100644 diff --git a/dist/lib/protos/SendCommandResultMessage.proto b/dist/lib/protos/SendCommandResultMessage.proto new file mode 100644 index 0000000..f8a28d9 --- /dev/null +++ b/dist/lib/protos/SendCommandResultMessage.proto @@ -0,0 +1,13 @@ +syntax = "proto2"; + +import "ProtocolMessage.proto"; + +extend ProtocolMessage { + optional SendCommandResultMessage sendCommandResultMessage = 7; +} + +message SendCommandResultMessage { + optional uint32 errorCode = 1; + optional uint32 handlerReturnStatus = 2; + repeated bytes handlerReturnStatusDatas = 3; +} diff --git a/dist/lib/protos/SetConnectionStateMessage.proto b/dist/lib/protos/SetConnectionStateMessage.proto index f84e1c0..1c5269c 100644 --- a/dist/lib/protos/SetConnectionStateMessage.proto +++ b/dist/lib/protos/SetConnectionStateMessage.proto @@ -8,7 +8,10 @@ extend ProtocolMessage { message SetConnectionStateMessage { enum ConnectionState { + None = 0; + Connecting = 1; Connected = 2; + Disconnected = 3; } optional ConnectionState state = 1; diff --git a/dist/lib/protos/SetHiliteModeMessage.proto b/dist/lib/protos/SetHiliteModeMessage.proto old mode 100755 new mode 100644 index 355b59d..58ad486 --- a/dist/lib/protos/SetHiliteModeMessage.proto +++ b/dist/lib/protos/SetHiliteModeMessage.proto @@ -7,5 +7,5 @@ extend ProtocolMessage { } message SetHiliteModeMessage { - optional bool hiliteMode = 1; -} \ No newline at end of file + optional int32 hiliteMode = 1; +} diff --git a/dist/lib/protos/SetNowPlayingClientMessage.proto b/dist/lib/protos/SetNowPlayingClientMessage.proto new file mode 100644 index 0000000..749ebf3 --- /dev/null +++ b/dist/lib/protos/SetNowPlayingClientMessage.proto @@ -0,0 +1,12 @@ +syntax = "proto2"; + +import "ProtocolMessage.proto"; +import "NowPlayingClient.proto"; + +extend ProtocolMessage { + optional SetNowPlayingClientMessage setNowPlayingClientMessage = 50; +} + +message SetNowPlayingClientMessage { + optional NowPlayingClient client = 1; +} diff --git a/dist/lib/protos/SetStateMessage.proto b/dist/lib/protos/SetStateMessage.proto old mode 100755 new mode 100644 index 38a9f4c..c065c45 --- a/dist/lib/protos/SetStateMessage.proto +++ b/dist/lib/protos/SetStateMessage.proto @@ -2,22 +2,34 @@ syntax = "proto2"; import "ProtocolMessage.proto"; import "NowPlayingInfo.proto"; +import "PlaybackQueue.proto"; import "SupportedCommands.proto"; +import "PlaybackQueueCapabilities.proto"; import "PlayerPath.proto"; -import "PlaybackQueue.proto"; +import "PlaybackQueueRequestMessage.proto"; extend ProtocolMessage { optional SetStateMessage setStateMessage = 9; } message SetStateMessage { + enum PlaybackState { + Unknown = 0; + Playing = 1; + Paused = 2; + Stopped = 3; + Interrupted = 4; + Seeking = 5; + } + optional NowPlayingInfo nowPlayingInfo = 1; optional SupportedCommands supportedCommands = 2; optional PlaybackQueue playbackQueue = 3; optional string displayID = 4; optional string displayName = 5; - optional uint32 playbackState = 6; -// optional PlaybackQueueCapabilities playbackQueueCapabilities = 8; + optional PlaybackState playbackState = 6; + optional PlaybackQueueCapabilities playbackQueueCapabilities = 8; optional PlayerPath playerPath = 9; -// optional Request request = 10; -} \ No newline at end of file + optional PlaybackQueueRequestMessage request = 10; + optional double playbackStateTimestamp = 11; +} diff --git a/dist/lib/protos/SupportedCommands.proto b/dist/lib/protos/SupportedCommands.proto old mode 100755 new mode 100644 index ea4f117..99ea008 --- a/dist/lib/protos/SupportedCommands.proto +++ b/dist/lib/protos/SupportedCommands.proto @@ -3,5 +3,5 @@ syntax = "proto2"; import "CommandInfo.proto"; message SupportedCommands { - repeated CommandInfo supportedCommands = 1; -} \ No newline at end of file + repeated CommandInfo supportedCommands = 1; +} diff --git a/dist/lib/protos/TextEditingAttributesMessage.proto b/dist/lib/protos/TextEditingAttributesMessage.proto new file mode 100644 index 0000000..0dea34f --- /dev/null +++ b/dist/lib/protos/TextEditingAttributesMessage.proto @@ -0,0 +1,9 @@ +syntax = "proto2"; + +import "TextInputTraitsMessage.proto"; + +message TextEditingAttributes { + optional string title = 1; + optional string prompt = 2; + optional TextInputTraits inputTraits = 3; +} \ No newline at end of file diff --git a/dist/lib/protos/TextInputMessage.proto b/dist/lib/protos/TextInputMessage.proto new file mode 100644 index 0000000..1b2f291 --- /dev/null +++ b/dist/lib/protos/TextInputMessage.proto @@ -0,0 +1,20 @@ +syntax = "proto2"; + +import "ProtocolMessage.proto"; + +extend ProtocolMessage { + optional TextInputMessage textInputMessage = 30; +} + +message TextInputMessage { + enum ActionType { + Unknown = 0; + Insert = 1; + Set = 2; + Delete = 3; + ClearText = 4; // "Clear" collides with base measage and makes mypy sad + } + optional double timestamp = 1; + optional string text = 2; + optional ActionType actionType = 3; +} diff --git a/dist/lib/protos/TextInputTraitsMessage.proto b/dist/lib/protos/TextInputTraitsMessage.proto new file mode 100644 index 0000000..b96c00a --- /dev/null +++ b/dist/lib/protos/TextInputTraitsMessage.proto @@ -0,0 +1,51 @@ +syntax = "proto2"; + +message TextInputTraits { + enum AutocapitalizationType { + NONE = 0; + WORDS = 1; + SENTENCES = 2; + CHARACTERS = 3; + } + + enum KeyboardType { + KEYBOARD_TYPE_DEFAULT = 0; + ASCII_CAPABLE = 1; + NUMBERS_AND_PUNCTUATION = 2; + URL = 3; + NUMBER_PAD = 4; + PHONE_PAD = 5; + NAME_PHONE_PAD = 6; + EMAIL_ADDRESS = 7; + DECIMAL_PAD = 8; + TWITTER = 9; + WEB_SEARCH = 10; + // ALPHABET = 1; + } + + enum ReturnKeyType { + RETURN_KEY_DEFAULT = 0; + GO = 1; + GOOGLE = 2; + JOIN = 3; + NEXT = 4; + ROUTE = 5; + SEARCH = 6; + SEND = 7; + YAHOO = 8; + DONE = 9; + EMERGENCY_CALL = 10; + CONTINUE = 11; + } + + optional AutocapitalizationType autocapitalizationType = 1; + optional KeyboardType keyboardType = 2; + optional ReturnKeyType returnKeyType = 3; + optional bool autocorrection = 4; + optional bool spellchecking = 5; + optional bool enablesReturnKeyAutomatically = 6; + optional bool secureTextEntry = 7; + optional uint64 validTextRangeLocation = 8; + optional uint64 validTextRangeLength = 9; + repeated uint64 PINEntrySeparatorIndexes = 10; +} diff --git a/dist/lib/protos/TransactionKey.proto b/dist/lib/protos/TransactionKey.proto old mode 100755 new mode 100644 diff --git a/dist/lib/protos/TransactionMessage.proto b/dist/lib/protos/TransactionMessage.proto old mode 100755 new mode 100644 index 87df06c..f117cbf --- a/dist/lib/protos/TransactionMessage.proto +++ b/dist/lib/protos/TransactionMessage.proto @@ -2,14 +2,13 @@ syntax = "proto2"; import "TransactionPackets.proto"; import "ProtocolMessage.proto"; -import "PlayerPath.proto"; extend ProtocolMessage { optional TransactionMessage transactionMessage = 38; } message TransactionMessage { - optional uint64 name = 1; - optional TransactionPackets packets = 2; - optional PlayerPath playerPath = 3; + optional uint64 name = 1; + optional TransactionPackets packets = 2; +// optional NowPlayingPlayerPath playerPath = 3; } \ No newline at end of file diff --git a/dist/lib/protos/TransactionPacket.proto b/dist/lib/protos/TransactionPacket.proto old mode 100755 new mode 100644 diff --git a/dist/lib/protos/TransactionPackets.proto b/dist/lib/protos/TransactionPackets.proto old mode 100755 new mode 100644 diff --git a/dist/lib/protos/UpdateClientMessage.proto b/dist/lib/protos/UpdateClientMessage.proto new file mode 100644 index 0000000..832b62b --- /dev/null +++ b/dist/lib/protos/UpdateClientMessage.proto @@ -0,0 +1,12 @@ +syntax = "proto2"; + +import "ProtocolMessage.proto"; +import "NowPlayingClient.proto"; + +extend ProtocolMessage { + optional UpdateClientMessage updateClientMessage = 59; +} + +message UpdateClientMessage { + optional NowPlayingClient client = 1; +} diff --git a/dist/lib/protos/UpdateContentItemMessage.proto b/dist/lib/protos/UpdateContentItemMessage.proto new file mode 100644 index 0000000..5395b84 --- /dev/null +++ b/dist/lib/protos/UpdateContentItemMessage.proto @@ -0,0 +1,14 @@ +syntax = "proto2"; + +import "ProtocolMessage.proto"; +import "ContentItem.proto"; +import "PlayerPath.proto"; + +extend ProtocolMessage { + optional UpdateContentItemMessage updateContentItemMessage = 60; +} + +message UpdateContentItemMessage { + repeated ContentItem contentItems = 1; + optional PlayerPath playerPath = 2; +} diff --git a/dist/lib/protos/VirtualTouchDeviceDescriptorMessage.proto b/dist/lib/protos/VirtualTouchDeviceDescriptorMessage.proto new file mode 100644 index 0000000..b7b0555 --- /dev/null +++ b/dist/lib/protos/VirtualTouchDeviceDescriptorMessage.proto @@ -0,0 +1,8 @@ +syntax = "proto2"; + +message VirtualTouchDeviceDescriptor { + optional bool absolute = 1; + optional bool integratedDisplay = 2; + optional float screenSizeWidth = 3; + optional float screenSizeHeight = 4; +} \ No newline at end of file diff --git a/dist/lib/protos/VoiceInputDeviceDescriptorMessage.proto b/dist/lib/protos/VoiceInputDeviceDescriptorMessage.proto new file mode 100644 index 0000000..f0295df --- /dev/null +++ b/dist/lib/protos/VoiceInputDeviceDescriptorMessage.proto @@ -0,0 +1,8 @@ +syntax = "proto2"; + +import "AudioFormatSettingsMessage.proto"; + +message VoiceInputDeviceDescriptor { + optional AudioFormatSettings defaultFormat = 1; + repeated AudioFormatSettings supportedFormats = 2; +} \ No newline at end of file diff --git a/dist/lib/protos/VolumeControlAvailabilityMessage.proto b/dist/lib/protos/VolumeControlAvailabilityMessage.proto index 7072c26..ab88944 100644 --- a/dist/lib/protos/VolumeControlAvailabilityMessage.proto +++ b/dist/lib/protos/VolumeControlAvailabilityMessage.proto @@ -8,4 +8,5 @@ extend ProtocolMessage { message VolumeControlAvailabilityMessage { optional bool volumeControlAvailable = 1; + optional int32 volumeCapabilities = 2; } \ No newline at end of file diff --git a/package.json b/package.json index c4e1bdb..568e23e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-appletv-x", - "version": "1.0.11", + "version": "1.0.12", "description": "A Node.js library for communicating with an Apple TV", "homepage": "https://github.com/stickpin/node-appletv-x", "bugs": "https://github.com/stickpin/node-appletv-x/issues",