summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSatbirTanda <satbirtanda@gmail.com>2019-09-03 12:54:41 -0700
committerGitHub <noreply@github.com>2019-09-03 12:54:41 -0700
commit44b2929ea34d404d3a4869d127223e568f30701e (patch)
tree3a087a25e8841be8cb1454fb40aba6e9ca7c986e
parentb6db8a79faed8d686e4be5fc65aa04e91a83d6ad (diff)
parentd433cf5ae5cb04d0ede46e2cfbd1dea105698891 (diff)
downloadsdl_ios-44b2929ea34d404d3a4869d127223e568f30701e.tar.gz
Merge branch 'develop' into feature/#1272/multiple_modules
-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/SDLGetVehicleData.h20
-rw-r--r--SmartDeviceLink/SDLGetVehicleData.m8
-rw-r--r--SmartDeviceLink/SDLGetVehicleDataResponse.h20
-rw-r--r--SmartDeviceLink/SDLGetVehicleDataResponse.m8
-rw-r--r--SmartDeviceLink/SDLLifecycleConfiguration.h14
-rw-r--r--SmartDeviceLink/SDLLifecycleConfiguration.m2
-rw-r--r--SmartDeviceLink/SDLLifecycleManager.m22
-rw-r--r--SmartDeviceLink/SDLLockScreenConfiguration.h38
-rw-r--r--SmartDeviceLink/SDLLockScreenConfiguration.m50
-rw-r--r--SmartDeviceLink/SDLLockScreenManager.m14
-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/SDLOnVehicleData.h20
-rw-r--r--SmartDeviceLink/SDLOnVehicleData.m8
-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.h11
-rw-r--r--SmartDeviceLink/SDLRPCParameterNames.m11
-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/SDLSoftButtonObject.h15
-rw-r--r--SmartDeviceLink/SDLSoftButtonObject.m10
-rw-r--r--SmartDeviceLink/SDLStreamingAudioLifecycleManager.m9
-rw-r--r--SmartDeviceLink/SDLStreamingVideoLifecycleManager.m11
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleData.h22
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleData.m8
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleDataResponse.h20
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleDataResponse.m8
-rwxr-xr-xSmartDeviceLink/SDLSystemCapability.h10
-rwxr-xr-xSmartDeviceLink/SDLSystemCapability.m9
-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/SDLUnsubscribeVehicleData.h19
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleData.m8
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h20
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m8
-rw-r--r--SmartDeviceLink/SDLVehicleDataResult.h23
-rw-r--r--SmartDeviceLink/SDLVehicleDataResult.m33
-rw-r--r--SmartDeviceLink/SDLVehicleDataType.h7
-rw-r--r--SmartDeviceLink/SDLVehicleDataType.m1
-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/SDLFakeViewControllerPresenter.m9
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m22
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m4
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m83
-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/NotificationSpecs/SDLOnVehicleDataSpec.m11
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateWindowSpec.m65
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteWindowSpec.m32
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m12
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m11
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m11
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLCreateWindowResponseSpec.m12
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteWindowResponseSpec.m12
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m8
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m20
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m11
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m11
-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/SDLVehicleDataResultSpec.m26
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m72
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowTypeCapabilitiesSpec.m24
-rw-r--r--SmartDeviceLinkTests/SDLSoftButtonObjectSpec.m31
-rw-r--r--SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m3
108 files changed, 2368 insertions, 48 deletions
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec
index d1084f7e8..bedd57cc4 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',
@@ -265,6 +270,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',
@@ -376,6 +382,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',
@@ -432,6 +439,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 82b81e371..3c9c81413 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -1477,6 +1477,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 */; };
@@ -3167,6 +3196,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>"; };
@@ -3392,6 +3450,7 @@
162E82081A9BDE8A00906325 /* SDLPowerModeQualificationStatusSpec.m */,
162E82091A9BDE8A00906325 /* SDLPowerModeStatusSpec.m */,
162E820A1A9BDE8A00906325 /* SDLPredefinedLayoutSpec.m */,
+ 9FA0CFF922DF064D009CF344 /* SDLPredefinedWindowsSpec.m */,
162E820B1A9BDE8A00906325 /* SDLPrerecordedSpeechSpec.m */,
162E820C1A9BDE8A00906325 /* SDLPrimaryAudioSource.m */,
162E820D1A9BDE8A00906325 /* SDLPRNDLSpec.m */,
@@ -3431,6 +3490,7 @@
1EE8C43B1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m */,
1EE8C43D1F347F0500FDC2CF /* SDLVentilationModeSpec.m */,
5D64FE6C20DA9CE600792F9F /* SDLVideoStreamingStateSpec.m */,
+ 9FA0CFF622DF0632009CF344 /* SDLWindowTypeSpec.m */,
);
path = EnumSpecs;
sourceTree = "<group>";
@@ -3534,6 +3594,8 @@
162E82641A9BDE8A00906325 /* SDLUpdateTurnListSpec.m */,
1EE8C45E1F3884FF00FDC2CF /* SDLSetInteriorVehicleDataSpec.m */,
8877F5EA1F34A3BE00DC128A /* SDLSendHapticDataSpec.m */,
+ 9FA0D00822DF0B47009CF344 /* SDLCreateWindowSpec.m */,
+ 9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */,
8B05F88822DD011300666CD8 /* SDLUnpublishAppServiceSpec.m */,
000DD56F22EF038C005AB7A7 /* SDLGetInteriorVehicleDataConsentSpec.m */,
000DD57322EF0957005AB7A7 /* SDLReleaseInteriorVehicleDataModuleSpec.m */,
@@ -3551,9 +3613,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 */,
@@ -3634,6 +3698,7 @@
162E82961A9BDE8A00906325 /* SDLDeviceInfoSpec.m */,
162E82971A9BDE8A00906325 /* SDLDeviceStatusSpec.m */,
162E82981A9BDE8A00906325 /* SDLDIDResult.m */,
+ 9FA0D00522DF06D3009CF344 /* SDLDisplayCapabilitySpec.m */,
162E82991A9BDE8A00906325 /* SDLDisplayCapabilitiesSpec.m */,
162E829A1A9BDE8A00906325 /* SDLECallInfoSpec.m */,
162E829B1A9BDE8A00906325 /* SDLEmergencyEventSpec.m */,
@@ -3692,6 +3757,7 @@
162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */,
5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */,
1EE8C4511F38657D00FDC2CF /* SDLTemperatureSpec.m */,
+ 9FA0CFFC22DF0687009CF344 /* SDLTemplateConfigurationSpec.m */,
162E82AD1A9BDE8A00906325 /* SDLTextFieldSpec.m */,
162E82AE1A9BDE8A00906325 /* SDLTireStatusSpec.m */,
162E82AF1A9BDE8A00906325 /* SDLTouchCoordSpec.m */,
@@ -3711,6 +3777,8 @@
880D267F220E038800B3F496 /* SDLWeatherServiceManifestSpec.m */,
000DD56B22EEF8E4005AB7A7 /* SDLSeatLocationCapabilitySpec.m */,
000DD56D22EF01FC005AB7A7 /* SDLSeatLocationSpec.m */,
+ 9FA0CFFF22DF06A0009CF344 /* SDLWindowCapabilitySpec.m */,
+ 9FA0D00222DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m */,
);
path = StructSpecs;
sourceTree = "<group>";
@@ -4231,12 +4299,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 */,
@@ -4358,6 +4430,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 */,
@@ -4368,6 +4442,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 */,
@@ -4517,6 +4593,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 */,
@@ -4637,6 +4715,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 */,
@@ -4677,6 +4757,10 @@
0055412D22D759BC003194D3 /* SDLSeatLocation.m */,
0055413022D75A7A003194D3 /* SDLSeatLocationCapability.h */,
0055413122D75A7B003194D3 /* SDLSeatLocationCapability.m */,
+ 9F425AD022DD980200BE3245 /* SDLWindowCapability.h */,
+ 9F425AD122DD980200BE3245 /* SDLWindowCapability.m */,
+ 9F425AD422DD981E00BE3245 /* SDLWindowTypeCapabilities.h */,
+ 9F425AD522DD981E00BE3245 /* SDLWindowTypeCapabilities.m */,
);
name = Structs;
sourceTree = "<group>";
@@ -4808,6 +4892,7 @@
5D61FB4B1A84238B00846EE7 /* SDLPredefinedLayout.m */,
5D61FB4C1A84238B00846EE7 /* SDLPrerecordedSpeech.h */,
5D61FB4D1A84238B00846EE7 /* SDLPrerecordedSpeech.m */,
+ 9FE2471722D77AED00F8D2FC /* SDLPredefinedWindows.h */,
5D61FB501A84238B00846EE7 /* SDLPrimaryAudioSource.h */,
5D61FB511A84238B00846EE7 /* SDLPrimaryAudioSource.m */,
5D61FB541A84238B00846EE7 /* SDLPRNDL.h */,
@@ -4889,6 +4974,8 @@
8B7B319D1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.m */,
5D0C29FA20D93D8C008B56CD /* SDLVideoStreamingState.h */,
5D0C29FB20D93D8C008B56CD /* SDLVideoStreamingState.m */,
+ 9FE2471322D77AD500F8D2FC /* SDLWindowType.h */,
+ 9FE2471422D77AD500F8D2FC /* SDLWindowType.m */,
);
name = Enums;
sourceTree = "<group>";
@@ -6308,6 +6395,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 */,
@@ -7310,14 +7407,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 */,
@@ -7333,6 +7433,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 */,
@@ -7448,11 +7549,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 */,
@@ -7507,6 +7610,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 */,
@@ -7518,6 +7622,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 */,
@@ -7534,6 +7639,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 */,
@@ -7629,6 +7735,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 */,
@@ -7640,6 +7747,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 */,
000DD56C22EEF8E4005AB7A7 /* SDLSeatLocationCapabilitySpec.m in Sources */,
5D92935020AF526200FCC775 /* SDLRGBColorSpec.m in Sources */,
@@ -7654,6 +7762,7 @@
DABB62171E4A900C0034C567 /* SDLH264VideoEncoderSpec.m in Sources */,
000DD57022EF038C005AB7A7 /* SDLGetInteriorVehicleDataConsentSpec.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 */,
@@ -7727,6 +7836,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 */,
@@ -7756,8 +7866,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 */,
@@ -7800,6 +7912,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 */,
@@ -7910,6 +8023,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 */,
@@ -8005,6 +8119,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 */,
@@ -8029,6 +8144,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 */,
@@ -8064,6 +8180,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 8ac6716ac..bc327557e 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',
@@ -266,6 +271,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',
@@ -377,6 +383,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',
@@ -433,6 +440,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 956aefb17..c03280dcd 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,
@62: SDLRPCFunctionNameGetInteriorVehicleDataConsent,
@63: SDLRPCFunctionNameReleaseInteriorVehicleDataModule,
@32768: SDLRPCFunctionNameOnHMIStatus,
diff --git a/SmartDeviceLink/SDLGetVehicleData.h b/SmartDeviceLink/SDLGetVehicleData.h
index b9e0fca30..d7f255241 100644
--- a/SmartDeviceLink/SDLGetVehicleData.h
+++ b/SmartDeviceLink/SDLGetVehicleData.h
@@ -272,6 +272,26 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *cloudAppVehicleID;
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState A boolean value. If true, requests the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState;
+
+/**
+ Gets the OEM custom vehicle data value for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return The state of an OEM custom vehicle data item for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleData.m b/SmartDeviceLink/SDLGetVehicleData.m
index 7ed2bb189..100f0f979 100644
--- a/SmartDeviceLink/SDLGetVehicleData.m
+++ b/SmartDeviceLink/SDLGetVehicleData.m
@@ -309,6 +309,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
}
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
+ [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
+}
+
+- (NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleDataResponse.h b/SmartDeviceLink/SDLGetVehicleDataResponse.h
index 78801ae55..e0fac466b 100644
--- a/SmartDeviceLink/SDLGetVehicleDataResponse.h
+++ b/SmartDeviceLink/SDLGetVehicleDataResponse.h
@@ -186,6 +186,26 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState An object containing the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState;
+
+/**
+ Gets the OEM custom vehicle data item for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return An OEM custom vehicle data object for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleDataResponse.m b/SmartDeviceLink/SDLGetVehicleDataResponse.m
index 2b47a92b3..c75290d6a 100644
--- a/SmartDeviceLink/SDLGetVehicleDataResponse.m
+++ b/SmartDeviceLink/SDLGetVehicleDataResponse.m
@@ -273,6 +273,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil];
}
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.h b/SmartDeviceLink/SDLLifecycleConfiguration.h
index 878895416..36ad3565e 100644
--- a/SmartDeviceLink/SDLLifecycleConfiguration.h
+++ b/SmartDeviceLink/SDLLifecycleConfiguration.h
@@ -19,6 +19,11 @@
NS_ASSUME_NONNULL_BEGIN
+typedef NS_OPTIONS(NSUInteger, SDLSecondaryTransports) {
+ SDLSecondaryTransportsNone = 0,
+ SDLSecondaryTransportsTCP = 1 << 0
+};
+
/**
* Configuration options for SDLManager
*/
@@ -178,6 +183,15 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic) SDLVersion *minimumRPCVersion;
+/**
+ Which transports are permitted to be used as secondary transports. A secondary transport is a transport that is connected as an alternate, higher bandwidth transport for situations when a low-bandwidth primary transport (such as Bluetooth) will restrict certain features (such as video streaming navigation).
+
+ The only currently available secondary transport is TCP over WiFi. This is set to permit TCP by default, but it can be disabled by using SDLSecondaryTransportsNone instead.
+
+ This will only affect apps that have high-bandwidth requirements; currently that is only video streaming navigation apps.
+ */
+@property (assign, nonatomic) SDLSecondaryTransports allowedSecondaryTransports;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.m b/SmartDeviceLink/SDLLifecycleConfiguration.m
index 5f163d8e6..09847120d 100644
--- a/SmartDeviceLink/SDLLifecycleConfiguration.m
+++ b/SmartDeviceLink/SDLLifecycleConfiguration.m
@@ -69,6 +69,7 @@ static NSUInteger const AppIdCharacterCount = 10;
_voiceRecognitionCommandNames = nil;
_minimumProtocolVersion = [SDLVersion versionWithString:@"1.0.0"];
_minimumRPCVersion = [SDLVersion versionWithString:@"1.0.0"];
+ _allowedSecondaryTransports = SDLSecondaryTransportsTCP;
_fullAppId = fullAppId;
_appId = fullAppId != nil ? [self.class sdlex_shortAppIdFromFullAppId:fullAppId] : appId;
@@ -156,6 +157,7 @@ static NSUInteger const AppIdCharacterCount = 10;
newConfig->_voiceRecognitionCommandNames = _voiceRecognitionCommandNames;
newConfig->_dayColorScheme = _dayColorScheme;
newConfig->_nightColorScheme = _nightColorScheme;
+ newConfig->_allowedSecondaryTransports = _allowedSecondaryTransports;
return newConfig;
}
diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m
index d59b1e4eb..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"
@@ -224,19 +225,18 @@ NSString *const BackgroundTaskTransportName = @"com.sdl.transport.backgroundTask
// Start up the internal proxy object
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.secondaryTransportManager = nil;
if (self.configuration.lifecycleConfig.tcpDebugMode) {
- // secondary transport manager is not used
- self.secondaryTransportManager = nil;
self.proxy = [SDLProxy tcpProxyWithListener:self.notificationDispatcher
tcpIPAddress:self.configuration.lifecycleConfig.tcpDebugIPAddress
tcpPort:@(self.configuration.lifecycleConfig.tcpDebugPort).stringValue
secondaryTransportManager:self.secondaryTransportManager];
+ } else if (self.configuration.lifecycleConfig.allowedSecondaryTransports == SDLSecondaryTransportsNone) {
+ self.proxy = [SDLProxy iapProxyWithListener:self.notificationDispatcher secondaryTransportManager:nil];
} else {
- // we reuse our queue to run secondary transport manager's state machine
- self.secondaryTransportManager = [[SDLSecondaryTransportManager alloc] initWithStreamingProtocolDelegate:self
- serialQueue:self.lifecycleQueue];
- self.proxy = [SDLProxy iapProxyWithListener:self.notificationDispatcher
- secondaryTransportManager:self.secondaryTransportManager];
+ // We reuse our queue to run secondary transport manager's state machine
+ self.secondaryTransportManager = [[SDLSecondaryTransportManager alloc] initWithStreamingProtocolDelegate:self serialQueue:self.lifecycleQueue];
+ self.proxy = [SDLProxy iapProxyWithListener:self.notificationDispatcher secondaryTransportManager:self.secondaryTransportManager];
}
#pragma clang diagnostic pop
}
@@ -521,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
@@ -739,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/SDLLockScreenConfiguration.h b/SmartDeviceLink/SDLLockScreenConfiguration.h
index 854196520..317beabe4 100644
--- a/SmartDeviceLink/SDLLockScreenConfiguration.h
+++ b/SmartDeviceLink/SDLLockScreenConfiguration.h
@@ -11,9 +11,32 @@
NS_ASSUME_NONNULL_BEGIN
+/**
+ Describes when the lock screen should be shown.
+
+ - SDLLockScreenConfigurationModeNever: The lock screen should never be shown. This should almost always mean that you will build your own lock screen.
+ - SDLLockScreenConfigurationModeRequiredOnly: The lock screen should only be shown when it is required by the head unit.
+ - SDLLockScreenConfigurationModeOptionalOrRequired: The lock screen should be shown when required by the head unit or when the head unit says that its optional, but *not* in other cases, such as before the user has interacted with your app on the head unit.
+ - SDLLockScreenConfigurationModeAlways: The lock screen should always be shown after connection.
+ */
+typedef NS_ENUM(NSUInteger, SDLLockScreenConfigurationDisplayMode) {
+ SDLLockScreenConfigurationDisplayModeNever,
+ SDLLockScreenConfigurationDisplayModeRequiredOnly,
+ SDLLockScreenConfigurationDisplayModeOptionalOrRequired,
+ SDLLockScreenConfigurationDisplayModeAlways
+};
+
+/**
+ A configuration describing how the lock screen should be used by the internal SDL system for your application. This configuration is provided before SDL starts and will govern the entire SDL lifecycle of your application.
+ */
@interface SDLLockScreenConfiguration : NSObject <NSCopying>
/**
+ Describes when the lock screen will be displayed. Defaults to `SDLLockScreenConfigurationDisplayModeRequiredOnly`.
+ */
+@property (assign, nonatomic) SDLLockScreenConfigurationDisplayMode displayMode;
+
+/**
* Whether or not the lock screen should be shown in the "lock screen optional" state. Defaults to NO.
*
* In order for the "lock screen optional" state to occur, the following must be true:
@@ -21,8 +44,10 @@ NS_ASSUME_NONNULL_BEGIN
* 2. The driver is not distracted (i.e. the last `OnDriverDistraction` notification received was for a driver distraction state off).
* 3. The `hmiLevel` can not be `NONE`.
* 4. If the `hmiLevel` is currently `BACKGROUND` then the previous `hmiLevel` should have been `FULL` or `LIMITED` (i.e. the user should have interacted with app before it was backgrounded).
+
+ * Since this has been deprecated, setting this to true will set `displayMode` to `OptionalOrRequired` if `enableAutomaticLockScreen` is true, or will have no effect if it is false.
*/
-@property (assign, nonatomic) BOOL showInOptionalState;
+@property (assign, nonatomic) BOOL showInOptionalState __deprecated_msg("Use displayMode SDLLockScreenConfigurationDisplayModeOptionalOrRequired to replicate this being YES");
/**
If YES, then the lock screen can be dismissed with a downward swipe on compatible head units. Requires a connection of SDL 6.0+ and the head unit to enable the feature. Defaults to YES.
@@ -30,9 +55,16 @@ NS_ASSUME_NONNULL_BEGIN
@property (assign, nonatomic) BOOL enableDismissGesture;
/**
- * If YES, the lock screen should be managed by SDL and automatically engage when necessary. If NO, then the lock screen will never be engaged. Defaults to YES.
+ If YES, then the lockscreen will show the vehicle's logo if the vehicle has made it available. If NO, then the lockscreen will not show the vehicle logo. Defaults to YES.
+*/
+@property (assign, nonatomic) BOOL showDeviceLogo;
+
+/**
+ If YES, the lock screen should be managed by SDL and automatically engage when necessary. If NO, then the lock screen will never be engaged. Defaults to YES.
+
+ Since this has been deprecated, setting this to false will set `displayMode` to `Never`. Setting it back to true will set it to `RequiredOnly` if `showInOptionalState` is false, or `OptionalOrRequired` if it is true.
*/
-@property (assign, nonatomic, readonly) BOOL enableAutomaticLockScreen;
+@property (assign, nonatomic, readonly) BOOL enableAutomaticLockScreen __deprecated_msg("Use displayMode SDLLockScreenConfigurationDisplayModeNever to replicate this being NO");
/**
* The background color of the lock screen. This could be a branding color, or leave at the default for a dark blue-gray.
diff --git a/SmartDeviceLink/SDLLockScreenConfiguration.m b/SmartDeviceLink/SDLLockScreenConfiguration.m
index 4798cf9d4..47e4980de 100644
--- a/SmartDeviceLink/SDLLockScreenConfiguration.m
+++ b/SmartDeviceLink/SDLLockScreenConfiguration.m
@@ -11,37 +11,35 @@
NS_ASSUME_NONNULL_BEGIN
-@interface SDLLockScreenConfiguration ()
-
-@end
-
-
@implementation SDLLockScreenConfiguration
#pragma mark - Lifecycle
-- (instancetype)initWithAutoLockScreen:(BOOL)enableAutomatic enableInOptional:(BOOL)enableOptional enableDismissGesture:(BOOL)enableDismissGesture backgroundColor:(UIColor *)backgroundColor appIcon:(nullable UIImage *)appIcon viewController:(nullable UIViewController *)customViewController {
+- (instancetype)initWithDisplayMode:(SDLLockScreenConfigurationDisplayMode)mode enableDismissGesture:(BOOL)enableDismissGesture showDeviceLogo:(BOOL)showDeviceLogo backgroundColor:(UIColor *)backgroundColor appIcon:(nullable UIImage *)appIcon viewController:(nullable UIViewController *)customViewController {
self = [super init];
if (!self) {
return nil;
}
- _enableAutomaticLockScreen = enableAutomatic;
- _showInOptionalState = enableOptional;
+ _displayMode = mode;
+ _enableAutomaticLockScreen = (mode == SDLLockScreenConfigurationDisplayModeNever) ? NO : YES;
+ _showInOptionalState = (mode == SDLLockScreenConfigurationDisplayModeOptionalOrRequired) ? NO : YES;
+
_enableDismissGesture = enableDismissGesture;
_backgroundColor = backgroundColor;
_appIcon = appIcon;
_customViewController = customViewController;
+ _showDeviceLogo = showDeviceLogo;
return self;
}
+ (instancetype)disabledConfiguration {
- return [[self alloc] initWithAutoLockScreen:NO enableInOptional:NO enableDismissGesture:NO backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeNever enableDismissGesture:NO showDeviceLogo:YES backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
}
+ (instancetype)enabledConfiguration {
- return [[self alloc] initWithAutoLockScreen:YES enableInOptional:NO enableDismissGesture:YES backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
}
+ (instancetype)enabledConfigurationWithAppIcon:(UIImage *)lockScreenAppIcon backgroundColor:(nullable UIColor *)lockScreenBackgroundColor {
@@ -49,11 +47,11 @@ NS_ASSUME_NONNULL_BEGIN
lockScreenBackgroundColor = [self.class sdl_defaultBackgroundColor];
}
- return [[self alloc] initWithAutoLockScreen:YES enableInOptional:NO enableDismissGesture:YES backgroundColor:lockScreenBackgroundColor appIcon:lockScreenAppIcon viewController:nil];
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:lockScreenBackgroundColor appIcon:lockScreenAppIcon viewController:nil];
}
+ (instancetype)enabledConfigurationWithViewController:(UIViewController *)viewController {
- return [[self alloc] initWithAutoLockScreen:YES enableInOptional:NO enableDismissGesture:YES backgroundColor:[self.class sdl_defaultBackgroundColor] appIcon:nil viewController:viewController];
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:[self.class sdl_defaultBackgroundColor] appIcon:nil viewController:viewController];
}
@@ -64,10 +62,36 @@ NS_ASSUME_NONNULL_BEGIN
}
+#pragma mark - Setters / Getters
+
+- (void)setEnableAutomaticLockScreen:(BOOL)enableAutomaticLockScreen {
+ _enableAutomaticLockScreen = enableAutomaticLockScreen;
+
+ if (!_enableAutomaticLockScreen) {
+ _displayMode = SDLLockScreenConfigurationDisplayModeNever;
+ } else if (_showInOptionalState) {
+ _displayMode = SDLLockScreenConfigurationDisplayModeOptionalOrRequired;
+ } else {
+ _displayMode = SDLLockScreenConfigurationDisplayModeRequiredOnly;
+ }
+}
+
+- (void)setShowInOptionalState:(BOOL)showInOptionalState {
+ _showInOptionalState = showInOptionalState;
+
+ if (!_enableAutomaticLockScreen) {
+ _displayMode = SDLLockScreenConfigurationDisplayModeNever;
+ } else if (_showInOptionalState) {
+ _displayMode = SDLLockScreenConfigurationDisplayModeOptionalOrRequired;
+ } else {
+ _displayMode = SDLLockScreenConfigurationDisplayModeRequiredOnly;
+ }
+}
+
#pragma mark - NSCopying
- (id)copyWithZone:(nullable NSZone *)zone {
- SDLLockScreenConfiguration *new = [[SDLLockScreenConfiguration allocWithZone:zone] initWithAutoLockScreen:_enableAutomaticLockScreen enableInOptional:_showInOptionalState enableDismissGesture:_enableDismissGesture backgroundColor:_backgroundColor appIcon:_appIcon viewController:_customViewController];
+ SDLLockScreenConfiguration *new = [[SDLLockScreenConfiguration allocWithZone:zone] initWithDisplayMode:_displayMode enableDismissGesture:_enableDismissGesture showDeviceLogo:_showDeviceLogo backgroundColor:_backgroundColor appIcon:_appIcon viewController:_customViewController];
return new;
}
diff --git a/SmartDeviceLink/SDLLockScreenManager.m b/SmartDeviceLink/SDLLockScreenManager.m
index 3d8ca341a..85b601ce0 100644
--- a/SmartDeviceLink/SDLLockScreenManager.m
+++ b/SmartDeviceLink/SDLLockScreenManager.m
@@ -67,7 +67,7 @@ NS_ASSUME_NONNULL_BEGIN
self.canPresent = NO;
// Create and initialize the lock screen controller depending on the configuration
- if (!self.config.enableAutomaticLockScreen) {
+ if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeNever) {
self.presenter.lockViewController = nil;
return;
} else if (self.config.customViewController != nil) {
@@ -126,7 +126,7 @@ NS_ASSUME_NONNULL_BEGIN
UIImage *icon = notification.userInfo[SDLNotificationUserInfoObject];
// If the VC is our special type, then add the vehicle icon. If they passed in a custom VC, there's no current way to show the vehicle icon. If they're managing it themselves, they can grab the notification themselves.
- if ([self.lockScreenViewController isKindOfClass:[SDLLockScreenViewController class]]) {
+ if ([self.lockScreenViewController isKindOfClass:[SDLLockScreenViewController class]] && self.config.showDeviceLogo) {
((SDLLockScreenViewController *)self.lockScreenViewController).vehicleIcon = icon;
}
}
@@ -152,14 +152,18 @@ NS_ASSUME_NONNULL_BEGIN
}
// Present the VC depending on the lock screen status
- if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusRequired]) {
+ if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeAlways) {
+ if (!self.presenter.presented && self.canPresent) {
+ [self.presenter present];
+ }
+ } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusRequired]) {
if (!self.presenter.presented && self.canPresent && !self.lockScreenDismissedByUser) {
[self.presenter present];
}
} else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOptional]) {
- if (self.config.showInOptionalState && !self.presenter.presented && self.canPresent && !self.lockScreenDismissedByUser) {
+ if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeOptionalOrRequired && !self.presenter.presented && self.canPresent && !self.lockScreenDismissedByUser) {
[self.presenter present];
- } else if (!self.config.showInOptionalState && self.presenter.presented) {
+ } else if (self.config.displayMode != SDLLockScreenConfigurationDisplayModeOptionalOrRequired && self.presenter.presented) {
[self.presenter dismiss];
}
} else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOff]) {
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 5124d3d3e..ac613208a 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;
@@ -189,10 +191,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 2f4b91750..74888f8b3 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";
@@ -93,11 +95,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";
@@ -183,10 +187,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 a1a1efd90..e6115d61c 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];
}
@@ -369,6 +377,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];
}
@@ -385,6 +397,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/SDLOnVehicleData.h b/SmartDeviceLink/SDLOnVehicleData.h
index 463245d30..6b9c45db4 100644
--- a/SmartDeviceLink/SDLOnVehicleData.h
+++ b/SmartDeviceLink/SDLOnVehicleData.h
@@ -186,6 +186,26 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState An object containing the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState;
+
+/**
+ Gets the OEM custom vehicle data item for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return An OEM custom vehicle data object for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnVehicleData.m b/SmartDeviceLink/SDLOnVehicleData.m
index 6dc6b0aa5..502d669b7 100644
--- a/SmartDeviceLink/SDLOnVehicleData.m
+++ b/SmartDeviceLink/SDLOnVehicleData.m
@@ -272,6 +272,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil];
}
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
+}
+
@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 f2ef9a6f1..ebdbddeff 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;
@@ -236,6 +240,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
@@ -264,6 +275,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
@@ -665,6 +683,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
@@ -693,6 +718,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 f2961a4be..8cb138cf9 100644
--- a/SmartDeviceLink/SDLRPCFunctionNames.h
+++ b/SmartDeviceLink/SDLRPCFunctionNames.h
@@ -98,5 +98,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 016bd3832..5063716a8 100644
--- a/SmartDeviceLink/SDLRPCFunctionNames.m
+++ b/SmartDeviceLink/SDLRPCFunctionNames.m
@@ -93,3 +93,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 c31733670..0e127c363 100644
--- a/SmartDeviceLink/SDLRPCParameterNames.h
+++ b/SmartDeviceLink/SDLRPCParameterNames.h
@@ -49,6 +49,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;
@@ -126,6 +127,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature;
extern SDLRPCParameterName const SDLRPCParameterNameCushion;
extern SDLRPCParameterName const SDLRPCParameterNameCustomButtonId;
extern SDLRPCParameterName const SDLRPCParameterNameCustomPresets;
+extern SDLRPCParameterName const SDLRPCParameterNameOEMCustomDataType;
extern SDLRPCParameterName const SDLRPCParameterNameData;
extern SDLRPCParameterName const SDLRPCParameterNameDataResult;
extern SDLRPCParameterName const SDLRPCParameterNameDataType;
@@ -174,6 +176,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;
@@ -355,6 +358,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;
@@ -616,12 +620,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;
@@ -699,6 +706,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 972b6f234..2c562168f 100644
--- a/SmartDeviceLink/SDLRPCParameterNames.m
+++ b/SmartDeviceLink/SDLRPCParameterNames.m
@@ -49,6 +49,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";
@@ -171,6 +172,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";
@@ -348,6 +350,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";
@@ -419,6 +422,7 @@ SDLRPCParameterName const SDLRPCParameterNameNumber = @"number";
SDLRPCParameterName const SDLRPCParameterNameNumberCustomPresetsAvailable = @"numCustomPresetsAvailable";
SDLRPCParameterName const SDLRPCParameterNameNumberTicks = @"numTicks";
SDLRPCParameterName const SDLRPCParameterNameOdometer = @"odometer";
+SDLRPCParameterName const SDLRPCParameterNameOEMCustomDataType = @"oemCustomDataType";
SDLRPCParameterName const SDLRPCParameterNameOffset = @"offset";
SDLRPCParameterName const SDLRPCParameterNameOnLockScreenStatus = @"OnLockScreenStatus";
SDLRPCParameterName const SDLRPCParameterNameOnScreenPresetsAvailable = @"onScreenPresetsAvailable";
@@ -610,6 +614,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";
@@ -617,6 +623,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";
@@ -694,6 +701,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/SDLSoftButtonObject.h b/SmartDeviceLink/SDLSoftButtonObject.h
index fe641a56e..eb2512fca 100644
--- a/SmartDeviceLink/SDLSoftButtonObject.h
+++ b/SmartDeviceLink/SDLSoftButtonObject.h
@@ -10,6 +10,7 @@
#import "SDLNotificationConstants.h"
+@class SDLArtwork;
@class SDLSoftButton;
@class SDLSoftButtonObject;
@class SDLSoftButtonState;
@@ -58,12 +59,24 @@ NS_ASSUME_NONNULL_BEGIN
Create a single-state soft button. For example, a button that brings up a Perform Interaction menu.
@param name The name of the button
- @param eventHandler The handler to be called when the button is in the current state and is pressed
@param state The single state of the button
+ @param eventHandler The handler to be called when the button is pressed
+ @return The button object
*/
- (instancetype)initWithName:(NSString *)name state:(SDLSoftButtonState *)state handler:(nullable SDLRPCButtonNotificationHandler)eventHandler;
/**
+ Create a single-state soft button. For example, a button that brings up a Perform Interaction menu.
+
+ @param name The name of the button
+ @param text The text to be displayed on the button
+ @param artwork The artwork to be displayed on the button
+ @param eventHandler The handler to be called when the button is pressed
+ @return The button object
+ */
+- (instancetype)initWithName:(NSString *)name text:(nullable NSString *)text artwork:(nullable SDLArtwork *)artwork handler:(nullable SDLRPCButtonNotificationHandler)eventHandler;
+
+/**
Transition the soft button to another state in the `states` property. The wrapper considers all transitions valid (assuming a state with that name exists).
@warning This method will throw an exception and crash your app (on purpose) if you attempt an invalid transition. So...don't do that.
diff --git a/SmartDeviceLink/SDLSoftButtonObject.m b/SmartDeviceLink/SDLSoftButtonObject.m
index 427421590..adb153e1a 100644
--- a/SmartDeviceLink/SDLSoftButtonObject.m
+++ b/SmartDeviceLink/SDLSoftButtonObject.m
@@ -53,12 +53,22 @@ NS_ASSUME_NONNULL_BEGIN
return [self initWithName:name states:@[state] initialStateName:state.name handler:eventHandler];
}
+- (instancetype)initWithName:(NSString *)name text:(nullable NSString *)text artwork:(nullable SDLArtwork *)artwork handler:(nullable SDLRPCButtonNotificationHandler)eventHandler {
+ SDLSoftButtonState *implicitState = [[SDLSoftButtonState alloc] initWithStateName:name text:text artwork:artwork];
+ return [self initWithName:name state:implicitState handler:eventHandler];
+}
+
- (BOOL)transitionToStateNamed:(NSString *)stateName {
if ([self stateWithName:stateName] == nil) {
SDLLogE(@"Attempted to transition to state: %@ on soft button: %@ but no state with that name was found", stateName, self.name);
return NO;
}
+ if (self.states.count == 1) {
+ SDLLogW(@"There's only one state, so no transitioning is possible!");
+ return NO;
+ }
+
SDLLogD(@"Transitioning button %@ to state %@", self.name, stateName);
self.currentStateName = stateName;
[self.manager sdl_transitionSoftButton:self];
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/SDLSubscribeVehicleData.h b/SmartDeviceLink/SDLSubscribeVehicleData.h
index 31d1dce6f..912ea1caf 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleData.h
+++ b/SmartDeviceLink/SDLSubscribeVehicleData.h
@@ -266,6 +266,28 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState A boolean value. If true, requests the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState;
+
+/**
+ Gets the OEM custom vehicle data value for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return The state of an OEM custom vehicle data item for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleData.m b/SmartDeviceLink/SDLSubscribeVehicleData.m
index cf2b650ae..a5224be5c 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleData.m
+++ b/SmartDeviceLink/SDLSubscribeVehicleData.m
@@ -300,6 +300,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
}
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
+ [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
+}
+
+- (NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
index 0fbf17c0b..d0eb2cc09 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
+++ b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
@@ -219,6 +219,26 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState SDLVehicleDataResult object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState;
+
+/**
+ Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return SDLVehicleDataResult An object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
index 648d5356e..cfa785e86 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
+++ b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
@@ -254,6 +254,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil];
}
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapability.h b/SmartDeviceLink/SDLSystemCapability.h
index b72478312..eda4e535b 100755
--- a/SmartDeviceLink/SDLSystemCapability.h
+++ b/SmartDeviceLink/SDLSystemCapability.h
@@ -15,6 +15,7 @@
@class SDLVideoStreamingCapability;
@class SDLRemoteControlCapabilities;
@class SDLSeatLocationCapability;
+@class SDLDisplayCapability;
NS_ASSUME_NONNULL_BEGIN
@@ -120,6 +121,15 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) SDLSeatLocationCapability *seatLocationCapability;
+/**
+ 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 75f79d17e..af5807078 100755
--- a/SmartDeviceLink/SDLSystemCapability.m
+++ b/SmartDeviceLink/SDLSystemCapability.m
@@ -17,6 +17,7 @@
#import "SDLVideoStreamingCapability.h"
#import "SDLRemoteControlCapabilities.h"
#import "SDLSeatLocationCapability.h"
+#import "SDLDisplayCapability.h"
NS_ASSUME_NONNULL_BEGIN
@@ -151,6 +152,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.store sdl_objectForName:SDLRPCParameterNameSeatLocationCapability ofClass:SDLSeatLocationCapability.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 092cb876a..feea6a0e7 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"
@@ -160,15 +161,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;
@@ -177,6 +184,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.
*
@@ -192,6 +202,7 @@ typedef NSString * SDLServiceID;
self.presetBankCapabilities = response.presetBankCapabilities;
}
+
/**
* Called when an `OnSystemCapabilityUpdated` notification is received from Core. The updated system capabilty is saved.
*
@@ -219,6 +230,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 972a8888b..60f11a78a 100755
--- a/SmartDeviceLink/SDLSystemCapabilityType.h
+++ b/SmartDeviceLink/SDLSystemCapabilityType.h
@@ -42,3 +42,10 @@ extern SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl;
Contains information about the locations of each seat
*/
extern SDLSystemCapabilityType const SDLSystemCapabilityTypeSeatLocation;
+
+/**
+ The Display type capability
+
+ @since SDL 6.0
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeDisplays;
diff --git a/SmartDeviceLink/SDLSystemCapabilityType.m b/SmartDeviceLink/SDLSystemCapabilityType.m
index c99e17dd1..4185345e6 100755
--- a/SmartDeviceLink/SDLSystemCapabilityType.m
+++ b/SmartDeviceLink/SDLSystemCapabilityType.m
@@ -14,3 +14,4 @@ SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall = @"PHONE_CALL";
SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming = @"VIDEO_STREAMING";
SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl = @"REMOTE_CONTROL";
SDLSystemCapabilityType const SDLSystemCapabilityTypeSeatLocation = @"SEAT_LOCATION";
+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/SDLUnsubscribeVehicleData.h b/SmartDeviceLink/SDLUnsubscribeVehicleData.h
index 322b12347..f5173ad94 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleData.h
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleData.h
@@ -268,6 +268,25 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState A boolean value. If true, requests an unsubscribes of the OEM custom vehicle data item.
+
+ Added SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState;
+
+/**
+ Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item to unsubscribe for.
+ @return A boolean value indicating if an unsubscribe request will occur for the OEM custom vehicle data item.
+
+ Added SmartDeviceLink 6.0
+ */
+- (NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
@end
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleData.m b/SmartDeviceLink/SDLUnsubscribeVehicleData.m
index 1df1d2a5f..ec895d667 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleData.m
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleData.m
@@ -300,6 +300,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
}
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
+ [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
+}
+
+- (NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
index 32f51cf76..ed42cd76c 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
@@ -218,6 +218,26 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState SDLVehicleDataResult object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState;
+
+/**
+ Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return SDLVehicleDataResult object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
index b7bddc70d..10f8d4a78 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
@@ -254,6 +254,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil];
}
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLVehicleDataResult.h b/SmartDeviceLink/SDLVehicleDataResult.h
index 44d43b70b..deeb325a9 100644
--- a/SmartDeviceLink/SDLVehicleDataResult.h
+++ b/SmartDeviceLink/SDLVehicleDataResult.h
@@ -14,11 +14,34 @@ NS_ASSUME_NONNULL_BEGIN
@interface SDLVehicleDataResult : SDLRPCStruct
/**
+ * Convenience init for creating a SDLVehicleDataResult with a dataType
+ *
+ * @param dataType The Vehicle DataType data
+ * @param resultCode The VehicleData ResultCode data
+ */
+- (instancetype)initWithDataType:(SDLVehicleDataType)dataType resultCode:(SDLVehicleDataResultCode)resultCode;
+
+/**
+ * Convenience init for creating a SDLVehicleDataResult with a customDataType
+ *
+ * @param customDataType The custom dataType data
+ * @param resultCode The VehicleData ResultCode data
+ */
+- (instancetype)initWithCustomOEMDataType:(NSString *)customDataType resultCode:(SDLVehicleDataResultCode)resultCode;
+
+/**
Defined published data element type
*/
@property (strong, nonatomic) SDLVehicleDataType dataType;
/**
+ OEM custom defined published data element type
+
+ Added SmartDeviceLink 6.0
+ */
+@property (nullable, strong, nonatomic) NSString *customOEMDataType;
+
+/**
Published data result code
*/
@property (strong, nonatomic) SDLVehicleDataResultCode resultCode;
diff --git a/SmartDeviceLink/SDLVehicleDataResult.m b/SmartDeviceLink/SDLVehicleDataResult.m
index 0dfd9b1f3..db6995051 100644
--- a/SmartDeviceLink/SDLVehicleDataResult.m
+++ b/SmartDeviceLink/SDLVehicleDataResult.m
@@ -10,6 +10,30 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SDLVehicleDataResult
+- (instancetype)initWithDataType:(SDLVehicleDataType)dataType resultCode:(SDLVehicleDataResultCode)resultCode {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.dataType = dataType;
+ self.resultCode = resultCode;
+
+ return self;
+}
+
+- (instancetype)initWithCustomOEMDataType:(NSString *)customDataType resultCode:(SDLVehicleDataResultCode)resultCode{
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.customOEMDataType = customDataType;
+ self.resultCode = resultCode;
+
+ return self;
+}
+
- (void)setDataType:(SDLVehicleDataType)dataType {
[self.store sdl_setObject:dataType forName:SDLRPCParameterNameDataType];
}
@@ -28,6 +52,15 @@ NS_ASSUME_NONNULL_BEGIN
return [self.store sdl_enumForName:SDLRPCParameterNameResultCode error:&error];
}
+- (nullable NSString *)customOEMDataType {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameOEMCustomDataType error:&error];
+}
+
+- (void)setCustomOEMDataType:(nullable NSString *)oemCustomDataType {
+ [self.store sdl_setObject:oemCustomDataType forName:SDLRPCParameterNameOEMCustomDataType];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLVehicleDataType.h b/SmartDeviceLink/SDLVehicleDataType.h
index 1da4ad500..e65cdcef9 100644
--- a/SmartDeviceLink/SDLVehicleDataType.h
+++ b/SmartDeviceLink/SDLVehicleDataType.h
@@ -163,3 +163,10 @@ extern SDLVehicleDataType const SDLVehicleDataTypeTurnSignal;
The cloud application vehicle id. Used by cloud apps to identify a head unit
*/
extern SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID;
+
+/**
+ Custom OEM Vehicle data
+
+ Added in SDL 6.0
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeOEMVehicleDataType;
diff --git a/SmartDeviceLink/SDLVehicleDataType.m b/SmartDeviceLink/SDLVehicleDataType.m
index a64497b2a..895613873 100644
--- a/SmartDeviceLink/SDLVehicleDataType.m
+++ b/SmartDeviceLink/SDLVehicleDataType.m
@@ -35,4 +35,5 @@ SDLVehicleDataType const SDLVehicleDataTypeSteeringWheel = @"VEHICLEDATA_STEERIN
SDLVehicleDataType const SDLVehicleDataTypeElectronicParkBrakeStatus = @"VEHICLEDATA_ELECTRONICPARKBRAKESTATUS";
SDLVehicleDataType const SDLVehicleDataTypeTurnSignal = @"VEHICLEDATA_TURNSIGNAL";
SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID = @"VEHICLEDATA_CLOUDAPPVEHICLEID";
+SDLVehicleDataType const SDLVehicleDataTypeOEMVehicleDataType = @"VEHICLEDATA_OEM_CUSTOM_DATA";
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 b8edb1569..58dffc8d9 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"
@@ -89,10 +91,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"
@@ -191,6 +195,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"
@@ -255,6 +260,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"
@@ -270,6 +276,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"
@@ -336,6 +344,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"
@@ -375,6 +384,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/SDLFakeViewControllerPresenter.m b/SmartDeviceLinkTests/DevAPISpecs/SDLFakeViewControllerPresenter.m
index 3e6230897..aa9fe7849 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLFakeViewControllerPresenter.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLFakeViewControllerPresenter.m
@@ -18,6 +18,15 @@
@implementation SDLFakeViewControllerPresenter
+- (instancetype)init {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _presented = NO;
+
+ return self;
+}
+
- (void)present {
if (!self.lockViewController) { return; }
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
index 6d2fd0c79..8e0d85c5b 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
@@ -668,6 +668,28 @@ describe(@"a lifecycle manager", ^{
});
});
+describe(@"configuring the lifecycle manager", ^{
+ __block SDLLifecycleConfiguration *lifecycleConfig = nil;
+ __block SDLLifecycleManager *testManager = nil;
+
+ beforeEach(^{
+ lifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:@"Test app" fullAppId:@"Test ID"];
+ });
+
+ context(@"if no secondary transport is allowed", ^{
+ beforeEach(^{
+ lifecycleConfig.allowedSecondaryTransports = SDLSecondaryTransportsNone;
+
+ SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:nil logging:nil fileManager:nil];
+ testManager = [[SDLLifecycleManager alloc] initWithConfiguration:config delegate:nil];
+ });
+
+ it(@"should not create a secondary transport manager", ^{
+ expect(testManager.secondaryTransportManager).to(beNil());
+ });
+ });
+});
+
QuickSpecEnd
#pragma clang diagnostic pop
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m
index f0a9bff24..d35717658 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m
@@ -17,6 +17,7 @@ describe(@"a lock screen configuration", ^{
expect(testConfig.enableAutomaticLockScreen).to(beFalse());
expect(testConfig.showInOptionalState).to(beFalse());
expect(testConfig.enableDismissGesture).to(beFalse());
+ expect(testConfig.showDeviceLogo).to(beFalse());
expect(testConfig.backgroundColor).to(equal([UIColor colorWithRed:(57.0/255.0) green:(78.0/255.0) blue:(96.0/255.0) alpha:1.0]));
expect(testConfig.appIcon).to(beNil());
expect(testConfig.customViewController).to(beNil());
@@ -32,6 +33,7 @@ describe(@"a lock screen configuration", ^{
expect(testConfig.enableAutomaticLockScreen).to(beTrue());
expect(testConfig.showInOptionalState).to(beFalse());
expect(testConfig.enableDismissGesture).to(beTrue());
+ expect(testConfig.showDeviceLogo).to(beTrue());
expect(testConfig.backgroundColor).to(equal([UIColor colorWithRed:(57.0/255.0) green:(78.0/255.0) blue:(96.0/255.0) alpha:1.0]));
expect(testConfig.appIcon).to(beNil());
expect(testConfig.customViewController).to(beNil());
@@ -53,6 +55,7 @@ describe(@"a lock screen configuration", ^{
expect(testConfig.enableAutomaticLockScreen).to(beTrue());
expect(testConfig.showInOptionalState).to(beFalse());
expect(testConfig.enableDismissGesture).to(beTrue());
+ expect(testConfig.showDeviceLogo).to(beTrue());
expect(testConfig.backgroundColor).to(equal([UIColor blueColor]));
expect(testConfig.appIcon).to(equal(testImage));
expect(testConfig.customViewController).to(beNil());
@@ -72,6 +75,7 @@ describe(@"a lock screen configuration", ^{
expect(testConfig.enableAutomaticLockScreen).to(beTrue());
expect(testConfig.showInOptionalState).to(beFalse());
expect(testConfig.enableDismissGesture).to(beTrue());
+ expect(testConfig.showDeviceLogo).to(beTrue());
expect(testConfig.backgroundColor).to(equal([UIColor colorWithRed:(57.0/255.0) green:(78.0/255.0) blue:(96.0/255.0) alpha:1.0]));
expect(testConfig.appIcon).to(beNil());
expect(testConfig.customViewController).to(equal(testVC));
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
index 596c863b1..86215488a 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
@@ -233,7 +233,31 @@ describe(@"a lock screen manager", ^{
});
});
});
-
+
+ context(@"with showDeviceLogo as NO", ^{
+ beforeEach(^{
+ SDLLockScreenConfiguration *config = [SDLLockScreenConfiguration enabledConfiguration];
+ config.showDeviceLogo = NO;
+
+ testManager = [[SDLLockScreenManager alloc] initWithConfiguration:config notificationDispatcher:nil presenter:fakePresenter];
+ [testManager start];
+ });
+
+ describe(@"when a vehicle icon is received", ^{
+ __block UIImage *testIcon = nil;
+
+ beforeEach(^{
+ testIcon = [UIImage imageNamed:@"testImagePNG" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil];
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidReceiveLockScreenIcon object:nil userInfo:@{ SDLNotificationUserInfoObject: testIcon }];
+ });
+
+ it(@"should not have a vehicle icon if showDeviceLogo is set to NO", ^{
+ expect(((SDLLockScreenViewController *)testManager.lockScreenViewController).vehicleIcon).to(beNil());
+ });
+ });
+
+ });
+
context(@"with a custom color configuration", ^{
__block UIColor *testColor = nil;
__block UIImage *testImage = nil;
@@ -326,6 +350,57 @@ describe(@"a lock screen manager", ^{
});
});
+ describe(@"with an always enabled configuration", ^{
+ __block SDLFakeViewControllerPresenter *fakePresenter = nil;
+ __block SDLRPCNotificationNotification *testLockStatusNotification = nil;
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ __block SDLOnLockScreenStatus *testStatus = nil;
+#pragma clang diagnostic pop
+
+ beforeEach(^{
+ fakePresenter = [[SDLFakeViewControllerPresenter alloc] init];
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testStatus = [[SDLOnLockScreenStatus alloc] init];
+#pragma clang diagnostic pop
+
+ SDLLockScreenConfiguration *config = [SDLLockScreenConfiguration enabledConfiguration];
+ config.displayMode = SDLLockScreenConfigurationDisplayModeAlways;
+
+ testManager = [[SDLLockScreenManager alloc] initWithConfiguration:config notificationDispatcher:nil presenter:fakePresenter];
+ [testManager start];
+ });
+
+ context(@"receiving a lock screen status of required", ^{
+ beforeEach(^{
+ testStatus.lockScreenStatus = SDLLockScreenStatusRequired;
+ testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:nil rpcNotification:testStatus];
+
+ [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+ });
+
+ it(@"should present the lock screen if not already presented", ^{
+ expect(fakePresenter.presented).to(beTrue());
+ });
+ });
+
+ context(@"receiving a lock screen status of off", ^{
+ beforeEach(^{
+ testStatus.lockScreenStatus = SDLLockScreenStatusOff;
+ testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:nil rpcNotification:testStatus];
+
+ [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+ });
+
+ it(@"should present the lock screen if not already presented", ^{
+ expect(fakePresenter.presented).to(beTrue());
+ });
+ });
+ });
+
describe(@"A lock screen status of OPTIONAL", ^{
__block SDLLockScreenManager *testLockScreenManager = nil;
__block SDLLockScreenConfiguration *testLockScreenConfig = nil;
@@ -346,7 +421,10 @@ describe(@"a lock screen manager", ^{
context(@"showInOptionalState is true", ^{
beforeEach(^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testLockScreenConfig.showInOptionalState = true;
+#pragma clang diagnostic pop
testLockScreenManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:nil presenter:mockViewControllerPresenter];
@@ -365,7 +443,10 @@ describe(@"a lock screen manager", ^{
context(@"showInOptionalState is false", ^{
beforeEach(^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testLockScreenConfig.showInOptionalState = false;
+#pragma clang diagnostic pop
testLockScreenManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:nil presenter:mockViewControllerPresenter];
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/NotificationSpecs/SDLOnVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
index d835c5f9b..c2f9afbf2 100644
--- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
@@ -46,7 +46,7 @@ describe(@"Getter/Setter Tests", ^ {
cloudAppVehicleID = @"testCloudAppVehicleID";
});
- it(@"Should set and get correctly", ^ {
+ it(@"should correctly initialize with init", ^ {
SDLOnVehicleData* testNotification = [[SDLOnVehicleData alloc] init];
testNotification.accPedalPosition = @99.99999999;
@@ -217,6 +217,15 @@ describe(@"Getter/Setter Tests", ^ {
expect(testNotification.vin).to(beNil());
expect(testNotification.wiperStatus).to(beNil());
});
+
+ it(@"Should set and get generic Network Signal Data", ^{
+ SDLOnVehicleData *testRequest = [[SDLOnVehicleData alloc] init];
+
+ [testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:@"oemVehicleData"];
+
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@"oemVehicleData"));
+
+ });
});
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/RequestSpecs/SDLGetVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
index eab7f6210..bcf32d76c 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
@@ -290,6 +290,18 @@ describe(@"initializers", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
});
+
+ context(@"Should set and get Generic Network Signal Data", ^{
+ SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] init];
+
+ [testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData" withVehicleDataState:NO];
+ [testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData1" withVehicleDataState:YES];
+
+ expect([testRequest getOEMCustomVehicleData:@"OEMCustomVehicleData"]).to(beFalse());
+ expect([testRequest getOEMCustomVehicleData:@"OEMCustomVehicleData1"]).to(beTrue());
+
+ });
+
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
index b4d677936..b69336d23 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
@@ -290,6 +290,17 @@ describe(@"initializers", ^{
expect(testRequest.wiperStatus).to(equal(@YES));
#pragma clang diagnostic pop
});
+
+ context(@"Should set and get Generic Network Signal Data", ^{
+ SDLSubscribeVehicleData *testRequest = [[SDLSubscribeVehicleData alloc] init];
+
+ [testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:NO];
+ [testRequest setOEMCustomVehicleData:@"customVehicleData1" withVehicleDataState:YES];
+
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(beFalse());
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData1"]).to(beTrue());
+
+ });
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
index adb9307bd..9795f6a29 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
@@ -288,6 +288,17 @@ describe(@"initializers", ^{
expect(testRequest.wiperStatus).to(equal(@YES));
#pragma clang diagnostic pop
});
+
+ context(@"Should set and get Generic Network Signal Data", ^{
+ SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] init];
+
+ [testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:NO];
+ [testRequest setOEMCustomVehicleData:@"customVehicleData1" withVehicleDataState:YES];
+
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(beFalse());
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData1"]).to(beTrue());
+
+ });
});
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/SDLGetVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
index ed1db8343..72df4207b 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
@@ -220,6 +220,14 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.vin).to(beNil());
expect(testResponse.wiperStatus).to(beNil());
});
+
+ it(@"Should set and get Generic Network Signal Data", ^{
+ SDLGetVehicleDataResponse *testRequest = [[SDLGetVehicleDataResponse alloc] init];
+
+ [testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:@"oemVehicleData"];
+
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@"oemVehicleData"));
+ });
});
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/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
index 6b1f4303b..1b8dc5b6d 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
@@ -12,11 +12,14 @@
#import "SDLRPCFunctionNames.h"
#import "SDLSubscribeVehicleDataResponse.h"
#import "SDLVehicleDataResult.h"
+#import "SDLVehicleDataResultCode.h"
QuickSpecBegin(SDLSubscribeVehicleDataResponseSpec)
SDLVehicleDataResult* vehicleDataResult = [[SDLVehicleDataResult alloc] init];
+SDLVehicleDataResult* customOEMvehicleDataResult = [[SDLVehicleDataResult alloc] initWithCustomOEMDataType:@"customOEMVehicleData" resultCode:SDLVehicleDataResultCodeSuccess];
+
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
@@ -185,6 +188,14 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.turnSignal).to(beNil());
expect(testResponse.wiperStatus).to(beNil());
});
+
+ it(@"Should set and get Generic Network Signal Data", ^{
+ SDLSubscribeVehicleDataResponse *testRequest = [[SDLSubscribeVehicleDataResponse alloc] init];
+
+ [testRequest setOEMCustomVehicleData:@"customOEMVehicleData" withVehicleDataState:customOEMvehicleDataResult];
+
+ expect([testRequest getOEMCustomVehicleData:@"customOEMVehicleData"]).to(equal(customOEMvehicleDataResult));
+ });
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
index 8e91afc1d..3f6302e4b 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
@@ -12,11 +12,12 @@
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
#import "SDLVehicleDataResult.h"
-
+#import "SDLVehicleDataResultCode.h"
QuickSpecBegin(SDLUnsubscribeVehicleDataResponseSpec)
SDLVehicleDataResult* vehicleDataResult = [[SDLVehicleDataResult alloc] init];
+SDLVehicleDataResult* customOEMvehicleDataResult = [[SDLVehicleDataResult alloc] initWithCustomOEMDataType:@"customOEMVehicleData" resultCode:SDLVehicleDataResultCodeSuccess];
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
@@ -186,6 +187,14 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.turnSignal).to(beNil());
expect(testResponse.cloudAppVehicleID).to(beNil());
});
+
+ it(@"Should set and get Generic Network Signal Data", ^{
+ SDLUnsubscribeVehicleDataResponse *testRequest = [[SDLUnsubscribeVehicleDataResponse alloc] init];
+
+ [testRequest setOEMCustomVehicleData:@"customOEMVehicleData" withVehicleDataState:customOEMvehicleDataResult];
+
+ expect([testRequest getOEMCustomVehicleData:@"customOEMVehicleData"]).to(equal(customOEMvehicleDataResult));
+ });
});
QuickSpecEnd
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/SDLVehicleDataResultSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleDataResultSpec.m
index 8a504b85b..a07efa5a3 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleDataResultSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleDataResultSpec.m
@@ -16,25 +16,44 @@
QuickSpecBegin(SDLVehicleDataResultSpec)
describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+ it(@"should correctly initialize with init", ^ {
SDLVehicleDataResult* testStruct = [[SDLVehicleDataResult alloc] init];
testStruct.dataType = SDLVehicleDataTypeAirbagStatus;
+ testStruct.customOEMDataType = @"CustomOEMData";
testStruct.resultCode = SDLVehicleDataResultCodeDisallowed;
expect(testStruct.dataType).to(equal(SDLVehicleDataTypeAirbagStatus));
+ expect(testStruct.customOEMDataType).to(equal(@"CustomOEMData"));
+ expect(testStruct.resultCode).to(equal(SDLVehicleDataResultCodeDisallowed));
+ });
+
+ it(@"should correctly initialize with initWithDataType", ^ {
+ SDLVehicleDataResult* testStruct = [[SDLVehicleDataResult alloc] initWithDataType:SDLVehicleDataTypeAirbagStatus resultCode:SDLVehicleDataResultCodeDisallowed];
+
+ expect(testStruct.dataType).to(equal(SDLVehicleDataTypeAirbagStatus));
+ expect(testStruct.resultCode).to(equal(SDLVehicleDataResultCodeDisallowed));
+ });
+
+ it(@"should correctly initialize with initWithCustomOEMDataType", ^ {
+ SDLVehicleDataResult* testStruct = [[SDLVehicleDataResult alloc] initWithCustomOEMDataType:@"CustomOEMData" resultCode:SDLVehicleDataResultCodeDisallowed];
+
+ expect(testStruct.customOEMDataType).to(equal(@"CustomOEMData"));
expect(testStruct.resultCode).to(equal(SDLVehicleDataResultCodeDisallowed));
});
it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameDataType:SDLVehicleDataTypeAirbagStatus,
- SDLRPCParameterNameResultCode:SDLVehicleDataResultCodeDisallowed} mutableCopy];
+ NSDictionary* dict = [@{SDLRPCParameterNameDataType:SDLVehicleDataTypeAirbagStatus,
+ SDLRPCParameterNameResultCode:SDLVehicleDataResultCodeDisallowed,
+ SDLRPCParameterNameOEMCustomDataType:@"CustomOEMData"
+ } mutableCopy];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLVehicleDataResult* testStruct = [[SDLVehicleDataResult alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
expect(testStruct.dataType).to(equal(SDLVehicleDataTypeAirbagStatus));
+ expect(testStruct.customOEMDataType).to(equal(@"CustomOEMData"));
expect(testStruct.resultCode).to(equal(SDLVehicleDataResultCodeDisallowed));
});
@@ -42,6 +61,7 @@ describe(@"Getter/Setter Tests", ^ {
SDLVehicleDataResult* testStruct = [[SDLVehicleDataResult alloc] init];
expect(testStruct.dataType).to(beNil());
+ expect(testStruct.customOEMDataType).to(beNil());
expect(testStruct.resultCode).to(beNil());
});
});
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/SDLSoftButtonObjectSpec.m b/SmartDeviceLinkTests/SDLSoftButtonObjectSpec.m
index 6122c6a8b..201b08dd3 100644
--- a/SmartDeviceLinkTests/SDLSoftButtonObjectSpec.m
+++ b/SmartDeviceLinkTests/SDLSoftButtonObjectSpec.m
@@ -2,6 +2,7 @@
#import <Nimble/Nimble.h>
#import <OCMock/OCMock.h>
+#import "SDLArtwork.h"
#import "SDLSoftButton.h"
#import "SDLSoftButtonObject.h"
#import "SDLSoftButtonState.h"
@@ -45,6 +46,36 @@ describe(@"a soft button object", ^{
});
});
+ context(@"with a single state implicitly created", ^{
+ NSString *testText = @"Hello";
+ SDLArtwork *testArt = [[SDLArtwork alloc] initWithStaticIcon:SDLStaticIconNameKey];
+
+ beforeEach(^{
+ testObject = [[SDLSoftButtonObject alloc] initWithName:testObjectName text:testText artwork:testArt handler:nil];
+ });
+
+ it(@"should create correctly", ^{
+ expect(testObject.name).to(equal(testObjectName));
+ expect(testObject.currentState.name).to(equal(testObjectName));
+ expect(testObject.currentState.text).to(equal(testText));
+ expect(testObject.currentState.artwork).to(equal(testArt));
+ expect(testObject.states).to(haveCount(1));
+ });
+
+ it(@"should not allow transitioning to another state", ^{
+ BOOL performedTransition = [testObject transitionToStateNamed:@"Some other state"];
+ expect(performedTransition).to(beFalse());
+ });
+
+ it(@"should return a state when asked and not when incorrect", ^{
+ SDLSoftButtonState *returnedState = [testObject stateWithName:testObjectName];
+ expect(returnedState).toNot(beNil());
+
+ returnedState = [testObject stateWithName:@"Some other state"];
+ expect(returnedState).to(beNil());
+ });
+ });
+
context(@"with multiple states", ^{
__block SDLSoftButtonState *testFirstState = OCMClassMock([SDLSoftButtonState class]);
__block NSString *testFirstStateName = @"Test First Name";
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;