summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2019-09-03 14:18:57 -0400
committerGitHub <noreply@github.com>2019-09-03 14:18:57 -0400
commitd433cf5ae5cb04d0ede46e2cfbd1dea105698891 (patch)
tree02bc6447fbce7db38d2f488f785dd58aa49014de
parent3422b26e3e0a9e34c9c7ae943611a3d534e8d217 (diff)
parent7009774334469b9bf6d9d5925bd13c7b02e6f5df (diff)
downloadsdl_ios-d433cf5ae5cb04d0ede46e2cfbd1dea105698891.tar.gz
Merge pull request #1350 from mjuarez-ford/feature/issue_0216_widget_support
Implement SDL-0216 Widget Support
-rw-r--r--SmartDeviceLink-iOS.podspec10
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj117
-rw-r--r--SmartDeviceLink.podspec10
-rw-r--r--SmartDeviceLink/SDLChoiceSetManager.m10
-rw-r--r--SmartDeviceLink/SDLCreateWindow.h72
-rw-r--r--SmartDeviceLink/SDLCreateWindow.m96
-rw-r--r--SmartDeviceLink/SDLCreateWindowResponse.h13
-rw-r--r--SmartDeviceLink/SDLCreateWindowResponse.m23
-rw-r--r--SmartDeviceLink/SDLDeleteWindow.h32
-rw-r--r--SmartDeviceLink/SDLDeleteWindow.m40
-rw-r--r--SmartDeviceLink/SDLDeleteWindowResponse.h17
-rw-r--r--SmartDeviceLink/SDLDeleteWindowResponse.m26
-rw-r--r--SmartDeviceLink/SDLDisplayCapability.h64
-rw-r--r--SmartDeviceLink/SDLDisplayCapability.m66
-rw-r--r--SmartDeviceLink/SDLFunctionID.m2
-rw-r--r--SmartDeviceLink/SDLLifecycleManager.m9
-rw-r--r--SmartDeviceLink/SDLMenuManager.m10
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.h4
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.m6
-rw-r--r--SmartDeviceLink/SDLNotificationDispatcher.m16
-rw-r--r--SmartDeviceLink/SDLOnHMIStatus.h7
-rw-r--r--SmartDeviceLink/SDLOnHMIStatus.m9
-rw-r--r--SmartDeviceLink/SDLPermissionManager.m5
-rw-r--r--SmartDeviceLink/SDLPredefinedWindows.h15
-rw-r--r--SmartDeviceLink/SDLProxyListener.h32
-rw-r--r--SmartDeviceLink/SDLRPCFunctionNames.h2
-rw-r--r--SmartDeviceLink/SDLRPCFunctionNames.m2
-rw-r--r--SmartDeviceLink/SDLRPCParameterNames.h10
-rw-r--r--SmartDeviceLink/SDLRPCParameterNames.m10
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterfaceResponse.h8
-rw-r--r--SmartDeviceLink/SDLShow.h16
-rw-r--r--SmartDeviceLink/SDLShow.m18
-rw-r--r--SmartDeviceLink/SDLSoftButtonCapabilities.h9
-rw-r--r--SmartDeviceLink/SDLSoftButtonCapabilities.m9
-rw-r--r--SmartDeviceLink/SDLSoftButtonManager.m9
-rw-r--r--SmartDeviceLink/SDLStreamingAudioLifecycleManager.m9
-rw-r--r--SmartDeviceLink/SDLStreamingVideoLifecycleManager.m11
-rwxr-xr-xSmartDeviceLink/SDLSystemCapability.h10
-rwxr-xr-xSmartDeviceLink/SDLSystemCapability.m10
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityManager.m18
-rwxr-xr-xSmartDeviceLink/SDLSystemCapabilityType.h7
-rwxr-xr-xSmartDeviceLink/SDLSystemCapabilityType.m1
-rw-r--r--SmartDeviceLink/SDLTemplateConfiguration.h59
-rw-r--r--SmartDeviceLink/SDLTemplateConfiguration.m60
-rw-r--r--SmartDeviceLink/SDLTextAndGraphicManager.m15
-rw-r--r--SmartDeviceLink/SDLVoiceCommandManager.m6
-rw-r--r--SmartDeviceLink/SDLWindowCapability.h81
-rw-r--r--SmartDeviceLink/SDLWindowCapability.m73
-rw-r--r--SmartDeviceLink/SDLWindowType.h21
-rw-r--r--SmartDeviceLink/SDLWindowType.m8
-rw-r--r--SmartDeviceLink/SDLWindowTypeCapabilities.h41
-rw-r--r--SmartDeviceLink/SDLWindowTypeCapabilities.m58
-rw-r--r--SmartDeviceLink/SmartDeviceLink.h10
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m3
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m6
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m6
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m5
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedWindowsSpec.m18
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWindowTypeSpec.m19
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateWindowSpec.m65
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteWindowSpec.m32
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLCreateWindowResponseSpec.m12
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteWindowResponseSpec.m12
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m20
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m90
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateConfigurationSpec.m56
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m3
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m72
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowTypeCapabilitiesSpec.m24
-rw-r--r--SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m3
70 files changed, 1735 insertions, 13 deletions
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec
index 1f9316962..8de91538d 100644
--- a/SmartDeviceLink-iOS.podspec
+++ b/SmartDeviceLink-iOS.podspec
@@ -78,6 +78,8 @@ ss.public_header_files = [
'SmartDeviceLink/SDLConfiguration.h',
'SmartDeviceLink/SDLCreateInteractionChoiceSet.h',
'SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h',
+'SmartDeviceLink/SDLCreateWindow.h',
+'SmartDeviceLink/SDLCreateWindowResponse.h',
'SmartDeviceLink/SDLDateTime.h',
'SmartDeviceLink/SDLDefrostZone.h',
'SmartDeviceLink/SDLDeleteCommand.h',
@@ -88,6 +90,8 @@ ss.public_header_files = [
'SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.h',
'SmartDeviceLink/SDLDeleteSubMenu.h',
'SmartDeviceLink/SDLDeleteSubMenuResponse.h',
+'SmartDeviceLink/SDLDeleteWindow.h',
+'SmartDeviceLink/SDLDeleteWindowResponse.h',
'SmartDeviceLink/SDLDeliveryMode.h',
'SmartDeviceLink/SDLDeviceInfo.h',
'SmartDeviceLink/SDLDeviceLevelStatus.h',
@@ -98,6 +102,7 @@ ss.public_header_files = [
'SmartDeviceLink/SDLDialNumberResponse.h',
'SmartDeviceLink/SDLDIDResult.h',
'SmartDeviceLink/SDLDimension.h',
+'SmartDeviceLink/SDLDisplayCapability.h',
'SmartDeviceLink/SDLDisplayCapabilities.h',
'SmartDeviceLink/SDLDisplayMode.h',
'SmartDeviceLink/SDLDisplayType.h',
@@ -261,6 +266,7 @@ ss.public_header_files = [
'SmartDeviceLink/SDLPowerModeQualificationStatus.h',
'SmartDeviceLink/SDLPowerModeStatus.h',
'SmartDeviceLink/SDLPredefinedLayout.h',
+'SmartDeviceLink/SDLPredefinedWindows.h',
'SmartDeviceLink/SDLPrerecordedSpeech.h',
'SmartDeviceLink/SDLPresetBankCapabilities.h',
'SmartDeviceLink/SDLPrimaryAudioSource.h',
@@ -368,6 +374,7 @@ ss.public_header_files = [
'SmartDeviceLink/SDLTBTState.h',
'SmartDeviceLink/SDLTemperature.h',
'SmartDeviceLink/SDLTemperatureUnit.h',
+'SmartDeviceLink/SDLTemplateConfiguration.h',
'SmartDeviceLink/SDLTemplateColorScheme.h',
'SmartDeviceLink/SDLTextAlignment.h',
'SmartDeviceLink/SDLTextField.h',
@@ -424,6 +431,9 @@ ss.public_header_files = [
'SmartDeviceLink/SDLWeatherServiceData.h',
'SmartDeviceLink/SDLWeatherServiceManifest.h',
'SmartDeviceLink/SDLWiperStatus.h',
+'SmartDeviceLink/SDLWindowCapability.h',
+'SmartDeviceLink/SDLWindowType.h',
+'SmartDeviceLink/SDLWindowTypeCapabilities.h',
'SmartDeviceLink/SmartDeviceLink.h',
]
end
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index 77acb13a2..84d6bfe81 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -1455,6 +1455,35 @@
8BBEA6091F324832003EEA26 /* SDLMetadataTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BBEA6081F324832003EEA26 /* SDLMetadataTypeSpec.m */; };
97E26DEC1E807AD70074A3C7 /* SDLMutableDataQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */; };
97E26DED1E807AD70074A3C7 /* SDLMutableDataQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */; };
+ 9F425ACE22DD97DE00BE3245 /* SDLTemplateConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425ACC22DD97DE00BE3245 /* SDLTemplateConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9F425ACF22DD97DE00BE3245 /* SDLTemplateConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425ACD22DD97DE00BE3245 /* SDLTemplateConfiguration.m */; };
+ 9F425AD222DD980200BE3245 /* SDLWindowCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425AD022DD980200BE3245 /* SDLWindowCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9F425AD322DD980200BE3245 /* SDLWindowCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425AD122DD980200BE3245 /* SDLWindowCapability.m */; };
+ 9F425AD622DD981E00BE3245 /* SDLWindowTypeCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425AD422DD981E00BE3245 /* SDLWindowTypeCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9F425AD722DD981E00BE3245 /* SDLWindowTypeCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425AD522DD981E00BE3245 /* SDLWindowTypeCapabilities.m */; };
+ 9F425ADA22DD983500BE3245 /* SDLDisplayCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425AD822DD983500BE3245 /* SDLDisplayCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9F425ADB22DD983500BE3245 /* SDLDisplayCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425AD922DD983500BE3245 /* SDLDisplayCapability.m */; };
+ 9FA0CFF722DF0632009CF344 /* SDLWindowTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0CFF622DF0632009CF344 /* SDLWindowTypeSpec.m */; };
+ 9FA0CFFA22DF064D009CF344 /* SDLPredefinedWindowsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0CFF922DF064D009CF344 /* SDLPredefinedWindowsSpec.m */; };
+ 9FA0CFFD22DF0687009CF344 /* SDLTemplateConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0CFFC22DF0687009CF344 /* SDLTemplateConfigurationSpec.m */; };
+ 9FA0D00022DF06A0009CF344 /* SDLWindowCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0CFFF22DF06A0009CF344 /* SDLWindowCapabilitySpec.m */; };
+ 9FA0D00322DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00222DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m */; };
+ 9FA0D00622DF06D3009CF344 /* SDLDisplayCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00522DF06D3009CF344 /* SDLDisplayCapabilitySpec.m */; };
+ 9FA0D00922DF0B47009CF344 /* SDLCreateWindowSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00822DF0B47009CF344 /* SDLCreateWindowSpec.m */; };
+ 9FA0D00C22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00B22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m */; };
+ 9FA0D00F22DF0B90009CF344 /* SDLDeleteWindowSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */; };
+ 9FA0D01222DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D01122DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m */; };
+ 9FD334E022DC6E7500F62736 /* SDLCreateWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FD334DE22DC6E7500F62736 /* SDLCreateWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9FD334E122DC6E7500F62736 /* SDLCreateWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FD334DF22DC6E7500F62736 /* SDLCreateWindow.m */; };
+ 9FE2470922D77A3600F8D2FC /* SDLDeleteWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2470722D77A3600F8D2FC /* SDLDeleteWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9FE2470A22D77A3600F8D2FC /* SDLDeleteWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2470822D77A3600F8D2FC /* SDLDeleteWindow.m */; };
+ 9FE2470D22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2470B22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9FE2470E22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2470C22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m */; };
+ 9FE2471122D77AA400F8D2FC /* SDLCreateWindowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2470F22D77AA400F8D2FC /* SDLCreateWindowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9FE2471222D77AA400F8D2FC /* SDLCreateWindowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2471022D77AA400F8D2FC /* SDLCreateWindowResponse.m */; };
+ 9FE2471522D77AD500F8D2FC /* SDLWindowType.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2471322D77AD500F8D2FC /* SDLWindowType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 9FE2471622D77AD500F8D2FC /* SDLWindowType.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2471422D77AD500F8D2FC /* SDLWindowType.m */; };
+ 9FE2471922D77AED00F8D2FC /* SDLPredefinedWindows.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2471722D77AED00F8D2FC /* SDLPredefinedWindows.h */; settings = {ATTRIBUTES = (Public, ); }; };
DA0C46AD1DCD35080001F2A8 /* SDLRPCParameterNames.m in Sources */ = {isa = PBXBuildFile; fileRef = DA0C46AC1DCD35080001F2A8 /* SDLRPCParameterNames.m */; };
DA0C46AF1DCD41E30001F2A8 /* SDLMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0C46AE1DCD41E30001F2A8 /* SDLMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
DA318C1F1DD0F06C00C035AC /* NSMutableDictionary+Store.h in Headers */ = {isa = PBXBuildFile; fileRef = DA318C1D1DD0F06C00C035AC /* NSMutableDictionary+Store.h */; };
@@ -3123,6 +3152,35 @@
8BBEA6081F324832003EEA26 /* SDLMetadataTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMetadataTypeSpec.m; sourceTree = "<group>"; };
97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMutableDataQueue.h; sourceTree = "<group>"; };
97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMutableDataQueue.m; sourceTree = "<group>"; };
+ 9F425ACC22DD97DE00BE3245 /* SDLTemplateConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTemplateConfiguration.h; sourceTree = "<group>"; };
+ 9F425ACD22DD97DE00BE3245 /* SDLTemplateConfiguration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTemplateConfiguration.m; sourceTree = "<group>"; };
+ 9F425AD022DD980200BE3245 /* SDLWindowCapability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWindowCapability.h; sourceTree = "<group>"; };
+ 9F425AD122DD980200BE3245 /* SDLWindowCapability.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowCapability.m; sourceTree = "<group>"; };
+ 9F425AD422DD981E00BE3245 /* SDLWindowTypeCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWindowTypeCapabilities.h; sourceTree = "<group>"; };
+ 9F425AD522DD981E00BE3245 /* SDLWindowTypeCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowTypeCapabilities.m; sourceTree = "<group>"; };
+ 9F425AD822DD983500BE3245 /* SDLDisplayCapability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDisplayCapability.h; sourceTree = "<group>"; };
+ 9F425AD922DD983500BE3245 /* SDLDisplayCapability.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayCapability.m; sourceTree = "<group>"; };
+ 9FA0CFF622DF0632009CF344 /* SDLWindowTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowTypeSpec.m; sourceTree = "<group>"; };
+ 9FA0CFF922DF064D009CF344 /* SDLPredefinedWindowsSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPredefinedWindowsSpec.m; sourceTree = "<group>"; };
+ 9FA0CFFC22DF0687009CF344 /* SDLTemplateConfigurationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTemplateConfigurationSpec.m; sourceTree = "<group>"; };
+ 9FA0CFFF22DF06A0009CF344 /* SDLWindowCapabilitySpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowCapabilitySpec.m; sourceTree = "<group>"; };
+ 9FA0D00222DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowTypeCapabilitiesSpec.m; sourceTree = "<group>"; };
+ 9FA0D00522DF06D3009CF344 /* SDLDisplayCapabilitySpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayCapabilitySpec.m; sourceTree = "<group>"; };
+ 9FA0D00822DF0B47009CF344 /* SDLCreateWindowSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindowSpec.m; sourceTree = "<group>"; };
+ 9FA0D00B22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindowResponseSpec.m; sourceTree = "<group>"; };
+ 9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowSpec.m; sourceTree = "<group>"; };
+ 9FA0D01122DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowResponseSpec.m; sourceTree = "<group>"; };
+ 9FD334DE22DC6E7500F62736 /* SDLCreateWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCreateWindow.h; sourceTree = "<group>"; };
+ 9FD334DF22DC6E7500F62736 /* SDLCreateWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindow.m; sourceTree = "<group>"; };
+ 9FE2470722D77A3600F8D2FC /* SDLDeleteWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDeleteWindow.h; sourceTree = "<group>"; };
+ 9FE2470822D77A3600F8D2FC /* SDLDeleteWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindow.m; sourceTree = "<group>"; };
+ 9FE2470B22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDeleteWindowResponse.h; sourceTree = "<group>"; };
+ 9FE2470C22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowResponse.m; sourceTree = "<group>"; };
+ 9FE2470F22D77AA400F8D2FC /* SDLCreateWindowResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCreateWindowResponse.h; sourceTree = "<group>"; };
+ 9FE2471022D77AA400F8D2FC /* SDLCreateWindowResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindowResponse.m; sourceTree = "<group>"; };
+ 9FE2471322D77AD500F8D2FC /* SDLWindowType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWindowType.h; sourceTree = "<group>"; };
+ 9FE2471422D77AD500F8D2FC /* SDLWindowType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowType.m; sourceTree = "<group>"; };
+ 9FE2471722D77AED00F8D2FC /* SDLPredefinedWindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPredefinedWindows.h; sourceTree = "<group>"; };
BB3C600D221AEF37007DD4CA /* NSMutableDictionary+StoreSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "NSMutableDictionary+StoreSpec.m"; path = "DevAPISpecs/NSMutableDictionary+StoreSpec.m"; sourceTree = "<group>"; };
DA0C46AC1DCD35080001F2A8 /* SDLRPCParameterNames.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCParameterNames.m; sourceTree = "<group>"; };
DA0C46AE1DCD41E30001F2A8 /* SDLMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMacros.h; sourceTree = "<group>"; };
@@ -3348,6 +3406,7 @@
162E82081A9BDE8A00906325 /* SDLPowerModeQualificationStatusSpec.m */,
162E82091A9BDE8A00906325 /* SDLPowerModeStatusSpec.m */,
162E820A1A9BDE8A00906325 /* SDLPredefinedLayoutSpec.m */,
+ 9FA0CFF922DF064D009CF344 /* SDLPredefinedWindowsSpec.m */,
162E820B1A9BDE8A00906325 /* SDLPrerecordedSpeechSpec.m */,
162E820C1A9BDE8A00906325 /* SDLPrimaryAudioSource.m */,
162E820D1A9BDE8A00906325 /* SDLPRNDLSpec.m */,
@@ -3387,6 +3446,7 @@
1EE8C43B1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m */,
1EE8C43D1F347F0500FDC2CF /* SDLVentilationModeSpec.m */,
5D64FE6C20DA9CE600792F9F /* SDLVideoStreamingStateSpec.m */,
+ 9FA0CFF622DF0632009CF344 /* SDLWindowTypeSpec.m */,
);
path = EnumSpecs;
sourceTree = "<group>";
@@ -3490,6 +3550,8 @@
162E82641A9BDE8A00906325 /* SDLUpdateTurnListSpec.m */,
1EE8C45E1F3884FF00FDC2CF /* SDLSetInteriorVehicleDataSpec.m */,
8877F5EA1F34A3BE00DC128A /* SDLSendHapticDataSpec.m */,
+ 9FA0D00822DF0B47009CF344 /* SDLCreateWindowSpec.m */,
+ 9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */,
8B05F88822DD011300666CD8 /* SDLUnpublishAppServiceSpec.m */,
);
path = RequestSpecs;
@@ -3505,9 +3567,11 @@
1EE8C4571F387ABD00FDC2CF /* SDLButtonPressResponseSpec.m */,
162E826A1A9BDE8A00906325 /* SDLChangeRegistrationResponseSpec.m */,
883581AF22D659BE00405C42 /* SDLCloseApplicationResponseSpec.m */,
+ 9FA0D00B22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m */,
162E826B1A9BDE8A00906325 /* SDLCreateInteractionChoiceSetResponseSpec.m */,
162E826C1A9BDE8A00906325 /* SDLDeleteCommandResponseSpec.m */,
162E826D1A9BDE8A00906325 /* SDLDeleteFileResponseSpec.m */,
+ 9FA0D01122DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m */,
162E826E1A9BDE8A00906325 /* SDLDeleteInteractionChoiceSetResponseSpec.m */,
162E826F1A9BDE8A00906325 /* SDLDeleteSubMenuResponseSpec.m */,
162E82701A9BDE8A00906325 /* SDLDiagnosticMessageResponseSpec.m */,
@@ -3586,6 +3650,7 @@
162E82961A9BDE8A00906325 /* SDLDeviceInfoSpec.m */,
162E82971A9BDE8A00906325 /* SDLDeviceStatusSpec.m */,
162E82981A9BDE8A00906325 /* SDLDIDResult.m */,
+ 9FA0D00522DF06D3009CF344 /* SDLDisplayCapabilitySpec.m */,
162E82991A9BDE8A00906325 /* SDLDisplayCapabilitiesSpec.m */,
162E829A1A9BDE8A00906325 /* SDLECallInfoSpec.m */,
162E829B1A9BDE8A00906325 /* SDLEmergencyEventSpec.m */,
@@ -3644,6 +3709,7 @@
162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */,
5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */,
1EE8C4511F38657D00FDC2CF /* SDLTemperatureSpec.m */,
+ 9FA0CFFC22DF0687009CF344 /* SDLTemplateConfigurationSpec.m */,
162E82AD1A9BDE8A00906325 /* SDLTextFieldSpec.m */,
162E82AE1A9BDE8A00906325 /* SDLTireStatusSpec.m */,
162E82AF1A9BDE8A00906325 /* SDLTouchCoordSpec.m */,
@@ -3661,6 +3727,8 @@
8855F9DF220C93B700A5C897 /* SDLWeatherDataSpec.m */,
880D2679220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m */,
880D267F220E038800B3F496 /* SDLWeatherServiceManifestSpec.m */,
+ 9FA0CFFF22DF06A0009CF344 /* SDLWindowCapabilitySpec.m */,
+ 9FA0D00222DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m */,
);
path = StructSpecs;
sourceTree = "<group>";
@@ -4181,12 +4249,16 @@
5D61FA6F1A84238A00846EE7 /* SDLChangeRegistration.m */,
888DBAE922D52431002A0AE2 /* SDLCloseApplication.h */,
888DBAEA22D52431002A0AE2 /* SDLCloseApplication.m */,
+ 9FD334DE22DC6E7500F62736 /* SDLCreateWindow.h */,
+ 9FD334DF22DC6E7500F62736 /* SDLCreateWindow.m */,
5D61FA7E1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.h */,
5D61FA7F1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.m */,
5D61FA851A84238A00846EE7 /* SDLDeleteCommand.h */,
5D61FA861A84238A00846EE7 /* SDLDeleteCommand.m */,
5D61FA891A84238A00846EE7 /* SDLDeleteFile.h */,
5D61FA8A1A84238A00846EE7 /* SDLDeleteFile.m */,
+ 9FE2470722D77A3600F8D2FC /* SDLDeleteWindow.h */,
+ 9FE2470822D77A3600F8D2FC /* SDLDeleteWindow.m */,
5D61FA8D1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.h */,
5D61FA8E1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.m */,
5D61FA911A84238A00846EE7 /* SDLDeleteSubMenu.h */,
@@ -4304,6 +4376,8 @@
5D61FA711A84238A00846EE7 /* SDLChangeRegistrationResponse.m */,
888DBAED22D528DE002A0AE2 /* SDLCloseApplicationResponse.h */,
888DBAEE22D528DE002A0AE2 /* SDLCloseApplicationResponse.m */,
+ 9FE2470F22D77AA400F8D2FC /* SDLCreateWindowResponse.h */,
+ 9FE2471022D77AA400F8D2FC /* SDLCreateWindowResponse.m */,
5D61FA801A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.h */,
5D61FA811A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.m */,
5D61FA871A84238A00846EE7 /* SDLDeleteCommandResponse.h */,
@@ -4314,6 +4388,8 @@
5D61FA901A84238A00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m */,
5D61FA931A84238A00846EE7 /* SDLDeleteSubMenuResponse.h */,
5D61FA941A84238A00846EE7 /* SDLDeleteSubMenuResponse.m */,
+ 9FE2470B22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h */,
+ 9FE2470C22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m */,
5D61FA9D1A84238A00846EE7 /* SDLDiagnosticMessageResponse.h */,
5D61FA9E1A84238A00846EE7 /* SDLDiagnosticMessageResponse.m */,
5D8B17511AC9E11B006A6E1C /* SDLDialNumberResponse.h */,
@@ -4459,6 +4535,8 @@
5D61FA9A1A84238A00846EE7 /* SDLDeviceStatus.m */,
5D61FA9F1A84238A00846EE7 /* SDLDIDResult.h */,
5D61FAA01A84238A00846EE7 /* SDLDIDResult.m */,
+ 9F425AD822DD983500BE3245 /* SDLDisplayCapability.h */,
+ 9F425AD922DD983500BE3245 /* SDLDisplayCapability.m */,
5D61FAA31A84238A00846EE7 /* SDLDisplayCapabilities.h */,
5D61FAA41A84238A00846EE7 /* SDLDisplayCapabilities.m */,
5D61FAAB1A84238A00846EE7 /* SDLECallInfo.h */,
@@ -4579,6 +4657,8 @@
1E5AD0631F207DD50029B8AF /* SDLTemperature.m */,
5D92935120B2F76500FCC775 /* SDLTemplateColorScheme.h */,
5D92935220B2F76500FCC775 /* SDLTemplateColorScheme.m */,
+ 9F425ACC22DD97DE00BE3245 /* SDLTemplateConfiguration.h */,
+ 9F425ACD22DD97DE00BE3245 /* SDLTemplateConfiguration.m */,
5D61FBDC1A84238C00846EE7 /* SDLTextField.h */,
5D61FBDD1A84238C00846EE7 /* SDLTextField.m */,
5D61FBE21A84238C00846EE7 /* SDLTireStatus.h */,
@@ -4611,6 +4691,10 @@
88D5EB36220CD95000EC3782 /* SDLWeatherServiceData.m */,
880D267B220DE5DF00B3F496 /* SDLWeatherServiceManifest.h */,
880D267C220DE5DF00B3F496 /* SDLWeatherServiceManifest.m */,
+ 9F425AD022DD980200BE3245 /* SDLWindowCapability.h */,
+ 9F425AD122DD980200BE3245 /* SDLWindowCapability.m */,
+ 9F425AD422DD981E00BE3245 /* SDLWindowTypeCapabilities.h */,
+ 9F425AD522DD981E00BE3245 /* SDLWindowTypeCapabilities.m */,
);
name = Structs;
sourceTree = "<group>";
@@ -4742,6 +4826,7 @@
5D61FB4B1A84238B00846EE7 /* SDLPredefinedLayout.m */,
5D61FB4C1A84238B00846EE7 /* SDLPrerecordedSpeech.h */,
5D61FB4D1A84238B00846EE7 /* SDLPrerecordedSpeech.m */,
+ 9FE2471722D77AED00F8D2FC /* SDLPredefinedWindows.h */,
5D61FB501A84238B00846EE7 /* SDLPrimaryAudioSource.h */,
5D61FB511A84238B00846EE7 /* SDLPrimaryAudioSource.m */,
5D61FB541A84238B00846EE7 /* SDLPRNDL.h */,
@@ -4823,6 +4908,8 @@
8B7B319D1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.m */,
5D0C29FA20D93D8C008B56CD /* SDLVideoStreamingState.h */,
5D0C29FB20D93D8C008B56CD /* SDLVideoStreamingState.m */,
+ 9FE2471322D77AD500F8D2FC /* SDLWindowType.h */,
+ 9FE2471422D77AD500F8D2FC /* SDLWindowType.m */,
);
name = Enums;
sourceTree = "<group>";
@@ -6242,6 +6329,16 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ 9F425AD222DD980200BE3245 /* SDLWindowCapability.h in Headers */,
+ 9F425ADA22DD983500BE3245 /* SDLDisplayCapability.h in Headers */,
+ 9F425ACE22DD97DE00BE3245 /* SDLTemplateConfiguration.h in Headers */,
+ 9F425AD622DD981E00BE3245 /* SDLWindowTypeCapabilities.h in Headers */,
+ 9FE2471522D77AD500F8D2FC /* SDLWindowType.h in Headers */,
+ 9FE2471922D77AED00F8D2FC /* SDLPredefinedWindows.h in Headers */,
+ 9FE2470D22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h in Headers */,
+ 9FE2470922D77A3600F8D2FC /* SDLDeleteWindow.h in Headers */,
+ 9FE2471122D77AA400F8D2FC /* SDLCreateWindowResponse.h in Headers */,
+ 9FD334E022DC6E7500F62736 /* SDLCreateWindow.h in Headers */,
8BA12B1122DCCE1F00371E82 /* SDLUnpublishAppService.h in Headers */,
8BA12B1522DCEACB00371E82 /* SDLUnpublishAppServiceResponse.h in Headers */,
1EB59CBF202DA26000343A61 /* SDLSeatControlData.h in Headers */,
@@ -7232,14 +7329,17 @@
5D61FDCE1A84238C00846EE7 /* SDLTimerMode.m in Sources */,
5D61FD701A84238C00846EE7 /* SDLRPCPayload.m in Sources */,
5D61FD9C1A84238C00846EE7 /* SDLSlider.m in Sources */,
+ 9FE2470A22D77A3600F8D2FC /* SDLDeleteWindow.m in Sources */,
5D0A7383203F23F30001595D /* SDLSoftButtonManager.m in Sources */,
5DCF76FA1ACDD7CD00BB647B /* SDLSendLocationResponse.m in Sources */,
5D9FDA8F1F2A7D3400A495C8 /* bson_array.c in Sources */,
5D61FD661A84238C00846EE7 /* SDLResetGlobalPropertiesResponse.m in Sources */,
5D61FCFE1A84238C00846EE7 /* SDLObjectWithPriority.m in Sources */,
5D92937D20B70A3E00FCC775 /* SDLPresentKeyboardOperation.m in Sources */,
+ 9FD334E122DC6E7500F62736 /* SDLCreateWindow.m in Sources */,
5DBF06241E64A83F00A5CF03 /* SDLLogManager.m in Sources */,
5D61FC401A84238C00846EE7 /* SDLAmbientLightStatus.m in Sources */,
+ 9F425ADB22DD983500BE3245 /* SDLDisplayCapability.m in Sources */,
88EEC5BC220A327B005AA2F9 /* SDLPublishAppServiceResponse.m in Sources */,
5D61FC951A84238C00846EE7 /* SDLDriverDistractionState.m in Sources */,
5DB996611F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.m in Sources */,
@@ -7255,6 +7355,7 @@
5DD8406320FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.m in Sources */,
8BBEA6071F324165003EEA26 /* SDLMetadataType.m in Sources */,
5DA150C82271FDC20032928D /* SDLSoftButtonTransitionOperation.m in Sources */,
+ 9FE2471222D77AA400F8D2FC /* SDLCreateWindowResponse.m in Sources */,
5D61FDBC1A84238C00846EE7 /* SDLSystemAction.m in Sources */,
5D61FC381A84238C00846EE7 /* SDLAlert.m in Sources */,
88AAD4BD2211B76800F1E6D7 /* SDLMediaServiceManifest.m in Sources */,
@@ -7368,11 +7469,13 @@
752ECDB7228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */,
1FF7DABC1F75B2BF00B46C30 /* SDLFocusableItemLocator.m in Sources */,
EED5CA021F4D18EC00F04000 /* SDLRAWH264Packetizer.m in Sources */,
+ 9FE2471622D77AD500F8D2FC /* SDLWindowType.m in Sources */,
5D61FC851A84238C00846EE7 /* SDLDeviceLevelStatus.m in Sources */,
EE38C0C3211C440400E170AD /* SDLSecondaryTransportPrimaryProtocolHandler.m in Sources */,
5D9FDA981F2A7D3F00A495C8 /* emhashmap.c in Sources */,
5D61FD1E1A84238C00846EE7 /* SDLOnTBTClientState.m in Sources */,
5D0C29FD20D93D8C008B56CD /* SDLVideoStreamingState.m in Sources */,
+ 9F425AD722DD981E00BE3245 /* SDLWindowTypeCapabilities.m in Sources */,
5DD67CBD1E661C84009CD394 /* SDLLogTargetOSLog.m in Sources */,
DA9F7E641DCBFAC800ACAE48 /* SDLDateTime.m in Sources */,
5D61FD581A84238C00846EE7 /* SDLPutFileResponse.m in Sources */,
@@ -7426,6 +7529,7 @@
1EAA474220355FF3000FE74B /* SDLLightControlCapabilities.m in Sources */,
8B7B31A31F2F7FEA00BDC38D /* SDLVideoStreamingFormat.m in Sources */,
DA0C46AD1DCD35080001F2A8 /* SDLRPCParameterNames.m in Sources */,
+ 9F425AD322DD980200BE3245 /* SDLWindowCapability.m in Sources */,
5DA3F3551BC448060026F2D0 /* NSMapTable+Subscripting.m in Sources */,
5D61FCD61A84238C00846EE7 /* SDLImageType.m in Sources */,
5D4D67AD1D2ED37A00468B4A /* SDLNotificationDispatcher.m in Sources */,
@@ -7437,6 +7541,7 @@
1EAA47122033FE80000FE74B /* SDLStationIDNumber.m in Sources */,
5D61FC831A84238C00846EE7 /* SDLDeviceInfo.m in Sources */,
DA318C201DD0F06C00C035AC /* NSMutableDictionary+Store.m in Sources */,
+ 9F425ACF22DD97DE00BE3245 /* SDLTemplateConfiguration.m in Sources */,
5D7F87EC1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m in Sources */,
1EB59CBC202DA1B400343A61 /* SDLSupportedSeat.m in Sources */,
97E26DED1E807AD70074A3C7 /* SDLMutableDataQueue.m in Sources */,
@@ -7452,6 +7557,7 @@
5D61FD3E1A84238C00846EE7 /* SDLPrimaryAudioSource.m in Sources */,
88A7A3C7220CCEA100A9E435 /* SDLGetFileResponse.m in Sources */,
1E5AD0851F20B9290029B8AF /* SDLButtonPressResponse.m in Sources */,
+ 9FE2470E22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m in Sources */,
5D82041F1BCD8E6100D0A41B /* SDLConfiguration.m in Sources */,
5D61FD381A84238C00846EE7 /* SDLPredefinedLayout.m in Sources */,
5D3E487C1D6F888E0000BFEF /* SDLRPCResponseNotification.m in Sources */,
@@ -7546,6 +7652,7 @@
162E838A1A9BDE8B00906325 /* SDLSingleTireStatusSpec.m in Sources */,
5D6EB4CC1BF28DC600693731 /* NSMapTable+SubscriptingSpec.m in Sources */,
88F37A4D226F84BE00DF119B /* SDLIAPDataSessionSpec.m in Sources */,
+ 9FA0D00322DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m in Sources */,
162E83051A9BDE8B00906325 /* SDLVehicleDataActiveStatusSpec.m in Sources */,
162E82E61A9BDE8B00906325 /* SDLInteractionModeSpec.m in Sources */,
888F8700221DF4880052FE4C /* SDLAsynchronousRPCOperationSpec.m in Sources */,
@@ -7557,6 +7664,7 @@
88EED83B1F33BECB00E6C42E /* SDLHapticRectSpec.m in Sources */,
162E82EA1A9BDE8B00906325 /* SDLLanguageSpec.m in Sources */,
5D76E3291D3D0A8800647CFA /* SDLFakeViewControllerPresenter.m in Sources */,
+ 9FA0D00622DF06D3009CF344 /* SDLDisplayCapabilitySpec.m in Sources */,
5DB2022A1F5F38B60061D189 /* SDLFakeStreamingManagerDataSource.m in Sources */,
5D92935020AF526200FCC775 /* SDLRGBColorSpec.m in Sources */,
162E83331A9BDE8B00906325 /* SDLPerformInteractionSpec.m in Sources */,
@@ -7569,6 +7677,7 @@
162E83101A9BDE8B00906325 /* SDLOnAudioPassThruSpec.m in Sources */,
DABB62171E4A900C0034C567 /* SDLH264VideoEncoderSpec.m in Sources */,
5DBEFA581F436132009EE295 /* SDLFakeSecurityManager.m in Sources */,
+ 9FA0D00022DF06A0009CF344 /* SDLWindowCapabilitySpec.m in Sources */,
162E82D91A9BDE8A00906325 /* SDLDisplayTypeSpec.m in Sources */,
162E83871A9BDE8B00906325 /* SDLPermissionItemSpec.m in Sources */,
5DAB5F5320989A8300A020C8 /* SDLVoiceCommandSpec.m in Sources */,
@@ -7642,6 +7751,7 @@
1EE8C45A1F387BBB00FDC2CF /* SDLGetInteriorVehicleDataSpec.m in Sources */,
5D6035D5202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m in Sources */,
162E83691A9BDE8B00906325 /* SDLSubscribeButtonResponseSpec.m in Sources */,
+ 9FA0CFFA22DF064D009CF344 /* SDLPredefinedWindowsSpec.m in Sources */,
5DAE06751BDEC6D600F9B498 /* SDLArtworkSpec.m in Sources */,
5DA23FF01F2FA0FF009C0313 /* SDLControlFramePayloadEndServiceSpec.m in Sources */,
162E83591A9BDE8B00906325 /* SDLListFilesResponseSpec.m in Sources */,
@@ -7671,8 +7781,10 @@
162E82E91A9BDE8B00906325 /* SDLKeypressModeSpec.m in Sources */,
162E83211A9BDE8B00906325 /* SDLRPCPayloadSpec.m in Sources */,
8831FA3F2202227000B8FFB7 /* SDLAppServiceTypeSpec.m in Sources */,
+ 9FA0D00922DF0B47009CF344 /* SDLCreateWindowSpec.m in Sources */,
162E83851A9BDE8B00906325 /* SDLMyKeySpec.m in Sources */,
162E83941A9BDE8B00906325 /* SDLTTSChunkSpec.m in Sources */,
+ 9FA0D00F22DF0B90009CF344 /* SDLDeleteWindowSpec.m in Sources */,
1EAA47702036AE89000FE74B /* SDLLightStatusSpec.m in Sources */,
162E82DC1A9BDE8B00906325 /* SDLEmergencyEventTypeSpec.m in Sources */,
162E82CE1A9BDE8A00906325 /* SDLAudioTypeSpec.m in Sources */,
@@ -7715,6 +7827,7 @@
162E82DE1A9BDE8B00906325 /* SDLFuelCutoffStatusSpec.m in Sources */,
162E83271A9BDE8B00906325 /* SDLCreateInteractionChoiceSetSpec.m in Sources */,
5DAD5F8920508F090025624C /* SDLSoftButtonStateSpec.m in Sources */,
+ 9FA0D01222DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m in Sources */,
162E83111A9BDE8B00906325 /* SDLOnButtonEventSpec.m in Sources */,
1FF7DAC01F75CF6C00B46C30 /* SDLHapticManagerSpec.m in Sources */,
162E82FA1A9BDE8B00906325 /* SDLSoftButtonTypeSpec.m in Sources */,
@@ -7824,6 +7937,7 @@
162E82F91A9BDE8B00906325 /* SDLSamplingRateSpec.m in Sources */,
5DBEFA541F434B9E009EE295 /* SDLStreamingMediaConfigurationSpec.m in Sources */,
1EB59CD2202DCA9B00343A61 /* SDLMassageModeSpec.m in Sources */,
+ 9FA0D00C22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m in Sources */,
162E82CB1A9BDE8A00906325 /* SDLAppHMITypeSpec.m in Sources */,
EEB2537E2067D3E80069584E /* SDLSecondaryTransportManagerSpec.m in Sources */,
162E83031A9BDE8B00906325 /* SDLTriggerSource.m in Sources */,
@@ -7918,6 +8032,7 @@
1EE8C4611F38865B00FDC2CF /* SDLSetInteriorVehicleDataResponseSpec.m in Sources */,
162E82FC1A9BDE8B00906325 /* SDLSystemAction.m in Sources */,
162E82CC1A9BDE8A00906325 /* SDLAppInterfaceUnregisteredReasonSpec.m in Sources */,
+ 9FA0CFFD22DF0687009CF344 /* SDLTemplateConfigurationSpec.m in Sources */,
162E83321A9BDE8B00906325 /* SDLPerformAudioPassThruSpec.m in Sources */,
162E830B1A9BDE8B00906325 /* SDLVrCapabilitiesSpec.m in Sources */,
162E83081A9BDE8B00906325 /* SDLVehicleDataResultCodeSpec.m in Sources */,
@@ -7942,6 +8057,7 @@
162E83561A9BDE8B00906325 /* SDLGenericResponseSpec.m in Sources */,
162E82D51A9BDE8A00906325 /* SDLCompassDirectionSpec.m in Sources */,
162E83861A9BDE8B00906325 /* SDLParameterPermissionsSpec.m in Sources */,
+ 9FA0CFF722DF0632009CF344 /* SDLWindowTypeSpec.m in Sources */,
162E831B1A9BDE8B00906325 /* SDLOnPermissionsChangeSpec.m in Sources */,
162E83711A9BDE8B00906325 /* SDLAirbagStatusSpec.m in Sources */,
885468322225BF2800994D8D /* SDLHybridAppPreferenceSpec.m in Sources */,
@@ -7976,6 +8092,7 @@
1EB59CD0202DC9F200343A61 /* SDLSupportedSeatSpec.m in Sources */,
162E82EB1A9BDE8B00906325 /* SDLLayoutModeSpec.m in Sources */,
1680B1181A9CD7AD00DBD79E /* SDLV1ProtocolMessageSpec.m in Sources */,
+ 162E832F1A9BDE8B00906325 /* SDLGetDTCsSpec.m in Sources */,
162E82EC1A9BDE8B00906325 /* SDLLockScreenStatusSpec.m in Sources */,
DA96C0661D4D4F730022F520 /* SDLAppInfoSpec.m in Sources */,
162E832F1A9BDE8B00906325 /* SDLGetDTCsSpec.m in Sources */,
diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec
index 5e1f6be76..6ffc1f5e0 100644
--- a/SmartDeviceLink.podspec
+++ b/SmartDeviceLink.podspec
@@ -79,6 +79,8 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLConfiguration.h',
'SmartDeviceLink/SDLCreateInteractionChoiceSet.h',
'SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h',
+'SmartDeviceLink/SDLCreateWindow.h',
+'SmartDeviceLink/SDLCreateWindowResponse.h',
'SmartDeviceLink/SDLDateTime.h',
'SmartDeviceLink/SDLDefrostZone.h',
'SmartDeviceLink/SDLDeleteCommand.h',
@@ -89,6 +91,8 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.h',
'SmartDeviceLink/SDLDeleteSubMenu.h',
'SmartDeviceLink/SDLDeleteSubMenuResponse.h',
+'SmartDeviceLink/SDLDeleteWindow.h',
+'SmartDeviceLink/SDLDeleteWindowResponse.h',
'SmartDeviceLink/SDLDeliveryMode.h',
'SmartDeviceLink/SDLDeviceInfo.h',
'SmartDeviceLink/SDLDeviceLevelStatus.h',
@@ -100,6 +104,7 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLDIDResult.h',
'SmartDeviceLink/SDLDimension.h',
'SmartDeviceLink/SDLDirection.h',
+'SmartDeviceLink/SDLDisplayCapability.h',
'SmartDeviceLink/SDLDisplayCapabilities.h',
'SmartDeviceLink/SDLDisplayMode.h',
'SmartDeviceLink/SDLDisplayType.h',
@@ -262,6 +267,7 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLPowerModeQualificationStatus.h',
'SmartDeviceLink/SDLPowerModeStatus.h',
'SmartDeviceLink/SDLPredefinedLayout.h',
+'SmartDeviceLink/SDLPredefinedWindows.h',
'SmartDeviceLink/SDLPrerecordedSpeech.h',
'SmartDeviceLink/SDLPresetBankCapabilities.h',
'SmartDeviceLink/SDLPrimaryAudioSource.h',
@@ -369,6 +375,7 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLTBTState.h',
'SmartDeviceLink/SDLTemperature.h',
'SmartDeviceLink/SDLTemperatureUnit.h',
+'SmartDeviceLink/SDLTemplateConfiguration.h',
'SmartDeviceLink/SDLTemplateColorScheme.h',
'SmartDeviceLink/SDLTextAlignment.h',
'SmartDeviceLink/SDLTextField.h',
@@ -425,6 +432,9 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLWeatherServiceData.h',
'SmartDeviceLink/SDLWeatherServiceManifest.h',
'SmartDeviceLink/SDLWiperStatus.h',
+'SmartDeviceLink/SDLWindowCapability.h',
+'SmartDeviceLink/SDLWindowType.h',
+'SmartDeviceLink/SDLWindowTypeCapabilities.h',
'SmartDeviceLink/SmartDeviceLink.h',
]
end
diff --git a/SmartDeviceLink/SDLChoiceSetManager.m b/SmartDeviceLink/SDLChoiceSetManager.m
index 7818dac24..9579f7807 100644
--- a/SmartDeviceLink/SDLChoiceSetManager.m
+++ b/SmartDeviceLink/SDLChoiceSetManager.m
@@ -28,6 +28,7 @@
#import "SDLOnHMIStatus.h"
#import "SDLPerformInteraction.h"
#import "SDLPerformInteractionResponse.h"
+#import "SDLPredefinedWindows.h"
#import "SDLPreloadChoicesOperation.h"
#import "SDLPresentChoiceSetOperation.h"
#import "SDLPresentKeyboardOperation.h"
@@ -417,17 +418,19 @@ UInt16 const ChoiceCellIdMin = 1;
SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
if (!response.success.boolValue) { return; }
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
if (response.displayCapabilities == nil) {
SDLLogE(@"RegisterAppInterface succeeded but didn't send a display capabilities. A lot of things will probably break.");
return;
}
self.displayCapabilities = response.displayCapabilities;
+#pragma clang diagnostic pop
}
- (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification {
SDLSetDisplayLayoutResponse *response = (SDLSetDisplayLayoutResponse *)notification.response;
-
if (!response.success.boolValue) { return; }
if (response.displayCapabilities == nil) {
SDLLogE(@"SetDisplayLayout succeeded but didn't send a display capabilities. A lot of things will probably break.");
@@ -440,6 +443,11 @@ UInt16 const ChoiceCellIdMin = 1;
- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
// We can only present a choice set if we're in FULL
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
SDLHMILevel oldHMILevel = self.currentHMILevel;
self.currentHMILevel = hmiStatus.hmiLevel;
diff --git a/SmartDeviceLink/SDLCreateWindow.h b/SmartDeviceLink/SDLCreateWindow.h
new file mode 100644
index 000000000..ad4475ef2
--- /dev/null
+++ b/SmartDeviceLink/SDLCreateWindow.h
@@ -0,0 +1,72 @@
+//
+// SDLCreateWindow.h
+// SmartDeviceLink
+//
+
+#import "SDLRPCRequest.h"
+#import "SDLWindowType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Create a new window on the display with the specified window type.
+ @discussion Windows of different types like MAIN or WIDGET windows can be created. Every application will have a pre-created MAIN window available. A widget is a small window that the app can create to provide information and soft buttons for quick app control. Widgets can be created depending on the capabilities of the system. Widgets can be associated with a specific App Service type such as `MEDIA` or `NAVIGATION`. As an example if a `MEDIA` app becomes active, this app becomes audible and is allowed to play audio. If the media app has created a widget with `MEDIA` type associated, this widget will automatically be activated together with the app.
+
+ @since SDL 6.0
+ */
+@interface SDLCreateWindow : SDLRPCRequest
+
+
+/**
+ Constructor with the required parameters
+
+ @param windowId The type of the window to be created. Main window or widget.
+ @param windowName The window name to be used by the HMI. @see windowName
+ @param windowType The type of the window to be created. Main window or widget.
+ */
+- (instancetype)initWithId:(NSUInteger)windowId windowName:(NSString *)windowName windowType:(SDLWindowType)windowType;
+
+/**
+ Convinience constructor with all the parameters.
+
+ @param windowId The type of the window to be created. Main window or widget.
+ @param windowName The window name to be used by the HMI. @see windowName
+ @param windowType The type of the window to be created. Main window or widget.
+ @param associatedServiceType Allows an app to create a widget related to a specific service type. @see associatedServiceType
+ @param duplicateUpdatesFromWindowID Optional parameter. Specify whether the content sent to an existing window should be duplicated to the created window. If there isn't a window with the ID, the request will be rejected with `INVALID_DATA`.
+ */
+- (instancetype)initWithId:(NSUInteger)windowId windowName:(NSString *)windowName windowType:(SDLWindowType)windowType associatedServiceType:(nullable NSString *)associatedServiceType duplicateUpdatesFromWindowID:(NSUInteger)duplicateUpdatesFromWindowID;
+
+
+/**
+ A unique ID to identify the window.
+ @discussion The value of '0' will always be the default main window on the main display and should not be used in this context as it will already be created for the app. See PredefinedWindows enum. Creating a window with an ID that is already in use will be rejected with `INVALID_ID`.
+ */
+@property (strong, nonatomic) NSNumber<SDLUInt> *windowID;
+
+/**
+ The window name to be used by the HMI.
+ @discussion The name of the pre-created default window will match the app name. Multiple apps can share the same window name except for the default main window. Creating a window with a name which is already in use by the app will result in `DUPLICATE_NAME`. MaxLength 100.
+ */
+@property (strong, nonatomic) NSString *windowName;
+
+/**
+ The type of the window to be created. Main window or widget.
+ */
+@property (strong, nonatomic) SDLWindowType type;
+
+/**
+ Allows an app to create a widget related to a specific service type.
+ @discussion As an example if a `MEDIA` app becomes active, this app becomes audible and is allowed to play audio. Actions such as skip or play/pause will be directed to this active media app. In case of widgets, the system can provide a single "media" widget which will act as a placeholder for the active media app. It is only allowed to have one window per service type. This means that a media app can only have a single MEDIA widget. Still the app can create widgets omitting this parameter. Those widgets would be available as app specific widgets that are permanently included in the HMI. This parameter is related to widgets only. The default main window, which is pre-created during app registration, will be created based on the HMI types specified in the app registration request.
+ */
+@property (strong, nonatomic, nullable) NSString *associatedServiceType;
+
+
+/**
+ Optional parameter. Specify whether the content sent to an existing window should be duplicated to the created window. If there isn't a window with the ID, the request will be rejected with `INVALID_DATA`.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLUInt> *duplicateUpdatesFromWindowID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCreateWindow.m b/SmartDeviceLink/SDLCreateWindow.m
new file mode 100644
index 000000000..b6b55ec17
--- /dev/null
+++ b/SmartDeviceLink/SDLCreateWindow.m
@@ -0,0 +1,96 @@
+//
+// SDLCreateWindow.m
+// SmartDeviceLink
+
+#import "SDLCreateWindow.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLCreateWindow
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameCreateWindow]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithId:(NSUInteger)windowId windowName:(NSString *)windowName windowType:(SDLWindowType)windowType {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.windowID = @(windowId);
+ self.windowName = windowName;
+ self.type = windowType;
+ return self;
+}
+
+- (instancetype)initWithId:(NSUInteger)windowId windowName:(NSString *)windowName windowType:(SDLWindowType)windowType associatedServiceType:(nullable NSString *)associatedServiceType duplicateUpdatesFromWindowID:(NSUInteger)duplicateUpdatesFromWindowID {
+ self = [self initWithId:windowId windowName:windowName windowType:windowType];
+ if (!self) {
+ return nil;
+ }
+ self.associatedServiceType = associatedServiceType;
+ self.duplicateUpdatesFromWindowID = @(duplicateUpdatesFromWindowID);
+ return self;
+}
+
+
+#pragma mark - Getters / Setters
+
+- (void)setWindowID:(NSNumber<SDLUInt> *)windowID {
+ [self.parameters sdl_setObject:windowID forName:SDLRPCParameterNameWindowId];
+}
+
+- (NSNumber<SDLUInt> *)windowID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowId ofClass:NSNumber.class error:&error];
+}
+
+- (void)setWindowName:(NSString *)windowName {
+ [self.parameters sdl_setObject:windowName forName:SDLRPCParameterNameWindowName];
+}
+
+- (NSString *)windowName {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowName ofClass:NSString.class error:&error];
+}
+
+
+- (void)setType:(SDLWindowType)type {
+ [self.parameters sdl_setObject:type forName:SDLRPCParameterNameType];
+}
+
+- (SDLWindowType)type {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameType error:&error];
+}
+
+- (void)setAssociatedServiceType:(nullable NSString *)associatedServiceType {
+ [self.parameters sdl_setObject:associatedServiceType forName:SDLRPCParameterNameAssociatedServiceType];
+}
+
+- (nullable NSString *)associatedServiceType {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAssociatedServiceType ofClass:NSString.class error:&error];
+}
+
+- (void)setDuplicateUpdatesFromWindowID:(nullable NSNumber<SDLUInt> *)duplicateUpdatesFromWindowID {
+ [self.parameters sdl_setObject:duplicateUpdatesFromWindowID forName:SDLRPCParameterNameDuplicateUpdatesFromWindowID];
+}
+
+- (nullable NSNumber<SDLUInt> *)duplicateUpdatesFromWindowID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDuplicateUpdatesFromWindowID ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCreateWindowResponse.h b/SmartDeviceLink/SDLCreateWindowResponse.h
new file mode 100644
index 000000000..bc6dc6641
--- /dev/null
+++ b/SmartDeviceLink/SDLCreateWindowResponse.h
@@ -0,0 +1,13 @@
+//
+// SDLCreateWindowResponse.h
+// SmartDeviceLink
+
+#import "SDLRPCResponse.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLCreateWindowResponse : SDLRPCResponse
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCreateWindowResponse.m b/SmartDeviceLink/SDLCreateWindowResponse.m
new file mode 100644
index 000000000..a9f6a3029
--- /dev/null
+++ b/SmartDeviceLink/SDLCreateWindowResponse.m
@@ -0,0 +1,23 @@
+//
+// SDLCreateWindowResponse.m
+// SmartDeviceLink
+
+#import "SDLCreateWindowResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+@implementation SDLCreateWindowResponse
+
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameCreateWindow]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+@end
diff --git a/SmartDeviceLink/SDLDeleteWindow.h b/SmartDeviceLink/SDLDeleteWindow.h
new file mode 100644
index 000000000..2561b45c1
--- /dev/null
+++ b/SmartDeviceLink/SDLDeleteWindow.h
@@ -0,0 +1,32 @@
+//
+// SDLDeleteWindow.h
+// SmartDeviceLink
+
+#import "SDLRPCRequest.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Deletes previously created window of the SDL application.
+
+ @since SDL 6.0
+ */
+@interface SDLDeleteWindow : SDLRPCRequest
+
+/**
+ @param windowId A unique ID to identify the window. The value of '0' will always be the default main window on the main display and cannot be deleted.
+ */
+- (instancetype)initWithId:(NSUInteger)windowId;
+
+/**
+ A unique ID to identify the window.
+
+ The value of '0' will always be the default main window on the main display and cannot be deleted.
+
+ @see PredefinedWindows enum.
+ */
+@property (strong, nonatomic) NSNumber<SDLUInt> *windowID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLDeleteWindow.m b/SmartDeviceLink/SDLDeleteWindow.m
new file mode 100644
index 000000000..d4f6189c8
--- /dev/null
+++ b/SmartDeviceLink/SDLDeleteWindow.m
@@ -0,0 +1,40 @@
+//
+// SDLDeleteWindow.m
+// SmartDeviceLink
+
+#import "SDLDeleteWindow.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+@implementation SDLDeleteWindow
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameDeleteWindow]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithId:(NSUInteger)windowId {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.windowID = @(windowId);
+ return self;
+}
+
+- (void)setWindowID:(NSNumber<SDLUInt> *)windowID {
+ [self.parameters sdl_setObject:windowID forName:SDLRPCParameterNameWindowId];
+}
+
+- (NSNumber<SDLUInt> *)windowID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowId ofClass:NSNumber.class error:&error];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLDeleteWindowResponse.h b/SmartDeviceLink/SDLDeleteWindowResponse.h
new file mode 100644
index 000000000..d068f0aea
--- /dev/null
+++ b/SmartDeviceLink/SDLDeleteWindowResponse.h
@@ -0,0 +1,17 @@
+//
+// SDLDeleteWindowResponse.h
+// SmartDeviceLink
+//
+// Created by cssoeutest1 on 11.07.19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCResponse.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLDeleteWindowResponse : SDLRPCResponse
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLDeleteWindowResponse.m b/SmartDeviceLink/SDLDeleteWindowResponse.m
new file mode 100644
index 000000000..c7cf30058
--- /dev/null
+++ b/SmartDeviceLink/SDLDeleteWindowResponse.m
@@ -0,0 +1,26 @@
+//
+// SDLDeleteWindowResponse.m
+// SmartDeviceLink
+//
+// Created by cssoeutest1 on 11.07.19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLDeleteWindowResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+@implementation SDLDeleteWindowResponse
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameDeleteWindow]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+@end
diff --git a/SmartDeviceLink/SDLDisplayCapability.h b/SmartDeviceLink/SDLDisplayCapability.h
new file mode 100644
index 000000000..f29c092af
--- /dev/null
+++ b/SmartDeviceLink/SDLDisplayCapability.h
@@ -0,0 +1,64 @@
+//
+// SDLDisplayCapability.h
+// SmartDeviceLink
+
+#import "SDLRPCStruct.h"
+
+@class SDLWindowCapability;
+@class SDLWindowTypeCapabilities;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contain the display related information and all windows related to that display.
+
+ @since SDL 6.0
+ */
+@interface SDLDisplayCapability : SDLRPCStruct
+
+/**
+ Init with required properties
+
+ @param displayName Name of the display.
+ */
+- (instancetype)initWithDisplayName:(NSString *)displayName;
+
+
+/**
+ Init with all the properities
+
+ @param displayName Name of the display.
+ @param windowTypeSupported Informs the application how many windows the app is allowed to create per type.
+ @param windowCapabilities Contains a list of capabilities of all windows related to the app. @see windowCapabilities
+ */
+- (instancetype)initWithDisplayName:(NSString *)displayName windowTypeSupported:(nullable NSArray<SDLWindowCapability *> *)windowTypeSupported windowCapabilities:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowCapabilities;
+
+
+/**
+ Name of the display.
+ */
+@property (strong, nonatomic, nullable) NSString *displayName;
+
+/**
+ Informs the application how many windows the app is allowed to create per type.
+
+ Min size 1
+ Max size 100
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLWindowTypeCapabilities *> *windowTypeSupported;
+
+/**
+ Contains a list of capabilities of all windows related to the app. Once the app has registered the capabilities of all windows will be provided, but GetSystemCapability still allows requesting window capabilities of all windows.
+
+ After registration, only windows with capabilities changed will be included. Following cases will cause only affected windows to be included:
+
+ 1. App creates a new window. After the window is created, a system capability notification will be sent related only to the created window.
+ 2. App sets a new template to the window. The new template changes window capabilties. The notification will reflect those changes to the single window.
+
+ Min size 1, Max size 1000
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLWindowCapability *> *windowCapabilities;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLDisplayCapability.m b/SmartDeviceLink/SDLDisplayCapability.m
new file mode 100644
index 000000000..b4d8b319a
--- /dev/null
+++ b/SmartDeviceLink/SDLDisplayCapability.m
@@ -0,0 +1,66 @@
+//
+// SDLDisplayCapability.m
+// SmartDeviceLink
+
+#import "SDLDisplayCapability.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowTypeCapabilities.h"
+#import "SDLWindowCapability.h"
+
+@implementation SDLDisplayCapability
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+
+- (instancetype)initWithDisplayName:(NSString *)displayName {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.displayName = displayName;
+ return self;
+}
+
+- (instancetype)initWithDisplayName:(NSString *)displayName windowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported windowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities{
+ self = [self initWithDisplayName:displayName];
+ if (!self) {
+ return nil;
+ }
+ self.windowTypeSupported = windowTypeSupported;
+ self.windowCapabilities = windowCapabilities;
+ return self;
+}
+
+- (void)setDisplayName:(NSString *)displayName {
+ [self.store sdl_setObject:displayName forName:SDLRPCParameterNameDisplayName];
+}
+
+- (NSString *)displayName {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDisplayName ofClass:NSString.class error:nil];
+}
+
+- (void)setWindowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
+ [self.store sdl_setObject:windowTypeSupported forName:SDLRPCParameterNameWindowTypeSupported];
+}
+
+- (nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameWindowTypeSupported ofClass:SDLWindowTypeCapabilities.class error:nil];
+}
+
+- (void)setWindowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities {
+ [self.store sdl_setObject:windowCapabilities forName:SDLRPCParameterNameWindowCapabilities];
+}
+
+- (nullable NSArray<SDLWindowCapability *> *)windowCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameWindowCapabilities ofClass:SDLWindowCapability.class error:nil];
+}
+
+
+@end
diff --git a/SmartDeviceLink/SDLFunctionID.m b/SmartDeviceLink/SDLFunctionID.m
index 80cc2437d..5c5546ffa 100644
--- a/SmartDeviceLink/SDLFunctionID.m
+++ b/SmartDeviceLink/SDLFunctionID.m
@@ -91,6 +91,8 @@ NS_ASSUME_NONNULL_BEGIN
@56: SDLRPCFunctionNameUnpublishAppService,
@58: SDLRPCFunctionNameCloseApplication,
@59: SDLRPCFunctionNameShowAppMenu,
+ @60: SDLRPCFunctionNameCreateWindow,
+ @61: SDLRPCFunctionNameDeleteWindow,
@32768: SDLRPCFunctionNameOnHMIStatus,
@32769: SDLRPCFunctionNameOnAppInterfaceUnregistered,
@32770: SDLRPCFunctionNameOnButtonEvent,
diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m
index c0bc8fbb6..857c043b8 100644
--- a/SmartDeviceLink/SDLLifecycleManager.m
+++ b/SmartDeviceLink/SDLLifecycleManager.m
@@ -38,6 +38,7 @@
#import "SDLOnHMIStatus.h"
#import "SDLOnHashChange.h"
#import "SDLPermissionManager.h"
+#import "SDLPredefinedWindows.h"
#import "SDLProtocol.h"
#import "SDLProxy.h"
#import "SDLRPCNotificationNotification.h"
@@ -520,10 +521,13 @@ NSString *const BackgroundTaskTransportName = @"com.sdl.transport.backgroundTask
- (void)sdl_sendAppIcon:(nullable SDLFile *)appIcon withCompletion:(void (^)(void))completion {
// If no app icon was set, just move on to ready
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
if (appIcon == nil || !self.registerResponse.displayCapabilities.graphicSupported.boolValue) {
completion();
return;
}
+#pragma clang diagnostic pop
[self.fileManager uploadFile:appIcon completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError *_Nullable error) {
// These errors could be recoverable (particularly "cannot overwrite"), so we'll still attempt to set the app icon
@@ -738,6 +742,11 @@ NSString *const BackgroundTaskTransportName = @"com.sdl.transport.backgroundTask
}
SDLOnHMIStatus *hmiStatusNotification = notification.notification;
+
+ if (hmiStatusNotification.windowID != nil && hmiStatusNotification.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
SDLHMILevel oldHMILevel = self.hmiLevel;
self.hmiLevel = hmiStatusNotification.hmiLevel;
diff --git a/SmartDeviceLink/SDLMenuManager.m b/SmartDeviceLink/SDLMenuManager.m
index 1ca796dcc..bbe261d57 100644
--- a/SmartDeviceLink/SDLMenuManager.m
+++ b/SmartDeviceLink/SDLMenuManager.m
@@ -27,6 +27,7 @@
#import "SDLDynamicMenuUpdateAlgorithm.h"
#import "SDLOnCommand.h"
#import "SDLOnHMIStatus.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRegisterAppInterfaceResponse.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCResponseNotification.h"
@@ -592,17 +593,19 @@ UInt32 const MenuCellIdMin = 1;
SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
if (!response.success.boolValue) { return; }
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
if (response.displayCapabilities == nil) {
SDLLogE(@"RegisterAppInterface succeeded but didn't send a display capabilities. A lot of things will probably break.");
return;
}
self.displayCapabilities = response.displayCapabilities;
+#pragma clang diagnostic pop
}
- (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification {
SDLSetDisplayLayoutResponse *response = (SDLSetDisplayLayoutResponse *)notification.response;
-
if (!response.success.boolValue) { return; }
if (response.displayCapabilities == nil) {
SDLLogE(@"SetDisplayLayout succeeded but didn't send a display capabilities. A lot of things will probably break.");
@@ -614,6 +617,11 @@ UInt32 const MenuCellIdMin = 1;
- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
SDLHMILevel oldHMILevel = self.currentHMILevel;
self.currentHMILevel = hmiStatus.hmiLevel;
diff --git a/SmartDeviceLink/SDLNotificationConstants.h b/SmartDeviceLink/SDLNotificationConstants.h
index 995923606..d1efd8b8f 100644
--- a/SmartDeviceLink/SDLNotificationConstants.h
+++ b/SmartDeviceLink/SDLNotificationConstants.h
@@ -124,10 +124,12 @@ extern SDLNotificationName const SDLDidReceiveButtonPressResponse;
extern SDLNotificationName const SDLDidReceiveChangeRegistrationResponse;
extern SDLNotificationName const SDLDidReceiveCloseApplicationResponse;
extern SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse;
+extern SDLNotificationName const SDLDidReceiveCreateWindowResponse;
extern SDLNotificationName const SDLDidReceiveDeleteCommandResponse;
extern SDLNotificationName const SDLDidReceiveDeleteFileResponse;
extern SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetResponse;
extern SDLNotificationName const SDLDidReceiveDeleteSubmenuResponse;
+extern SDLNotificationName const SDLDidReceiveDeleteWindowResponse;
extern SDLNotificationName const SDLDidReceiveDiagnosticMessageResponse;
extern SDLNotificationName const SDLDidReceiveDialNumberResponse;
extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse;
@@ -187,10 +189,12 @@ extern SDLNotificationName const SDLDidReceiveButtonPressRequest;
extern SDLNotificationName const SDLDidReceiveChangeRegistrationRequest;
extern SDLNotificationName const SDLDidReceiveCloseApplicationRequest;
extern SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetRequest;
+extern SDLNotificationName const SDLDidReceiveCreateWindowRequest;
extern SDLNotificationName const SDLDidReceiveDeleteCommandRequest;
extern SDLNotificationName const SDLDidReceiveDeleteFileRequest;
extern SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetRequest;
extern SDLNotificationName const SDLDidReceiveDeleteSubMenuRequest;
+extern SDLNotificationName const SDLDidReceiveDeleteWindowRequest;
extern SDLNotificationName const SDLDidReceiveDiagnosticMessageRequest;
extern SDLNotificationName const SDLDidReceiveDialNumberRequest;
extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest;
diff --git a/SmartDeviceLink/SDLNotificationConstants.m b/SmartDeviceLink/SDLNotificationConstants.m
index 7e0083a51..7882d7d6f 100644
--- a/SmartDeviceLink/SDLNotificationConstants.m
+++ b/SmartDeviceLink/SDLNotificationConstants.m
@@ -32,10 +32,12 @@ SDLNotificationName const SDLDidReceiveButtonPressResponse = @"com.sdl.response.
SDLNotificationName const SDLDidReceiveChangeRegistrationResponse = @"com.sdl.response.changeRegistration";
SDLNotificationName const SDLDidReceiveCloseApplicationResponse = @"com.sdl.response.closeApplication";
SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse = @"com.sdl.response.createInteractionChoiceSet";
+SDLNotificationName const SDLDidReceiveCreateWindowResponse = @"com.sdl.response.createWindow";
SDLNotificationName const SDLDidReceiveDeleteCommandResponse = @"com.sdl.response.deleteCommand";
SDLNotificationName const SDLDidReceiveDeleteFileResponse = @"com.sdl.response.deleteFile";
SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetResponse = @"com.sdl.response.deleteInteractionChoiceSet";
SDLNotificationName const SDLDidReceiveDeleteSubmenuResponse = @"com.sdl.response.deleteSubmenu";
+SDLNotificationName const SDLDidReceiveDeleteWindowResponse = @"com.sdl.response.deleteWindow";
SDLNotificationName const SDLDidReceiveDiagnosticMessageResponse = @"com.sdl.response.diagnosticMessage";
SDLNotificationName const SDLDidReceiveDialNumberResponse = @"com.sdl.response.dialNumber";
SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse = @"com.sdl.response.encodedSyncPData";
@@ -91,11 +93,13 @@ SDLNotificationName const SDLDidReceiveAlertManeuverRequest = @"com.sdl.request.
SDLNotificationName const SDLDidReceiveButtonPressRequest = @"com.sdl.request.buttonPress";
SDLNotificationName const SDLDidReceiveChangeRegistrationRequest = @"com.sdl.request.changeRegistration";
SDLNotificationName const SDLDidReceiveCloseApplicationRequest = @"com.sdl.request.closeApplication";
+SDLNotificationName const SDLDidReceiveCreateWindowRequest = @"com.sdl.request.createWindow";
SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetRequest = @"com.sdl.request.createInteractionChoiceSet";
SDLNotificationName const SDLDidReceiveDeleteCommandRequest = @"com.sdl.request.deleteCommand";
SDLNotificationName const SDLDidReceiveDeleteFileRequest = @"com.sdl.request.deleteFile";
SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetRequest = @"com.sdl.request.deleteInteractionChoiceSet";
SDLNotificationName const SDLDidReceiveDeleteSubMenuRequest = @"com.sdl.request.deleteSubMenu";
+SDLNotificationName const SDLDidReceiveDeleteWindowRequest = @"com.sdl.request.deleteWindow";
SDLNotificationName const SDLDidReceiveDiagnosticMessageRequest = @"com.sdl.request.diagnosticMessage";
SDLNotificationName const SDLDidReceiveDialNumberRequest = @"com.sdl.request.dialNumber";
SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest = @"com.sdl.request.encodedSyncPData";
@@ -179,10 +183,12 @@ SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notifica
SDLDidReceiveChangeRegistrationResponse,
SDLDidReceiveCloseApplicationResponse,
SDLDidReceiveCreateInteractionChoiceSetResponse,
+ SDLDidReceiveCreateWindowResponse,
SDLDidReceiveDeleteCommandResponse,
SDLDidReceiveDeleteFileResponse,
SDLDidReceiveDeleteInteractionChoiceSetResponse,
SDLDidReceiveDeleteSubmenuResponse,
+ SDLDidReceiveDeleteWindowResponse,
SDLDidReceiveDiagnosticMessageResponse,
SDLDidReceiveDialNumberResponse,
SDLDidReceiveEncodedSyncPDataResponse,
diff --git a/SmartDeviceLink/SDLNotificationDispatcher.m b/SmartDeviceLink/SDLNotificationDispatcher.m
index c45aa658a..5398eb7e1 100644
--- a/SmartDeviceLink/SDLNotificationDispatcher.m
+++ b/SmartDeviceLink/SDLNotificationDispatcher.m
@@ -127,6 +127,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCResponseNotification:SDLDidReceiveCreateInteractionChoiceSetResponse response:response];
}
+- (void)onCreateWindowResponse:(SDLCreateWindowResponse *)response {
+ [self postRPCResponseNotification:SDLDidReceiveCreateWindowResponse response:response];
+}
+
- (void)onDeleteCommandResponse:(SDLDeleteCommandResponse *)response {
[self postRPCResponseNotification:SDLDidReceiveDeleteCommandResponse response:response];
}
@@ -143,6 +147,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCResponseNotification:SDLDidReceiveDeleteSubmenuResponse response:response];
}
+- (void)onDeleteWindowResponse:(SDLDeleteWindowResponse *)response {
+ [self postRPCResponseNotification:SDLDidReceiveDeleteWindowResponse response:response];
+}
+
- (void)onDiagnosticMessageResponse:(SDLDiagnosticMessageResponse *)response {
[self postRPCResponseNotification:SDLDidReceiveDiagnosticMessageResponse response:response];
}
@@ -361,6 +369,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCRequestNotification:SDLDidReceiveCreateInteractionChoiceSetRequest request:request];
}
+- (void)onCreateWindow:(SDLCreateWindow *)request {
+ [self postRPCRequestNotification:SDLDidReceiveCreateWindowRequest request:request];
+}
+
- (void)onDeleteCommand:(SDLDeleteCommand *)request {
[self postRPCRequestNotification:SDLDidReceiveDeleteCommandRequest request:request];
}
@@ -377,6 +389,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCRequestNotification:SDLDidReceiveDeleteSubMenuRequest request:request];
}
+- (void)onDeleteWindow:(SDLDeleteWindow *)request {
+ [self postRPCRequestNotification:SDLDidReceiveDeleteWindowRequest request:request];
+}
+
- (void)onDiagnosticMessage:(SDLDiagnosticMessage *)request {
[self postRPCRequestNotification:SDLDidReceiveDiagnosticMessageRequest request:request];
}
diff --git a/SmartDeviceLink/SDLOnHMIStatus.h b/SmartDeviceLink/SDLOnHMIStatus.h
index 069f7789d..232f85d96 100644
--- a/SmartDeviceLink/SDLOnHMIStatus.h
+++ b/SmartDeviceLink/SDLOnHMIStatus.h
@@ -44,6 +44,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic) SDLSystemContext systemContext;
+/**
+ This is the unique ID assigned to the window that this RPC is intended for. If this param is not included, it will be assumed that this request is specifically for the main window on the main display. @see PredefinedWindows enum.
+
+ @since SDL 6.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLUInt> *windowID;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnHMIStatus.m b/SmartDeviceLink/SDLOnHMIStatus.m
index aa6b93e66..f80b4b4fb 100644
--- a/SmartDeviceLink/SDLOnHMIStatus.m
+++ b/SmartDeviceLink/SDLOnHMIStatus.m
@@ -58,6 +58,15 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_enumForName:SDLRPCParameterNameSystemContext error:&error];
}
+- (void)setWindowID:(nullable NSNumber<SDLUInt> *)windowID {
+ [self.parameters sdl_setObject:windowID forName:SDLRPCParameterNameWindowId];
+}
+
+- (nullable NSNumber<SDLUInt> *)windowID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowId ofClass:NSNumber.class error:&error];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionManager.m b/SmartDeviceLink/SDLPermissionManager.m
index ada837ba7..e68990faa 100644
--- a/SmartDeviceLink/SDLPermissionManager.m
+++ b/SmartDeviceLink/SDLPermissionManager.m
@@ -14,6 +14,7 @@
#import "SDLOnPermissionsChange.h"
#import "SDLPermissionFilter.h"
#import "SDLPermissionItem.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLStateMachine.h"
@@ -225,6 +226,10 @@ NS_ASSUME_NONNULL_BEGIN
SDLOnHMIStatus *hmiStatus = notification.notification;
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
SDLHMILevel oldHMILevel = [self.currentHMILevel copy];
self.currentHMILevel = hmiStatus.hmiLevel;
NSArray<SDLPermissionFilter *> *filters = [self.filters copy];
diff --git a/SmartDeviceLink/SDLPredefinedWindows.h b/SmartDeviceLink/SDLPredefinedWindows.h
new file mode 100644
index 000000000..2f6a031a9
--- /dev/null
+++ b/SmartDeviceLink/SDLPredefinedWindows.h
@@ -0,0 +1,15 @@
+//
+// SDLPredefinedWindows.h
+// SmartDeviceLink
+
+#import "SDLEnum.h"
+
+/**
+ Specifies which windows and IDs are predefined and pre-created on behalf of the app. The default window is always available and represents the app window on the main display. It's an equivalent to today's app window. For backward compatibility, this will ensure the app always has at least the default window on the main display. The app can choose to use this predefined enum element to specifically address app's main window or to duplicate window content. It is not possible to duplicate another window to the default window. The primary widget is a special widget, that can be associated with a service type, which is used by the HMI whenever a single widget needs to represent the whole app. The primary widget should be named as the app and can be pre-created by the HMI.
+
+ @since SDL 6.0
+ */
+typedef NS_ENUM(NSUInteger, SDLPredefinedWindows){
+ SDLPredefinedWindowsDefaultWindow = 0, //The default window is a main window pre-created on behalf of the app.
+ SDLPredefinedWindowsPrimaryWidget = 1 //The primary widget of the app.
+};
diff --git a/SmartDeviceLink/SDLProxyListener.h b/SmartDeviceLink/SDLProxyListener.h
index c95a64383..624242125 100644
--- a/SmartDeviceLink/SDLProxyListener.h
+++ b/SmartDeviceLink/SDLProxyListener.h
@@ -19,6 +19,8 @@
@class SDLCloseApplicationResponse;
@class SDLCreateInteractionChoiceSet;
@class SDLCreateInteractionChoiceSetResponse;
+@class SDLCreateWindow;
+@class SDLCreateWindowResponse;
@class SDLDeleteCommand;
@class SDLDeleteCommandResponse;
@class SDLDeleteFile;
@@ -27,6 +29,8 @@
@class SDLDeleteInteractionChoiceSetResponse;
@class SDLDeleteSubMenu;
@class SDLDeleteSubMenuResponse;
+@class SDLDeleteWindow;
+@class SDLDeleteWindowResponse;
@class SDLDiagnosticMessage;
@class SDLDiagnosticMessageResponse;
@class SDLDialNumber;
@@ -232,6 +236,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onCreateInteractionChoiceSetResponse:(SDLCreateInteractionChoiceSetResponse *)response;
/**
+ * Called when a Create Window Response is received from Core
+ *
+ * @param response A SDLCreateWindowResponse object
+ */
+- (void)onCreateWindowResponse:(SDLCreateWindowResponse *)response;
+
+/**
* Called when a Delete Command Response is received from Core
*
* @param response A SDLDeleteCommandResponse object
@@ -260,6 +271,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onDeleteSubMenuResponse:(SDLDeleteSubMenuResponse *)response;
/**
+ * Called when a Delete Window Response is received from Core
+ *
+ * @param response A SDLDeleteWindowResponse object
+ */
+- (void)onDeleteWindowResponse:(SDLDeleteWindowResponse *)response;
+
+/**
* Called when a Diagnostic Message Response is received from Core
*
* @param response A SDLDiagnosticMessageResponse object
@@ -647,6 +665,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onCreateInteractionChoiceSet:(SDLCreateInteractionChoiceSet *)request;
/**
+ * Called when a `SDLCreateWindow` request is received from Core
+ *
+ * @param request A SDLCreateWindow object
+ */
+- (void)onCreateWindow:(SDLCreateWindow *)request;
+
+/**
* Called when a `DeleteCommand` request is received from Core
*
* @param request A SDLDeleteCommand object
@@ -675,6 +700,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onDeleteSubMenu:(SDLDeleteSubMenu *)request;
/**
+ * Called when a `SDLDeleteWindow` request is received from Core
+ *
+ * @param request A SDLDeleteWindow object
+ */
+- (void)onDeleteWindow:(SDLDeleteWindow *)request;
+
+/**
* Called when a `DiagnosticMessage` request is received from Core
*
* @param request A SDLDiagnosticMessage object
diff --git a/SmartDeviceLink/SDLRPCFunctionNames.h b/SmartDeviceLink/SDLRPCFunctionNames.h
index fa3cce56d..53658017b 100644
--- a/SmartDeviceLink/SDLRPCFunctionNames.h
+++ b/SmartDeviceLink/SDLRPCFunctionNames.h
@@ -96,5 +96,7 @@ extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeButton;
extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeVehicleData;
extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeWayPoints;
extern SDLRPCFunctionName const SDLRPCFunctionNameUpdateTurnList;
+extern SDLRPCFunctionName const SDLRPCFunctionNameCreateWindow;
+extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteWindow;
diff --git a/SmartDeviceLink/SDLRPCFunctionNames.m b/SmartDeviceLink/SDLRPCFunctionNames.m
index 4aceed985..acb426970 100644
--- a/SmartDeviceLink/SDLRPCFunctionNames.m
+++ b/SmartDeviceLink/SDLRPCFunctionNames.m
@@ -91,3 +91,5 @@ SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeButton = @"UnsubscribeButt
SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeVehicleData = @"UnsubscribeVehicleData";
SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeWayPoints = @"UnsubscribeWayPoints";
SDLRPCFunctionName const SDLRPCFunctionNameUpdateTurnList = @"UpdateTurnList";
+SDLRPCFunctionName const SDLRPCFunctionNameCreateWindow = @"CreateWindow";
+SDLRPCFunctionName const SDLRPCFunctionNameDeleteWindow = @"DeleteWindow";
diff --git a/SmartDeviceLink/SDLRPCParameterNames.h b/SmartDeviceLink/SDLRPCParameterNames.h
index 07829f398..c579c4ad1 100644
--- a/SmartDeviceLink/SDLRPCParameterNames.h
+++ b/SmartDeviceLink/SDLRPCParameterNames.h
@@ -48,6 +48,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameAppServiceRecord;
extern SDLRPCParameterName const SDLRPCParameterNameAppServices;
extern SDLRPCParameterName const SDLRPCParameterNameAppServicesCapabilities;
extern SDLRPCParameterName const SDLRPCParameterNameAppVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType;
extern SDLRPCParameterName const SDLRPCParameterNameAutoCompleteList;
extern SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities;
extern SDLRPCParameterName const SDLRPCParameterNameAudioControlData;
@@ -171,6 +172,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameDTCMask;
extern SDLRPCParameterName const SDLRPCParameterNameDualModeEnable;
extern SDLRPCParameterName const SDLRPCParameterNameDualModeEnableAvailable;
extern SDLRPCParameterName const SDLRPCParameterNameDuration;
+extern SDLRPCParameterName const SDLRPCParameterNameDuplicateUpdatesFromWindowID;
extern SDLRPCParameterName const SDLRPCParameterNameE911Override;
extern SDLRPCParameterName const SDLRPCParameterNameECallConfirmationStatus;
extern SDLRPCParameterName const SDLRPCParameterNameECallEventActive;
@@ -348,6 +350,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameMaxBitrate;
extern SDLRPCParameterName const SDLRPCParameterNameMaxDuration;
extern SDLRPCParameterName const SDLRPCParameterNameMaxHourlyForecastAmount;
extern SDLRPCParameterName const SDLRPCParameterNameMaximumChangeVelocity;
+extern SDLRPCParameterName const SDLRPCParameterNameMaximumNumberOfWindows;
extern SDLRPCParameterName const SDLRPCParameterNameMaxMinutelyForecastAmount;
extern SDLRPCParameterName const SDLRPCParameterNameMaxMultidayForecastAmount;
extern SDLRPCParameterName const SDLRPCParameterNameMaxNumberRFCOMMPorts;
@@ -601,12 +604,15 @@ extern SDLRPCParameterName const SDLRPCParameterNameTemperatureHigh;
extern SDLRPCParameterName const SDLRPCParameterNameTemperatureLow;
extern SDLRPCParameterName const SDLRPCParameterNameTemperatureUnit;
extern SDLRPCParameterName const SDLRPCParameterNameTemperatureUnitAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameTemplate;
+extern SDLRPCParameterName const SDLRPCParameterNameTemplateConfiguration;
extern SDLRPCParameterName const SDLRPCParameterNameTemplatesAvailable;
extern SDLRPCParameterName const SDLRPCParameterNameTemplateTitle;
extern SDLRPCParameterName const SDLRPCParameterNameTertiaryText;
extern SDLRPCParameterName const SDLRPCParameterNameText;
extern SDLRPCParameterName const SDLRPCParameterNameTextFields;
extern SDLRPCParameterName const SDLRPCParameterNameTextMessageAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameTextSupported;
extern SDLRPCParameterName const SDLRPCParameterNameThoroughfare;
extern SDLRPCParameterName const SDLRPCParameterNameTime;
extern SDLRPCParameterName const SDLRPCParameterNameTimeIssued;
@@ -683,6 +689,10 @@ extern SDLRPCParameterName const SDLRPCParameterNameWindBearing;
extern SDLRPCParameterName const SDLRPCParameterNameWindGust;
extern SDLRPCParameterName const SDLRPCParameterNameWindSpeed;
extern SDLRPCParameterName const SDLRPCParameterNameWiperStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowId;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowName;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowTypeSupported;
extern SDLRPCParameterName const SDLRPCParameterNameX;
extern SDLRPCParameterName const SDLRPCParameterNameY;
extern SDLRPCParameterName const SDLRPCParameterNameYear;
diff --git a/SmartDeviceLink/SDLRPCParameterNames.m b/SmartDeviceLink/SDLRPCParameterNames.m
index d4fb5c02c..6472b1f93 100644
--- a/SmartDeviceLink/SDLRPCParameterNames.m
+++ b/SmartDeviceLink/SDLRPCParameterNames.m
@@ -48,6 +48,7 @@ SDLRPCParameterName const SDLRPCParameterNameAppDisplayName = @"appDisplayName";
SDLRPCParameterName const SDLRPCParameterNameAppVersion = @"appVersion";
SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities = @"audioControlCapabilities";
SDLRPCParameterName const SDLRPCParameterNameAudioControlData = @"audioControlData";
+SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType = @"associatedServiceType";
SDLRPCParameterName const SDLRPCParameterNameAudioPassThruCapabilities = @"audioPassThruCapabilities";
SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText1 = @"audioPassThruDisplayText1";
SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2 = @"audioPassThruDisplayText2";
@@ -167,6 +168,7 @@ SDLRPCParameterName const SDLRPCParameterNameDTCMask = @"dtcMask";
SDLRPCParameterName const SDLRPCParameterNameDualModeEnable = @"dualModeEnable";
SDLRPCParameterName const SDLRPCParameterNameDualModeEnableAvailable = @"dualModeEnableAvailable";
SDLRPCParameterName const SDLRPCParameterNameDuration = @"duration";
+SDLRPCParameterName const SDLRPCParameterNameDuplicateUpdatesFromWindowID = @"duplicateUpdatesFromWindowID";
SDLRPCParameterName const SDLRPCParameterNameE911Override = @"e911Override";
SDLRPCParameterName const SDLRPCParameterNameECallConfirmationStatus = @"eCallConfirmationStatus";
SDLRPCParameterName const SDLRPCParameterNameECallEventActive = @"eCallEventActive";
@@ -340,6 +342,7 @@ SDLRPCParameterName const SDLRPCParameterNameMaxBitrate = @"maxBitrate";
SDLRPCParameterName const SDLRPCParameterNameMaxDuration = @"maxDuration";
SDLRPCParameterName const SDLRPCParameterNameMaxHourlyForecastAmount = @"maxHourlyForecastAmount";
SDLRPCParameterName const SDLRPCParameterNameMaximumChangeVelocity = @"maximumChangeVelocity";
+SDLRPCParameterName const SDLRPCParameterNameMaximumNumberOfWindows = @"maximumNumberOfWindows";
SDLRPCParameterName const SDLRPCParameterNameMaxMinutelyForecastAmount = @"maxMinutelyForecastAmount";
SDLRPCParameterName const SDLRPCParameterNameMaxMultidayForecastAmount = @"maxMultidayForecastAmount";
SDLRPCParameterName const SDLRPCParameterNameMaxNumberRFCOMMPorts = @"maxNumberRFCOMMPorts";
@@ -595,6 +598,8 @@ SDLRPCParameterName const SDLRPCParameterNameTargetId = @"targetID";
SDLRPCParameterName const SDLRPCParameterNameTemperatureHigh = @"temperatureHigh";
SDLRPCParameterName const SDLRPCParameterNameTemperatureLow = @"temperatureLow";
SDLRPCParameterName const SDLRPCParameterNameTemperatureUnit = @"temperatureUnit";
+SDLRPCParameterName const SDLRPCParameterNameTemplate = @"template";
+SDLRPCParameterName const SDLRPCParameterNameTemplateConfiguration = @"templateConfiguration";
SDLRPCParameterName const SDLRPCParameterNameTemperatureUnitAvailable = @"temperatureUnitAvailable";
SDLRPCParameterName const SDLRPCParameterNameTemplatesAvailable = @"templatesAvailable";
SDLRPCParameterName const SDLRPCParameterNameTemplateTitle = @"templateTitle";
@@ -602,6 +607,7 @@ SDLRPCParameterName const SDLRPCParameterNameTertiaryText = @"tertiaryText";
SDLRPCParameterName const SDLRPCParameterNameText = @"text";
SDLRPCParameterName const SDLRPCParameterNameTextFields = @"textFields";
SDLRPCParameterName const SDLRPCParameterNameTextMessageAvailable = @"textMsgAvailable";
+SDLRPCParameterName const SDLRPCParameterNameTextSupported = @"textSupported";
SDLRPCParameterName const SDLRPCParameterNameThoroughfare = @"thoroughfare";
SDLRPCParameterName const SDLRPCParameterNameTimeIssued = @"timeIssued";
SDLRPCParameterName const SDLRPCParameterNameTime = @"time";
@@ -678,6 +684,10 @@ SDLRPCParameterName const SDLRPCParameterNameWindBearing = @"windBearing";
SDLRPCParameterName const SDLRPCParameterNameWindGust = @"windGust";
SDLRPCParameterName const SDLRPCParameterNameWindSpeed = @"windSpeed";
SDLRPCParameterName const SDLRPCParameterNameWiperStatus = @"wiperStatus";
+SDLRPCParameterName const SDLRPCParameterNameWindowCapabilities = @"windowCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameWindowId = @"windowID";
+SDLRPCParameterName const SDLRPCParameterNameWindowName = @"windowName";
+SDLRPCParameterName const SDLRPCParameterNameWindowTypeSupported = @"windowTypeSupported";
SDLRPCParameterName const SDLRPCParameterNameX = @"x";
SDLRPCParameterName const SDLRPCParameterNameY = @"y";
SDLRPCParameterName const SDLRPCParameterNameYear = @"year";
diff --git a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h
index 331588fa6..2f18c4522 100644
--- a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h
+++ b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h
@@ -73,7 +73,7 @@ NS_ASSUME_NONNULL_BEGIN
*
* @since SDL 1.0
*/
-@property (nullable, strong, nonatomic) SDLDisplayCapabilities *displayCapabilities;
+@property (nullable, strong, nonatomic) SDLDisplayCapabilities *displayCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
/**
* Contains information about the head unit button capabilities.
@@ -82,7 +82,7 @@ NS_ASSUME_NONNULL_BEGIN
*
* @since SDL 1.0
*/
-@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
+@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
/**
* Contains information about the head unit soft button capabilities.
@@ -91,7 +91,7 @@ NS_ASSUME_NONNULL_BEGIN
*
* @since SDL 2.0
*/
-@property (nullable, strong, nonatomic) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
+@property (nullable, strong, nonatomic) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
/**
* If returned, the platform supports custom on-screen Presets
@@ -100,7 +100,7 @@ NS_ASSUME_NONNULL_BEGIN
*
* @since SDL 2.0
*/
-@property (nullable, strong, nonatomic) SDLPresetBankCapabilities *presetBankCapabilities;
+@property (nullable, strong, nonatomic) SDLPresetBankCapabilities *presetBankCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
/**
* Contains information about the HMI zone capabilities.
diff --git a/SmartDeviceLink/SDLShow.h b/SmartDeviceLink/SDLShow.h
index e1e360912..18f95107d 100644
--- a/SmartDeviceLink/SDLShow.h
+++ b/SmartDeviceLink/SDLShow.h
@@ -9,6 +9,7 @@
@class SDLImage;
@class SDLSoftButton;
@class SDLMetadataTags;
+@class SDLTemplateConfiguration;
/**
@@ -246,6 +247,21 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) SDLMetadataTags *metadataTags;
+
+/**
+ This is the unique ID assigned to the window that this RPC is intended. If this param is not included, it will be assumed that this request is specifically for the main window on the main display. @see PredefinedWindows enum.
+
+ @since SDL 6.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLUInt> *windowID;
+
+/**
+ Used to set an alternate template layout to a window.
+
+ @since SDL 6.0
+ */
+@property (strong, nonatomic, nullable) SDLTemplateConfiguration *templateConfiguration;
+
/**
The title of the current template.
diff --git a/SmartDeviceLink/SDLShow.m b/SmartDeviceLink/SDLShow.m
index a90949e4f..b1f490f1c 100644
--- a/SmartDeviceLink/SDLShow.m
+++ b/SmartDeviceLink/SDLShow.m
@@ -11,6 +11,7 @@
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
#import "SDLSoftButton.h"
+#import "SDLTemplateConfiguration.h"
NS_ASSUME_NONNULL_BEGIN
@@ -204,6 +205,23 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameMetadataTags ofClass:SDLMetadataTags.class error:nil];
}
+- (void)setWindowID:(nullable NSNumber<SDLUInt> *)windowID {
+ [self.parameters sdl_setObject:windowID forName:SDLRPCParameterNameWindowId];
+}
+
+- (nullable NSNumber<SDLUInt> *)windowID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowId ofClass:NSNumber.class error:&error];
+}
+
+- (void)setTemplateConfiguration:(nullable SDLTemplateConfiguration *)templateConfiguration {
+ [self.store sdl_setObject:templateConfiguration forName:SDLRPCParameterNameTemplateConfiguration];
+}
+
+- (nullable SDLTemplateConfiguration *)templateConfiguration {
+ return [self.store sdl_objectForName:SDLRPCParameterNameTemplateConfiguration ofClass:SDLTemplateConfiguration.class error:nil];
+}
+
- (void)setTemplateTitle:(nullable NSString *)templateTitle {
[self.parameters sdl_setObject:templateTitle forName:SDLRPCParameterNameTemplateTitle];
}
diff --git a/SmartDeviceLink/SDLSoftButtonCapabilities.h b/SmartDeviceLink/SDLSoftButtonCapabilities.h
index c49d78a4b..07d57e276 100644
--- a/SmartDeviceLink/SDLSoftButtonCapabilities.h
+++ b/SmartDeviceLink/SDLSoftButtonCapabilities.h
@@ -47,6 +47,15 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic) NSNumber<SDLBool> *imageSupported;
+/**
+ The button supports the use of text. If not included, the default value should be considered true that the button will support text.
+
+ Optional, Boolean
+
+ @since SDL 6.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *textSupported;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSoftButtonCapabilities.m b/SmartDeviceLink/SDLSoftButtonCapabilities.m
index cb9c903d3..6d5ea078d 100644
--- a/SmartDeviceLink/SDLSoftButtonCapabilities.m
+++ b/SmartDeviceLink/SDLSoftButtonCapabilities.m
@@ -47,6 +47,15 @@ NS_ASSUME_NONNULL_BEGIN
return [self.store sdl_objectForName:SDLRPCParameterNameImageSupported ofClass:NSNumber.class error:&error];
}
+- (void)setTextSupported:(nullable NSNumber<SDLBool> *)textSupported {
+ [self.store sdl_setObject:textSupported forName:SDLRPCParameterNameTextSupported];
+}
+
+- (nullable NSNumber<SDLBool> *)textSupported {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameTextSupported ofClass:NSNumber.class error:&error];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSoftButtonManager.m b/SmartDeviceLink/SDLSoftButtonManager.m
index 56deb83b0..6a79c811d 100644
--- a/SmartDeviceLink/SDLSoftButtonManager.m
+++ b/SmartDeviceLink/SDLSoftButtonManager.m
@@ -14,6 +14,7 @@
#import "SDLFileManager.h"
#import "SDLLogMacros.h"
#import "SDLOnHMIStatus.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRegisterAppInterfaceResponse.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCResponseNotification.h"
@@ -193,6 +194,8 @@ NS_ASSUME_NONNULL_BEGIN
SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
if (!response.success.boolValue) { return; }
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
if (response.displayCapabilities == nil) {
SDLLogE(@"RegisterAppInterface succeeded but didn't send a display capabilities. A lot of things will probably break.");
return;
@@ -200,11 +203,11 @@ NS_ASSUME_NONNULL_BEGIN
self.softButtonCapabilities = response.softButtonCapabilities ? response.softButtonCapabilities.firstObject : nil;
self.displayCapabilities = response.displayCapabilities;
+#pragma clang diagnostic pop
}
- (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification {
SDLSetDisplayLayoutResponse *response = (SDLSetDisplayLayoutResponse *)notification.response;
-
if (!response.success.boolValue) { return; }
if (response.displayCapabilities == nil) {
SDLLogE(@"SetDisplayLayout succeeded but didn't send a display capabilities. A lot of things will probably break.");
@@ -224,6 +227,10 @@ NS_ASSUME_NONNULL_BEGIN
- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
SDLHMILevel oldHMILevel = self.currentLevel;
if (![oldHMILevel isEqualToEnum:hmiStatus.hmiLevel]) {
if ([hmiStatus.hmiLevel isEqualToEnum:SDLHMILevelNone]) {
diff --git a/SmartDeviceLink/SDLStreamingAudioLifecycleManager.m b/SmartDeviceLink/SDLStreamingAudioLifecycleManager.m
index cabf367cc..2f1faf28f 100644
--- a/SmartDeviceLink/SDLStreamingAudioLifecycleManager.m
+++ b/SmartDeviceLink/SDLStreamingAudioLifecycleManager.m
@@ -20,6 +20,7 @@
#import "SDLOnHMIStatus.h"
#import "SDLProtocol.h"
#import "SDLProtocolMessage.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRegisterAppInterfaceResponse.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCResponseNotification.h"
@@ -225,8 +226,11 @@ NS_ASSUME_NONNULL_BEGIN
SDLLogD(@"Received Register App Interface");
SDLRegisterAppInterfaceResponse* registerResponse = (SDLRegisterAppInterfaceResponse*)notification.response;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
SDLLogV(@"Determining whether streaming is supported");
_streamingSupported = registerResponse.hmiCapabilities.videoStreaming ? registerResponse.hmiCapabilities.videoStreaming.boolValue : registerResponse.displayCapabilities.graphicSupported.boolValue;
+#pragma clang diagnostic pop
if (!self.isStreamingSupported) {
SDLLogE(@"Graphics are not supported on this head unit. We are are assuming screen size is also unavailable and exiting.");
@@ -243,6 +247,11 @@ NS_ASSUME_NONNULL_BEGIN
}
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus*)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
self.hmiLevel = hmiStatus.hmiLevel;
// if startWithProtocol has not been called yet, abort here
diff --git a/SmartDeviceLink/SDLStreamingVideoLifecycleManager.m b/SmartDeviceLink/SDLStreamingVideoLifecycleManager.m
index c0d92c30d..2469582d3 100644
--- a/SmartDeviceLink/SDLStreamingVideoLifecycleManager.m
+++ b/SmartDeviceLink/SDLStreamingVideoLifecycleManager.m
@@ -31,6 +31,7 @@
#import "SDLOnHMIStatus.h"
#import "SDLProtocol.h"
#import "SDLProtocolMessage.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRegisterAppInterfaceResponse.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCResponseNotification.h"
@@ -551,14 +552,19 @@ typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_N
SDLRegisterAppInterfaceResponse* registerResponse = (SDLRegisterAppInterfaceResponse*)notification.response;
SDLLogV(@"Determining whether streaming is supported");
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
_streamingSupported = registerResponse.hmiCapabilities.videoStreaming ? registerResponse.hmiCapabilities.videoStreaming.boolValue : registerResponse.displayCapabilities.graphicSupported.boolValue;
+#pragma clang diagnostic pop
if (!self.isStreamingSupported) {
SDLLogE(@"Graphics are not supported on this head unit. We are are assuming screen size is also unavailable and exiting.");
return;
}
-
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
SDLImageResolution* resolution = registerResponse.displayCapabilities.screenParams.resolution;
+#pragma clang diagnostic pop
if (resolution != nil) {
_screenSize = CGSizeMake(resolution.resolutionWidth.floatValue,
resolution.resolutionHeight.floatValue);
@@ -578,6 +584,9 @@ typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_N
}
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus*)notification.notification;
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
self.hmiLevel = hmiStatus.hmiLevel;
SDLVideoStreamingState newState = hmiStatus.videoStreamingState ?: SDLVideoStreamingStateStreamable;
diff --git a/SmartDeviceLink/SDLSystemCapability.h b/SmartDeviceLink/SDLSystemCapability.h
index 503f50f3e..1e88443e6 100755
--- a/SmartDeviceLink/SDLSystemCapability.h
+++ b/SmartDeviceLink/SDLSystemCapability.h
@@ -14,6 +14,7 @@
@class SDLNavigationCapability;
@class SDLVideoStreamingCapability;
@class SDLRemoteControlCapabilities;
+@class SDLDisplayCapability;
NS_ASSUME_NONNULL_BEGIN
@@ -104,6 +105,15 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) SDLRemoteControlCapabilities *remoteControlCapability;
+/**
+ Contain the display related information and all windows related to that display
+
+ Optional
+
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLDisplayCapability *> *displayCapabilities;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapability.m b/SmartDeviceLink/SDLSystemCapability.m
index c9273df2c..1b887736e 100755
--- a/SmartDeviceLink/SDLSystemCapability.m
+++ b/SmartDeviceLink/SDLSystemCapability.m
@@ -16,6 +16,7 @@
#import "SDLSystemCapabilityType.h"
#import "SDLVideoStreamingCapability.h"
#import "SDLRemoteControlCapabilities.h"
+#import "SDLDisplayCapability.h"
NS_ASSUME_NONNULL_BEGIN
@@ -130,6 +131,15 @@ NS_ASSUME_NONNULL_BEGIN
return [self.store sdl_objectForName:SDLRPCParameterNameRemoteControlCapability ofClass:SDLRemoteControlCapabilities.class error:nil];
}
+
+- (void)setDisplayCapabilities:(nullable NSArray<SDLDisplayCapability *> *)displayCapabilities {
+ [self.store sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities];
+}
+
+- (nullable NSArray<SDLDisplayCapability *> *)displayCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapability.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapabilityManager.m b/SmartDeviceLink/SDLSystemCapabilityManager.m
index ceeea6c3c..7fb690c52 100644
--- a/SmartDeviceLink/SDLSystemCapabilityManager.m
+++ b/SmartDeviceLink/SDLSystemCapabilityManager.m
@@ -24,6 +24,7 @@
#import "SDLOnSystemCapabilityUpdated.h"
#import "SDLPhoneCapability.h"
#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRemoteControlCapabilities.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCResponseNotification.h"
@@ -157,15 +158,21 @@ typedef NSString * SDLServiceID;
*
* @param notification The `RegisterAppInterfaceResponse` response received from Core
*/
+
- (void)sdl_registerResponse:(SDLRPCResponseNotification *)notification {
SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
if (!response.success.boolValue) { return; }
-
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
self.displayCapabilities = response.displayCapabilities;
+#pragma clang diagnostic pop
self.hmiCapabilities = response.hmiCapabilities;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
self.softButtonCapabilities = response.softButtonCapabilities;
self.buttonCapabilities = response.buttonCapabilities;
self.presetBankCapabilities = response.presetBankCapabilities;
+#pragma clang diagnostic pop
self.hmiZoneCapabilities = response.hmiZoneCapabilities;
self.speechCapabilities = response.speechCapabilities;
self.prerecordedSpeechCapabilities = response.prerecordedSpeech;
@@ -174,6 +181,9 @@ typedef NSString * SDLServiceID;
self.pcmStreamCapability = response.pcmStreamCapabilities;
}
+
+
+
/**
* Called when a `SetDisplayLayoutResponse` response is received from Core. If the template was set successfully, the the new capabilities for the template are saved.
*
@@ -189,6 +199,7 @@ typedef NSString * SDLServiceID;
self.presetBankCapabilities = response.presetBankCapabilities;
}
+
/**
* Called when an `OnSystemCapabilityUpdated` notification is received from Core. The updated system capabilty is saved.
*
@@ -216,6 +227,11 @@ typedef NSString * SDLServiceID;
*/
- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
if (self.isFirstHMILevelFull || ![hmiStatus.hmiLevel isEqualToEnum:SDLHMILevelFull]) {
return;
}
diff --git a/SmartDeviceLink/SDLSystemCapabilityType.h b/SmartDeviceLink/SDLSystemCapabilityType.h
index 2625217dc..1f7bd2178 100755
--- a/SmartDeviceLink/SDLSystemCapabilityType.h
+++ b/SmartDeviceLink/SDLSystemCapabilityType.h
@@ -37,3 +37,10 @@ extern SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming;
The remote control capability
*/
extern SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl;
+
+/**
+ The Display type capability
+
+ @since SDL 6.0
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeDisplays;
diff --git a/SmartDeviceLink/SDLSystemCapabilityType.m b/SmartDeviceLink/SDLSystemCapabilityType.m
index 933a74418..2fb81a7fe 100755
--- a/SmartDeviceLink/SDLSystemCapabilityType.m
+++ b/SmartDeviceLink/SDLSystemCapabilityType.m
@@ -13,3 +13,4 @@ SDLSystemCapabilityType const SDLSystemCapabilityTypeNavigation = @"NAVIGATION";
SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall = @"PHONE_CALL";
SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming = @"VIDEO_STREAMING";
SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl = @"REMOTE_CONTROL";
+SDLSystemCapabilityType const SDLSystemCapabilityTypeDisplays = @"DISPLAYS";
diff --git a/SmartDeviceLink/SDLTemplateConfiguration.h b/SmartDeviceLink/SDLTemplateConfiguration.h
new file mode 100644
index 000000000..6a2b3a66e
--- /dev/null
+++ b/SmartDeviceLink/SDLTemplateConfiguration.h
@@ -0,0 +1,59 @@
+//
+// SDLTemplateConfiguration.h
+// SmartDeviceLink
+
+#import "SDLTemplateColorScheme.h"
+#import "SDLPredefinedLayout.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Used to set an alternate template layout to a window.
+
+ @since SDL 6.0
+ */
+@interface SDLTemplateConfiguration : SDLRPCStruct
+
+
+/**
+ Constructor with the required values.
+
+ @param predefinedLayout A template layout an app uses to display information. The broad details of the layout are defined, but the details depend on the IVI system. Used in SetDisplayLayout.
+ */
+- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout;
+
+/**
+ Init with the required values.
+
+ @param template Predefined or dynamically created window template. Currently only predefined window template layouts are defined.
+ */
+- (instancetype)initWithTemplate:(NSString *)template;
+
+
+/**
+ Convinience constructor with all the parameters.
+
+ @param template Predefined or dynamically created window template. Currently only predefined window template layouts are defined.
+ @param dayColorScheme The color scheme to use when the head unit is in a light / day situation. If nil, the existing color scheme will be used.
+ @param nightColorScheme The color scheme to use when the head unit is in a dark / night situation.
+ */
+- (instancetype)initWithTemplate:(NSString *)template dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme;
+
+/**
+ Predefined or dynamically created window template. Currently only predefined window template layouts are defined.
+ */
+@property (strong, nonatomic) NSString *template;
+
+/**
+ The color scheme to use when the head unit is in a light / day situation.
+ */
+@property (strong, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
+
+/**
+ The color scheme to use when the head unit is in a dark / night situation.
+ */
+@property (strong, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTemplateConfiguration.m b/SmartDeviceLink/SDLTemplateConfiguration.m
new file mode 100644
index 000000000..1f2d2cca1
--- /dev/null
+++ b/SmartDeviceLink/SDLTemplateConfiguration.m
@@ -0,0 +1,60 @@
+//
+// SDLTemplateConfiguration.m
+// SmartDeviceLink
+
+#import "SDLTemplateConfiguration.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+@implementation SDLTemplateConfiguration
+
+
+- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout {
+ return [self initWithTemplate:predefinedLayout];
+}
+
+- (instancetype)initWithTemplate:(NSString *)template {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.template = template;
+ return self;
+}
+
+- (instancetype)initWithTemplate:(NSString *)template dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
+ self = [self initWithTemplate:template];
+ if (!self) {
+ return nil;
+ }
+ self.dayColorScheme = dayColorScheme;
+ self.nightColorScheme = nightColorScheme;
+ return self;
+}
+
+- (void)setTemplate:(NSString *)template {
+ [self.store sdl_setObject:template forName:SDLRPCParameterNameTemplate];
+}
+
+- (NSString *)template {
+ return [self.store sdl_objectForName:SDLRPCParameterNameTemplate ofClass:NSString.class error:nil];
+}
+
+- (void)setDayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme {
+ [self.store sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme];
+}
+
+- (nullable SDLTemplateColorScheme *)dayColorScheme {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
+}
+
+- (void)setNightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
+ [self.store sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme];
+}
+
+- (nullable SDLTemplateColorScheme *)nightColorScheme {
+ return [self.store sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLTextAndGraphicManager.m b/SmartDeviceLink/SDLTextAndGraphicManager.m
index 5692ddaf3..4e0551459 100644
--- a/SmartDeviceLink/SDLTextAndGraphicManager.m
+++ b/SmartDeviceLink/SDLTextAndGraphicManager.m
@@ -19,6 +19,7 @@
#import "SDLMetadataTags.h"
#import "SDLNotificationConstants.h"
#import "SDLOnHMIStatus.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRegisterAppInterfaceResponse.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCResponseNotification.h"
@@ -26,6 +27,7 @@
#import "SDLShow.h"
#import "SDLTextField.h"
+
NS_ASSUME_NONNULL_BEGIN
@interface SDLTextAndGraphicManager()
@@ -693,17 +695,22 @@ NS_ASSUME_NONNULL_BEGIN
SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
if (!response.success.boolValue) { return; }
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
if (response.displayCapabilities == nil) {
+#pragma clang diagnostic pop
SDLLogE(@"RegisterAppInterface succeeded but didn't send a display capabilities. A lot of things will probably break.");
return;
}
-
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
self.displayCapabilities = response.displayCapabilities;
+#pragma clang diagnostic pop
}
- (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification {
SDLSetDisplayLayoutResponse *response = (SDLSetDisplayLayoutResponse *)notification.response;
-
if (!response.success.boolValue) { return; }
if (!response.success.boolValue) { return; }
if (response.displayCapabilities == nil) {
@@ -721,6 +728,10 @@ NS_ASSUME_NONNULL_BEGIN
- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
SDLHMILevel oldLevel = self.currentLevel;
self.currentLevel = hmiStatus.hmiLevel;
diff --git a/SmartDeviceLink/SDLVoiceCommandManager.m b/SmartDeviceLink/SDLVoiceCommandManager.m
index ef5027c95..e9bd3d5e6 100644
--- a/SmartDeviceLink/SDLVoiceCommandManager.m
+++ b/SmartDeviceLink/SDLVoiceCommandManager.m
@@ -17,6 +17,7 @@
#import "SDLNotificationConstants.h"
#import "SDLOnCommand.h"
#import "SDLOnHMIStatus.h"
+#import "SDLPredefinedWindows.h"
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCRequest.h"
#import "SDLVoiceCommand.h"
@@ -242,6 +243,11 @@ UInt32 const VoiceCommandIdMin = 1900000000;
- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
SDLHMILevel oldHMILevel = self.currentHMILevel;
self.currentHMILevel = hmiStatus.hmiLevel;
diff --git a/SmartDeviceLink/SDLWindowCapability.h b/SmartDeviceLink/SDLWindowCapability.h
new file mode 100644
index 000000000..b569f0020
--- /dev/null
+++ b/SmartDeviceLink/SDLWindowCapability.h
@@ -0,0 +1,81 @@
+//
+// SDLWindowCapability.h
+// SmartDeviceLink
+
+#import "SDLRPCStruct.h"
+#import "SDLImageType.h"
+
+@class SDLTextField;
+@class SDLImageField;
+@class SDLButtonCapabilities;
+@class SDLSoftButtonCapabilities;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Reflects content of DisplayCapabilities, ButtonCapabilities and SoftButtonCapabilities
+
+ @since SDL 6.0
+ */
+@interface SDLWindowCapability : SDLRPCStruct
+
+/**
+ The specified ID of the window. Can be set to a predefined window, or omitted for the main window on the main display.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *windowID;
+
+/**
+ A set of all fields that support text data. @see TextField
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTextField *> *textFields;
+
+/**
+ A set of all fields that support images. @see ImageField
+
+ Size: min 0 max 1000
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLImageField *> *imageFields;
+
+/**
+ Provides information about image types supported by the system.
+
+ Size: min 0 max 1000
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLImageType> *imageTypeSupported;
+
+/**
+ A set of all window templates available on the head unit.
+
+ Size: min 0 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<NSString *> *templatesAvailable;
+
+/**
+ The number of on-window custom presets available (if any); otherwise omitted.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *numCustomPresetsAvailable;
+
+/**
+ The number of buttons and the capabilities of each on-window button.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
+
+/**
+ The number of soft buttons available on-window and the capabilities for each button.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLWindowCapability.m b/SmartDeviceLink/SDLWindowCapability.m
new file mode 100644
index 000000000..3e30a2b4c
--- /dev/null
+++ b/SmartDeviceLink/SDLWindowCapability.m
@@ -0,0 +1,73 @@
+//
+// SDLWindowCapability.m
+// SmartDeviceLink
+
+#import "SDLWindowCapability.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLTextField.h"
+#import "SDLImageField.h"
+#import "SDLButtonCapabilities.h"
+#import "SDLSoftButtonCapabilities.h"
+
+@implementation SDLWindowCapability
+
+- (void)setWindowID:(nullable NSNumber<SDLUInt> *)windowID {
+ [self.store sdl_setObject:windowID forName:SDLRPCParameterNameWindowId];
+}
+
+- (nullable NSNumber<SDLUInt> *)windowID {
+ return [self.store sdl_objectForName:SDLRPCParameterNameWindowId ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTextFields:(nullable NSArray<SDLTextField *> *)textFields {
+ [self.store sdl_setObject:textFields forName:SDLRPCParameterNameTextFields];
+}
+
+- (nullable NSArray<SDLTextField *> *)textFields {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameTextFields ofClass:SDLTextField.class error:nil];
+}
+
+- (void)setImageFields:(nullable NSArray<SDLImageField *> *)imageFields {
+ [self.store sdl_setObject:imageFields forName:SDLRPCParameterNameImageFields];
+}
+
+- (nullable NSArray<SDLImageField *> *)imageFields {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameImageFields ofClass:SDLImageField.class error:nil];
+}
+
+- (void)setImageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported {
+ [self.store sdl_setObject:imageTypeSupported forName:SDLRPCParameterNameImageTypeSupported];
+}
+
+- (nullable NSArray<SDLImageType> *)imageTypeSupported {
+ return [self.store sdl_enumsForName:SDLRPCParameterNameImageTypeSupported error:nil];
+}
+
+- (void)setNumCustomPresetsAvailable:(nullable NSNumber<SDLInt> *)numCustomPresetsAvailable {
+ [self.store sdl_setObject:numCustomPresetsAvailable forName:SDLRPCParameterNameNumberCustomPresetsAvailable];
+}
+
+- (nullable NSNumber<SDLInt> *)numCustomPresetsAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameNumberCustomPresetsAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ [self.store sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];
+}
+
+- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil];
+}
+
+
+- (void)setSoftButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
+ [self.store sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities];
+}
+
+- (nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLWindowType.h b/SmartDeviceLink/SDLWindowType.h
new file mode 100644
index 000000000..5dca1b3c3
--- /dev/null
+++ b/SmartDeviceLink/SDLWindowType.h
@@ -0,0 +1,21 @@
+//
+// SDLWindowType.h
+// SmartDeviceLink
+
+#import "SDLEnum.h"
+/**
+ The type of the window to be created. Main window or widget.
+
+ @since SDL 6.0
+ */
+typedef SDLEnum SDLWindowType SDL_SWIFT_ENUM;
+
+/**
+ This window type describes the main window on a display.
+ */
+extern SDLWindowType const SDLWindowTypeMain;
+
+/**
+ A widget is a small window that the app can create to provide information and soft buttons for quick app control.
+ */
+extern SDLWindowType const SDLWindowTypeWidget;
diff --git a/SmartDeviceLink/SDLWindowType.m b/SmartDeviceLink/SDLWindowType.m
new file mode 100644
index 000000000..90678e3ea
--- /dev/null
+++ b/SmartDeviceLink/SDLWindowType.m
@@ -0,0 +1,8 @@
+//
+// SDLWindowType.m
+// SmartDeviceLink
+
+#import "SDLWindowType.h"
+
+SDLWindowType const SDLWindowTypeMain = @"MAIN";
+SDLWindowType const SDLWindowTypeWidget = @"WIDGET";
diff --git a/SmartDeviceLink/SDLWindowTypeCapabilities.h b/SmartDeviceLink/SDLWindowTypeCapabilities.h
new file mode 100644
index 000000000..551fd692c
--- /dev/null
+++ b/SmartDeviceLink/SDLWindowTypeCapabilities.h
@@ -0,0 +1,41 @@
+//
+// SDLWindowTypeCapabilities.h
+// SmartDeviceLink
+
+#import "SDLRPCStruct.h"
+#import "SDLWindowType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Used to inform an app how many window instances per type that can be created.
+
+ @since SDL 6.0
+ */
+@interface SDLWindowTypeCapabilities : SDLRPCStruct
+
+/**
+ Init with required parameters
+
+ @param type Type of windows available, to create.
+ @param maximumNumberOfWindows Number of windows available, to create.
+ */
+- (instancetype)initWithType:(SDLWindowType)type maximumNumberOfWindows:(UInt32)maximumNumberOfWindows;
+
+/**
+ Type of windows available, to create.
+
+ Required
+ */
+@property (strong, nonatomic) SDLWindowType type;
+
+/**
+ Number of windows available, to create.
+
+ Required
+ */
+@property (strong, nonatomic) NSNumber<SDLInt> *maximumNumberOfWindows;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLWindowTypeCapabilities.m b/SmartDeviceLink/SDLWindowTypeCapabilities.m
new file mode 100644
index 000000000..1e2212d97
--- /dev/null
+++ b/SmartDeviceLink/SDLWindowTypeCapabilities.m
@@ -0,0 +1,58 @@
+//
+// SDLWindowTypeCapabilities.m
+// SmartDeviceLink
+//
+// Created by cssoeutest1 on 16.07.19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLWindowTypeCapabilities.h"
+
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLWindowTypeCapabilities
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+
+- (instancetype)initWithType:(SDLWindowType)type maximumNumberOfWindows:(UInt32)maximumNumberOfWindows {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.type = type;
+ self.maximumNumberOfWindows = @(maximumNumberOfWindows);
+ return self;
+}
+
+- (void)setType:(SDLWindowType)type {
+ [self.store sdl_setObject:type forName:SDLRPCParameterNameType];
+}
+
+- (SDLWindowType)type {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameType error:&error];
+}
+
+- (void)setMaximumNumberOfWindows:(NSNumber<SDLInt> *)maximumNumberOfWindows {
+ [self.store sdl_setObject:maximumNumberOfWindows forName:SDLRPCParameterNameMaximumNumberOfWindows];
+}
+
+- (NSNumber<SDLInt> *)maximumNumberOfWindows {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameMaximumNumberOfWindows ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h
index 4d7e2e052..f7f397a1e 100644
--- a/SmartDeviceLink/SmartDeviceLink.h
+++ b/SmartDeviceLink/SmartDeviceLink.h
@@ -27,10 +27,12 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLChangeRegistration.h"
#import "SDLCloseApplication.h"
#import "SDLCreateInteractionChoiceSet.h"
+#import "SDLCreateWindow.h"
#import "SDLDeleteCommand.h"
#import "SDLDeleteFile.h"
#import "SDLDeleteInteractionChoiceSet.h"
#import "SDLDeleteSubMenu.h"
+#import "SDLDeleteWindow.h"
#import "SDLDiagnosticMessage.h"
#import "SDLDialNumber.h"
#import "SDLEncodedSyncPData.h"
@@ -87,10 +89,12 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLChangeRegistrationResponse.h"
#import "SDLCloseApplicationResponse.h"
#import "SDLCreateInteractionChoiceSetResponse.h"
+#import "SDLCreateWindowResponse.h"
#import "SDLDeleteCommandResponse.h"
#import "SDLDeleteFileResponse.h"
#import "SDLDeleteInteractionChoiceSetResponse.h"
#import "SDLDeleteSubMenuResponse.h"
+#import "SDLDeleteWindowResponse.h"
#import "SDLDiagnosticMessageResponse.h"
#import "SDLDialNumberResponse.h"
#import "SDLEncodedSyncPDataResponse.h"
@@ -187,6 +191,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLDeviceInfo.h"
#import "SDLDeviceStatus.h"
#import "SDLDisplayCapabilities.h"
+#import "SDLDisplayCapability.h"
#import "SDLECallInfo.h"
#import "SDLEmergencyEvent.h"
#import "SDLFuelRange.h"
@@ -247,6 +252,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLTTSChunk.h"
#import "SDLTemperature.h"
#import "SDLTemplateColorScheme.h"
+#import "SDLTemplateConfiguration.h"
#import "SDLTextField.h"
#import "SDLTireStatus.h"
#import "SDLTouchCoord.h"
@@ -262,6 +268,8 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLWeatherData.h"
#import "SDLWeatherServiceData.h"
#import "SDLWeatherServiceManifest.h"
+#import "SDLWindowCapability.h"
+#import "SDLWindowTypeCapabilities.h"
// Enums
#import "SDLAmbientLightStatus.h"
@@ -328,6 +336,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLPowerModeStatus.h"
#import "SDLPredefinedLayout.h"
#import "SDLPrerecordedSpeech.h"
+#import "SDLPredefinedWindows.h"
#import "SDLPrimaryAudioSource.h"
#import "SDLRadioBand.h"
#import "SDLRadioState.h"
@@ -367,6 +376,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLVrCapabilities.h"
#import "SDLWarningLightStatus.h"
#import "SDLWayPointType.h"
+#import "SDLWindowType.h"
#import "SDLWiperStatus.h"
// Developer API
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m
index ba91df0d6..db6217e02 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m
@@ -168,7 +168,10 @@ describe(@"menu manager", ^{
testRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
testRegisterAppInterfaceResponse.success = @YES;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
testRegisterAppInterfaceResponse.displayCapabilities = testDisplayCapabilities;
+#pragma clang diagnostic pop
SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testRegisterAppInterfaceResponse];
[[NSNotificationCenter defaultCenter] postNotification:notification];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m
index dd445714e..c8d9a9301 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m
@@ -92,7 +92,10 @@ describe(@"the streaming audio manager", ^{
someDisplayCapabilities.screenParams = someScreenParams;
someRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
someRegisterAppInterfaceResponse.displayCapabilities = someDisplayCapabilities;
+#pragma clang diagnostic pop
SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:someRegisterAppInterfaceResponse];
[[NSNotificationCenter defaultCenter] postNotification:notification];
@@ -112,7 +115,10 @@ describe(@"the streaming audio manager", ^{
someDisplayCapabilities.screenParams = someScreenParams;
someRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
someRegisterAppInterfaceResponse.displayCapabilities = someDisplayCapabilities;
+#pragma clang diagnostic pop
SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:someRegisterAppInterfaceResponse];
[[NSNotificationCenter defaultCenter] postNotification:notification];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
index 31737c214..6dd0b2c2e 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
@@ -149,7 +149,10 @@ describe(@"the streaming video manager", ^{
someDisplayCapabilities.screenParams = someScreenParams;
someRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
someRegisterAppInterfaceResponse.displayCapabilities = someDisplayCapabilities;
+#pragma clang diagnostic pop
SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:someRegisterAppInterfaceResponse];
[[NSNotificationCenter defaultCenter] postNotification:notification];
@@ -169,7 +172,10 @@ describe(@"the streaming video manager", ^{
someDisplayCapabilities.screenParams = someScreenParams;
someRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
someRegisterAppInterfaceResponse.displayCapabilities = someDisplayCapabilities;
+#pragma clang diagnostic pop
SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:someRegisterAppInterfaceResponse];
[[NSNotificationCenter defaultCenter] postNotification:notification];
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
index 6ae21e4cb..277ccd7f2 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
@@ -68,6 +68,8 @@ describe(@"GetFunctionName Tests", ^ {
expect([functionID functionNameForId:53]).to(equal(SDLRPCFunctionNameGetAppServiceData));
expect([functionID functionNameForId:54]).to(equal(SDLRPCFunctionNameGetFile));
expect([functionID functionNameForId:55]).to(equal(SDLRPCFunctionNamePerformAppServiceInteraction));
+ expect([functionID functionNameForId:60]).to(equal(SDLRPCFunctionNameCreateWindow));
+ expect([functionID functionNameForId:61]).to(equal(SDLRPCFunctionNameDeleteWindow));
expect([functionID functionNameForId:32768]).to(equal(SDLRPCFunctionNameOnHMIStatus));
expect([functionID functionNameForId:32769]).to(equal(SDLRPCFunctionNameOnAppInterfaceUnregistered));
expect([functionID functionNameForId:32770]).to(equal(SDLRPCFunctionNameOnButtonEvent));
@@ -176,7 +178,8 @@ describe(@"GetFunctionID Tests", ^ {
expect([functionID functionIdForName:SDLRPCFunctionNameOnEncodedSyncPData]).to(equal(@98304));
expect([functionID functionIdForName:SDLRPCFunctionNameOnSyncPData]).to(equal(@98305));
-
+ expect([functionID functionIdForName:SDLRPCFunctionNameCreateWindow]).to(equal(@60));
+ expect([functionID functionIdForName:SDLRPCFunctionNameDeleteWindow]).to(equal(@61));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedWindowsSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedWindowsSpec.m
new file mode 100644
index 000000000..28efd0724
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedWindowsSpec.m
@@ -0,0 +1,18 @@
+//
+// SDLPredefinedWindowsSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+#import "SDLPredefinedWindows.h"
+
+QuickSpecBegin(SDLPredefinedWindowsSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect(@(SDLPredefinedWindowsDefaultWindow)).to(equal(0));
+ expect(@(SDLPredefinedWindowsPrimaryWidget)).to(equal(1));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWindowTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWindowTypeSpec.m
new file mode 100644
index 000000000..58e591013
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWindowTypeSpec.m
@@ -0,0 +1,19 @@
+//
+// SDLWindowTypeSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+#import "SDLWindowType.h"
+
+QuickSpecBegin(SDLWindowTypeSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect(SDLWindowTypeMain).to(equal(@"MAIN"));
+ expect(SDLWindowTypeWidget).to(equal(@"WIDGET"));
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateWindowSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateWindowSpec.m
new file mode 100644
index 000000000..c1698c380
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateWindowSpec.m
@@ -0,0 +1,65 @@
+//
+// SDLCreateWindowSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLCreateWindow.h"
+#import "SDLWindowType.h"
+#import "SDLPredefinedWindows.h"
+
+QuickSpecBegin(SDLCreateWindowSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ __block SDLWindowType testWindowType = nil;
+ __block NSString *testAssociatedServiceType = nil;
+ __block NSString *testWindowName = nil;
+ __block SDLPredefinedWindows testWindowID;
+ __block NSUInteger testDuplicateUpdatesFromWindowID = 8;
+
+
+ beforeEach(^{
+ testWindowID = SDLPredefinedWindowsDefaultWindow;
+ testWindowType = SDLWindowTypeMain;
+ testAssociatedServiceType = @"SDLWINDOW";
+ testWindowName = @"MAINWINDOW";
+ });
+
+ it(@"Should set and get correctly", ^ {
+ SDLCreateWindow *testRPC = [[SDLCreateWindow alloc] init];
+ testRPC.windowID = @(testWindowID);
+ testRPC.windowName = testWindowName;
+ testRPC.type = testWindowType;
+ testRPC.associatedServiceType = testAssociatedServiceType;
+ testRPC.duplicateUpdatesFromWindowID = @(testDuplicateUpdatesFromWindowID);
+
+ expect(testRPC.windowID).to(equal(testWindowID));
+ expect(testRPC.windowName).to(equal(testWindowName));
+ expect(testRPC.type).to(equal(testWindowType));
+ expect(testRPC.associatedServiceType).to(equal(testAssociatedServiceType));
+ expect(testRPC.duplicateUpdatesFromWindowID).to(equal(testDuplicateUpdatesFromWindowID));
+ });
+
+ it(@"Should create correctrly", ^ {
+ SDLCreateWindow *testRPC = [[SDLCreateWindow alloc] initWithId: (int)testWindowID windowName:testWindowName windowType:testWindowType];
+
+ expect(testRPC.windowID).to(equal(testWindowID));
+ expect(testRPC.windowName).to(equal(testWindowName));
+ expect(testRPC.type).to(equal(testWindowType));
+ expect(testRPC.associatedServiceType).to(beNil());
+ expect(testRPC.duplicateUpdatesFromWindowID).to(beNil());
+ });
+
+ it(@"Should create correctrly", ^ {
+ SDLCreateWindow *testRPC = [[SDLCreateWindow alloc] initWithId:(int)testWindowID windowName:testWindowName windowType:testWindowType associatedServiceType:testAssociatedServiceType duplicateUpdatesFromWindowID:testDuplicateUpdatesFromWindowID];
+
+ expect(testRPC.windowID).to(equal(testWindowID));
+ expect(testRPC.windowName).to(equal(testWindowName));
+ expect(testRPC.type).to(equal(testWindowType));
+ expect(testRPC.associatedServiceType).to(equal(testAssociatedServiceType));
+ expect(testRPC.duplicateUpdatesFromWindowID).to(equal(testDuplicateUpdatesFromWindowID));
+ });
+
+});
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteWindowSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteWindowSpec.m
new file mode 100644
index 000000000..d1f6c2877
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteWindowSpec.m
@@ -0,0 +1,32 @@
+//
+// SDLDeleteWindowSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDeleteWindow.h"
+
+QuickSpecBegin(SDLDeleteWindowSpec)
+
+
+describe(@"Getter/Setter Tests", ^ {
+ __block NSUInteger testWindowID = 4;
+
+ it(@"Should set and get correctly", ^ {
+ SDLDeleteWindow *testRPC = [[SDLDeleteWindow alloc] init];
+ testRPC.windowID = @(testWindowID);
+
+ expect(testRPC.windowID).to(equal(testWindowID));
+ });
+
+ it(@"Should create correctrly", ^ {
+ SDLDeleteWindow *testRPC = [[SDLDeleteWindow alloc] initWithId:testWindowID];
+
+ expect(testRPC.windowID).to(equal(testWindowID));
+ });
+
+
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLCreateWindowResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLCreateWindowResponseSpec.m
new file mode 100644
index 000000000..c51268106
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLCreateWindowResponseSpec.m
@@ -0,0 +1,12 @@
+//
+// SDLCreateWindowResponseSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLCreateWindowResponse.h"
+
+QuickSpecBegin(SDLCreateWindowResponseSpec)
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteWindowResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteWindowResponseSpec.m
new file mode 100644
index 000000000..61ee2e374
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteWindowResponseSpec.m
@@ -0,0 +1,12 @@
+//
+// SDLDeleteWindowResponseSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDeleteWindowResponse.h"
+
+QuickSpecBegin(SDLDeleteWindowResponseSpec)
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m
index 7d03501a5..16eb19315 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m
@@ -37,10 +37,13 @@ describe(@"Getter/Setter Tests", ^ {
#pragma clang diagnostic pop
testResponse.language = SDLLanguageEsMx;
testResponse.hmiDisplayLanguage = SDLLanguageRuRu;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
testResponse.displayCapabilities = info;
testResponse.buttonCapabilities = @[button];
testResponse.softButtonCapabilities = @[softButton];
testResponse.presetBankCapabilities = presetBank;
+#pragma clang diagnostic pop
testResponse.hmiZoneCapabilities = @[SDLHMIZoneCapabilitiesBack, SDLHMIZoneCapabilitiesFront];
testResponse.speechCapabilities = @[SDLSpeechCapabilitiesSAPIPhonemes, SDLSpeechCapabilitiesSilence];
testResponse.vrCapabilities = @[SDLVRCapabilitiesText];
@@ -61,10 +64,13 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.sdlMsgVersion).to(equal(sdlVersion));
expect(testResponse.language).to(equal(SDLLanguageEsMx));
expect(testResponse.hmiDisplayLanguage).to(equal(SDLLanguageRuRu));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
expect(testResponse.displayCapabilities).to(equal(info));
expect(testResponse.buttonCapabilities).to(equal(@[button]));
expect(testResponse.softButtonCapabilities).to(equal(@[softButton]));
expect(testResponse.presetBankCapabilities).to(equal(presetBank));
+#pragma clang diagnostic pop
expect(testResponse.hmiZoneCapabilities).to(equal(@[SDLHMIZoneCapabilitiesBack, SDLHMIZoneCapabilitiesFront]));
expect(testResponse.speechCapabilities).to(equal(@[SDLSpeechCapabilitiesSAPIPhonemes, SDLSpeechCapabilitiesSilence]));
expect(testResponse.vrCapabilities).to(equal(@[SDLVRCapabilitiesText]));
@@ -124,10 +130,15 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.sdlMsgVersion).to(equal([[SDLMsgVersion alloc] initWithMajorVersion:6 minorVersion:0 patchVersion:0]));
expect(testResponse.language).to(equal(SDLLanguageEsMx));
expect(testResponse.hmiDisplayLanguage).to(equal(SDLLanguageRuRu));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
expect(testResponse.displayCapabilities).to(equal(info));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
expect(testResponse.buttonCapabilities).to(equal(@[button]));
expect(testResponse.softButtonCapabilities).to(equal(@[softButton]));
expect(testResponse.presetBankCapabilities).to(equal(presetBank));
+#pragma clang diagnostic pop
expect(testResponse.hmiZoneCapabilities).to(equal(@[SDLHMIZoneCapabilitiesBack, SDLHMIZoneCapabilitiesFront]));
expect(testResponse.speechCapabilities).to(equal(@[SDLSpeechCapabilitiesSAPIPhonemes, SDLSpeechCapabilitiesSilence]));
expect(testResponse.vrCapabilities).to(equal(@[SDLVRCapabilitiesText]));
@@ -154,10 +165,13 @@ describe(@"Getter/Setter Tests", ^ {
#pragma clang diagnostic pop
expect(testResponse.language).to(equal(SDLLanguageEsMx));
expect(testResponse.hmiDisplayLanguage).to(equal(SDLLanguageRuRu));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
expect(testResponse.displayCapabilities).to(equal(info));
expect(testResponse.buttonCapabilities).to(equal(@[button]));
expect(testResponse.softButtonCapabilities).to(equal(@[softButton]));
expect(testResponse.presetBankCapabilities).to(equal(presetBank));
+#pragma clang diagnostic pop
expect(testResponse.hmiZoneCapabilities).to(equal(@[SDLHMIZoneCapabilitiesBack, SDLHMIZoneCapabilitiesFront]));
expect(testResponse.speechCapabilities).to(equal(@[SDLSpeechCapabilitiesSAPIPhonemes, SDLSpeechCapabilitiesSilence]));
expect(testResponse.vrCapabilities).to(equal(@[SDLVRCapabilitiesText]));
@@ -182,10 +196,13 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.sdlMsgVersion).to(beNil());
expect(testResponse.language).to(beNil());
expect(testResponse.hmiDisplayLanguage).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
expect(testResponse.displayCapabilities).to(beNil());
expect(testResponse.buttonCapabilities).to(beNil());
expect(testResponse.softButtonCapabilities).to(beNil());
expect(testResponse.presetBankCapabilities).to(beNil());
+#pragma clang diagnostic pop
expect(testResponse.hmiZoneCapabilities).to(beNil());
expect(testResponse.speechCapabilities).to(beNil());
expect(testResponse.vrCapabilities).to(beNil());
@@ -236,10 +253,13 @@ describe(@"Getter/Setter Tests", ^ {
expectAction(^{ [testResponse sdlMsgVersion]; }).to(raiseException());
expectAction(^{ [testResponse language]; }).to(raiseException());
expectAction(^{ [testResponse hmiDisplayLanguage]; }).to(raiseException());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
expectAction(^{ [testResponse displayCapabilities]; }).to(raiseException());
expectAction(^{ [testResponse buttonCapabilities]; }).to(raiseException());
expectAction(^{ [testResponse softButtonCapabilities]; }).to(raiseException());
expectAction(^{ [testResponse presetBankCapabilities]; }).to(raiseException());
+#pragma clang diagnostic pop
expectAction(^{ [testResponse hmiZoneCapabilities]; }).to(raiseException());
expectAction(^{ [testResponse speechCapabilities]; }).to(raiseException());
expectAction(^{ [testResponse vrCapabilities]; }).to(raiseException());
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m
new file mode 100644
index 000000000..4cd68a799
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m
@@ -0,0 +1,90 @@
+//
+// SDLDisplayCapabilitySpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowTypeCapabilities.h"
+#import "SDLWindowCapability.h"
+#import "SDLDisplayCapability.h"
+#import "SDLTextField.h"
+#import "SDLImageField.h"
+#import "SDLImageType.h"
+#import "SDLButtonCapabilities.h"
+#import "SDLSoftButtonCapabilities.h"
+
+QuickSpecBegin(SDLDisplayCapabilitySpec)
+
+describe(@"Getter/Setter Tests", ^ {
+
+
+ __block SDLWindowCapability* testWindowCapability = nil;
+ __block SDLWindowTypeCapabilities* testWindowTypeCapabilities = nil;
+ __block SDLTextField *testTextField = nil;
+ __block SDLImageField *testImageField = nil;
+ __block SDLButtonCapabilities *testButtonCapabilities = nil;
+ __block SDLSoftButtonCapabilities *testSoftButtonscapabilities = nil;
+ __block SDLImageType testImageType = nil;
+ __block NSString *testDisplayName = nil;
+ __block NSString *testTextName = nil;
+ __block NSString *testImageName = nil;
+ __block int testMaximunNumberOfWindows = 4;
+
+ beforeEach(^{
+ testImageType = SDLImageTypeDynamic;
+ testDisplayName = @"Display Name";
+ testTextName = @"test Text field";
+ testImageName = @"test Image field";
+
+ testWindowTypeCapabilities = [[SDLWindowTypeCapabilities alloc] initWithType:testImageType maximumNumberOfWindows:testMaximunNumberOfWindows];
+
+ testTextField = [[SDLTextField alloc] init];
+ testTextField.name = testTextName;
+
+ testImageField = [[SDLImageField alloc] init];
+ testImageField.name = testImageName;
+
+ testButtonCapabilities = [[SDLButtonCapabilities alloc] init];
+ testButtonCapabilities.name = SDLButtonNameOk;
+ testButtonCapabilities.shortPressAvailable = @YES;
+ testButtonCapabilities.longPressAvailable = @YES;
+ testButtonCapabilities.upDownAvailable = @YES;
+
+ testSoftButtonscapabilities = [[SDLSoftButtonCapabilities alloc] init];
+ testSoftButtonscapabilities.imageSupported = @YES;
+
+ testWindowCapability = [[SDLWindowCapability alloc] init];
+ testWindowCapability.windowID = @444;
+ testWindowCapability.numCustomPresetsAvailable = @10;
+ testWindowCapability.textFields = @[testTextField];
+ testWindowCapability.imageFields = @[testImageField];
+ testWindowCapability.imageTypeSupported = @[testImageType];
+ testWindowCapability.buttonCapabilities = @[testButtonCapabilities];
+ testWindowCapability.softButtonCapabilities = @[testSoftButtonscapabilities];
+
+ });
+
+
+ it(@"Should set and get correctly", ^ {
+ SDLDisplayCapability* testStruct = [[SDLDisplayCapability alloc] init];
+ testStruct.displayName = testDisplayName;
+ testStruct.windowCapabilities = @[testWindowCapability];
+ testStruct.windowTypeSupported = @[testWindowTypeCapabilities];
+
+ expect(testStruct.displayName).to(equal(testDisplayName));
+ expect(testStruct.windowTypeSupported.firstObject.type).to(equal(testImageType));
+ expect(testStruct.windowTypeSupported.firstObject.maximumNumberOfWindows).to(equal(testMaximunNumberOfWindows));
+ expect(testStruct.windowCapabilities.firstObject.windowID).to(equal(444));
+ expect(testStruct.windowCapabilities.firstObject.textFields.firstObject.name).to(equal(testTextName));
+ expect(testStruct.windowCapabilities.firstObject.imageFields.firstObject.name).to(equal(testImageName));
+ expect(testStruct.windowCapabilities.firstObject.numCustomPresetsAvailable).to(equal(@10));
+ expect(testStruct.windowCapabilities.firstObject.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
+ expect(testStruct.windowCapabilities.firstObject.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES));
+ expect(testStruct.windowCapabilities.firstObject.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES));
+ expect(testStruct.windowCapabilities.firstObject.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateConfigurationSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateConfigurationSpec.m
new file mode 100644
index 000000000..68b782b13
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateConfigurationSpec.m
@@ -0,0 +1,56 @@
+//
+// SDLTemplateConfigurationSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLTemplateConfiguration.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLTemplateColorScheme.h"
+
+
+QuickSpecBegin(SDLTemplateConfigurationSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+
+ __block SDLTemplateColorScheme *dayScheme = nil;
+ __block SDLTemplateColorScheme *nightScheme = nil;
+ __block NSString *testTemplateName = nil;
+
+ beforeEach(^{
+ dayScheme = [[SDLTemplateColorScheme alloc] initWithPrimaryColor:[UIColor blueColor] secondaryColor:[UIColor blackColor] backgroundColor:[UIColor whiteColor]];
+ nightScheme = [[SDLTemplateColorScheme alloc] initWithPrimaryColor:[UIColor blueColor] secondaryColor:[UIColor purpleColor] backgroundColor:[UIColor blackColor]];
+ testTemplateName = @"Template Name";
+ });
+
+ it(@"Should get correctly when initialized DESIGNATED", ^ {
+ SDLTemplateConfiguration* testStruct = [[SDLTemplateConfiguration alloc] initWithTemplate:testTemplateName];
+ expect(testStruct.template).to(equal(testTemplateName));
+ });
+ it(@"Should get correctly when initialized", ^ {
+ SDLTemplateConfiguration* testStruct = [[SDLTemplateConfiguration alloc] initWithTemplate:testTemplateName dayColorScheme:dayScheme nightColorScheme:nightScheme];
+ expect(testStruct.template).to(equal(testTemplateName));
+ expect(testStruct.dayColorScheme).to(equal(dayScheme));
+ expect(testStruct.nightColorScheme).to(equal(nightScheme));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLTemplateConfiguration* testStruct = [[SDLTemplateConfiguration alloc] initWithTemplate:testTemplateName];
+
+ expect(testStruct.dayColorScheme).to(beNil());
+ expect(testStruct.nightColorScheme).to(beNil());
+ });
+
+ it(@"Should set and get correctly", ^ {
+ SDLTemplateConfiguration* testStruct = [[SDLTemplateConfiguration alloc] initWithTemplate:testTemplateName];
+
+ testStruct.dayColorScheme = dayScheme;
+ testStruct.nightColorScheme = nightScheme;
+
+ expect(testStruct.dayColorScheme).to(equal(dayScheme));
+ expect(testStruct.nightColorScheme).to(equal(nightScheme));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m
index b2cbcda17..4a37c508f 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m
@@ -8,8 +8,9 @@
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
-#import "SDLTouchCoord.h"
#import "SDLRPCParameterNames.h"
+#import "SDLTouchCoord.h"
+
QuickSpecBegin(SDLTouchCoordSpec)
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m
new file mode 100644
index 000000000..0589337ce
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m
@@ -0,0 +1,72 @@
+//
+// SDLWindowCapabilitySpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLWindowCapability.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLTextField.h"
+#import "SDLTextFieldName.h"
+#import "SDLImageField.h"
+#import "SDLImageType.h"
+#import "SDLButtonCapabilities.h"
+#import "SDLSoftButtonCapabilities.h"
+
+QuickSpecBegin(SDLWindowCapabilitySpec)
+
+describe(@"Getter/Setter Tests", ^ {
+
+ __block SDLTextField* testTextField = nil;
+ __block SDLImageField *testImageField = nil;
+ __block SDLButtonCapabilities *testButtonCapabilities = nil;
+ __block SDLSoftButtonCapabilities *testSoftButtonscapabilities = nil;
+ __block SDLImageType testImageType = nil;
+ __block NSString *testTextName = nil;
+ __block NSString *testImageName = nil;
+
+ beforeEach(^{
+ testImageType = SDLImageTypeDynamic;
+ testTextName = @"test Text field";
+ testImageName = @"test Image field";
+
+ testTextField = [[SDLTextField alloc] init];
+ testTextField.name = SDLTextFieldNameTertiaryText;
+ testImageField = [[SDLImageField alloc] init];
+ testImageField.name = testImageName;
+
+ testButtonCapabilities = [[SDLButtonCapabilities alloc] init];
+ testButtonCapabilities.name = SDLButtonNameOk;
+ testButtonCapabilities.shortPressAvailable = @YES;
+ testButtonCapabilities.longPressAvailable = @YES;
+ testButtonCapabilities.upDownAvailable = @YES;
+
+ testSoftButtonscapabilities = [[SDLSoftButtonCapabilities alloc] init];
+ testSoftButtonscapabilities.imageSupported = @YES;
+ });
+
+ it(@"Should set and get correctly", ^ {
+ SDLWindowCapability* testStruct = testStruct = [[SDLWindowCapability alloc] init];
+ testStruct.windowID = @444;
+ testStruct.numCustomPresetsAvailable = @10;
+ testStruct.textFields = @[testTextField];
+ testStruct.imageFields = @[testImageField];
+ testStruct.imageTypeSupported = @[testImageType];
+ testStruct.buttonCapabilities = @[testButtonCapabilities];
+ testStruct.softButtonCapabilities = @[testSoftButtonscapabilities];
+
+ expect(testStruct.windowID).to(equal(@444));
+ expect(testStruct.textFields.firstObject.name).to(equal(SDLTextFieldNameTertiaryText));
+ expect(testStruct.imageFields.firstObject.name).to(equal(testImageName));
+ expect(testStruct.numCustomPresetsAvailable).to(equal(@10));
+ expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
+ expect(testStruct.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES));
+ expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES));
+ expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
+ expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES));
+ });
+
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowTypeCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowTypeCapabilitiesSpec.m
new file mode 100644
index 000000000..f05db2cbe
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowTypeCapabilitiesSpec.m
@@ -0,0 +1,24 @@
+//
+// SDLWindowTypeCapabilitiesSpec.m
+// SmartDeviceLinkTests
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowTypeCapabilities.h"
+#import "SDLWindowType.h"
+
+QuickSpecBegin(SDLWindowTypeCapabilitiesSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+
+ it(@"Should get correctly when initialized DESIGNATED", ^ {
+ SDLWindowTypeCapabilities* testStruct = [[SDLWindowTypeCapabilities alloc] initWithType:SDLWindowTypeMain maximumNumberOfWindows:4];
+ expect(testStruct.type).to(equal(SDLWindowTypeMain));
+ expect(testStruct.maximumNumberOfWindows).to(equal(@4));
+ });
+
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
index 2354e8f29..d9f324b80 100644
--- a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
+++ b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
@@ -122,11 +122,14 @@ describe(@"System capability manager", ^{
testPCMStreamCapability = audioPassThruCapability;
testRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
testRegisterAppInterfaceResponse.displayCapabilities = testDisplayCapabilities;
testRegisterAppInterfaceResponse.hmiCapabilities = testHMICapabilities;
testRegisterAppInterfaceResponse.softButtonCapabilities = testSoftButtonCapabilities;
testRegisterAppInterfaceResponse.buttonCapabilities = testButtonCapabilities;
testRegisterAppInterfaceResponse.presetBankCapabilities = testPresetBankCapabilities;
+#pragma clang diagnostic pop
testRegisterAppInterfaceResponse.hmiZoneCapabilities = testHMIZoneCapabilities;
testRegisterAppInterfaceResponse.speechCapabilities = testSpeechCapabilities;
testRegisterAppInterfaceResponse.prerecordedSpeech = testPrerecordedSpeechCapabilities;