summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSho Amano <samano@xevo.com>2018-09-26 11:02:23 +0900
committerSho Amano <samano@xevo.com>2018-09-26 11:02:23 +0900
commit0bb6170e002fa13ac3c3bc39e8baa1e6ba7ac2b4 (patch)
tree4973697f32e6bf526e8a5496a14e2dcef07adecc
parent518015176789e425626989205cf0659616f63be8 (diff)
parent3aebf547fbe8ff12d9a28cdf8ad4fb20541c3e7f (diff)
downloadsdl_ios-0bb6170e002fa13ac3c3bc39e8baa1e6ba7ac2b4.tar.gz
Merge branch 'develop' into feature/multiple_transports
Conflicts: SmartDeviceLink/SDLGlobals.m
-rw-r--r--CHANGELOG.md5
-rw-r--r--Cartfile.resolved6
-rw-r--r--Example Apps/Example ObjC/AlertManager.h (renamed from SmartDeviceLink_Example/AlertManager.h)0
-rw-r--r--Example Apps/Example ObjC/AlertManager.m (renamed from SmartDeviceLink_Example/AlertManager.m)0
-rw-r--r--Example Apps/Example ObjC/AppDelegate.h (renamed from SmartDeviceLink_Example/AppDelegate.h)0
-rw-r--r--Example Apps/Example ObjC/AppDelegate.m (renamed from SmartDeviceLink_Example/AppDelegate.m)0
-rw-r--r--Example Apps/Example ObjC/AudioManager.h (renamed from SmartDeviceLink_Example/AudioManager.h)0
-rw-r--r--Example Apps/Example ObjC/AudioManager.m (renamed from SmartDeviceLink_Example/AudioManager.m)0
-rw-r--r--Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard (renamed from SmartDeviceLink_Example/Base.lproj/ConnectionIAPTableViewController.storyboard)0
-rw-r--r--Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard (renamed from SmartDeviceLink_Example/Base.lproj/ConnectionTCPTableViewController.storyboard)0
-rw-r--r--Example Apps/Example ObjC/Base.lproj/LaunchScreen.xib (renamed from SmartDeviceLink_Example/Base.lproj/LaunchScreen.xib)0
-rw-r--r--Example Apps/Example ObjC/Base.lproj/Main.storyboard (renamed from SmartDeviceLink_Example/Base.lproj/Main.storyboard)0
-rw-r--r--Example Apps/Example ObjC/ButtonManager.h (renamed from SmartDeviceLink_Example/ButtonManager.h)0
-rw-r--r--Example Apps/Example ObjC/ButtonManager.m (renamed from SmartDeviceLink_Example/ButtonManager.m)0
-rw-r--r--Example Apps/Example ObjC/ConnectionAnimatedTransition.h (renamed from SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.h)0
-rw-r--r--Example Apps/Example ObjC/ConnectionAnimatedTransition.m (renamed from SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.m)0
-rw-r--r--Example Apps/Example ObjC/ConnectionContainerViewController.h (renamed from SmartDeviceLink_Example/Classes/ConnectionContainerViewController.h)0
-rw-r--r--Example Apps/Example ObjC/ConnectionContainerViewController.m (renamed from SmartDeviceLink_Example/Classes/ConnectionContainerViewController.m)0
-rw-r--r--Example Apps/Example ObjC/ConnectionIAPTableViewController.h (renamed from SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.h)0
-rw-r--r--Example Apps/Example ObjC/ConnectionIAPTableViewController.m (renamed from SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.m)0
-rw-r--r--Example Apps/Example ObjC/ConnectionTCPTableViewController.h (renamed from SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.h)0
-rw-r--r--Example Apps/Example ObjC/ConnectionTCPTableViewController.m (renamed from SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m)0
-rw-r--r--Example Apps/Example ObjC/ConnectionTransitionContext.h (renamed from SmartDeviceLink_Example/Classes/ConnectionTransitionContext.h)0
-rw-r--r--Example Apps/Example ObjC/ConnectionTransitionContext.m (renamed from SmartDeviceLink_Example/Classes/ConnectionTransitionContext.m)0
-rw-r--r--Example Apps/Example ObjC/MenuManager.h (renamed from SmartDeviceLink_Example/MenuManager.h)0
-rw-r--r--Example Apps/Example ObjC/MenuManager.m (renamed from SmartDeviceLink_Example/MenuManager.m)0
-rw-r--r--Example Apps/Example ObjC/PerformInteractionManager.h (renamed from SmartDeviceLink_Example/PerformInteractionManager.h)0
-rw-r--r--Example Apps/Example ObjC/PerformInteractionManager.m (renamed from SmartDeviceLink_Example/PerformInteractionManager.m)0
-rw-r--r--Example Apps/Example ObjC/Preferences.h (renamed from SmartDeviceLink_Example/Classes/Preferences.h)0
-rw-r--r--Example Apps/Example ObjC/Preferences.m (renamed from SmartDeviceLink_Example/Classes/Preferences.m)0
-rw-r--r--Example Apps/Example ObjC/ProxyManager.h (renamed from SmartDeviceLink_Example/Classes/ProxyManager.h)0
-rw-r--r--Example Apps/Example ObjC/ProxyManager.m (renamed from SmartDeviceLink_Example/Classes/ProxyManager.m)6
-rw-r--r--Example Apps/Example ObjC/RPCPermissionsManager.h (renamed from SmartDeviceLink_Example/RPCPermissionsManager.h)0
-rw-r--r--Example Apps/Example ObjC/RPCPermissionsManager.m (renamed from SmartDeviceLink_Example/RPCPermissionsManager.m)0
-rw-r--r--Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist (renamed from SmartDeviceLink_Example/SmartDeviceLink-Example-ObjC-Info.plist)2
-rw-r--r--Example Apps/Example ObjC/TextValidator.h (renamed from SmartDeviceLink_Example/TextValidator.h)0
-rw-r--r--Example Apps/Example ObjC/TextValidator.m (renamed from SmartDeviceLink_Example/TextValidator.m)0
-rw-r--r--Example Apps/Example ObjC/VehicleDataManager.h (renamed from SmartDeviceLink_Example/VehicleDataManager.h)0
-rw-r--r--Example Apps/Example ObjC/VehicleDataManager.m (renamed from SmartDeviceLink_Example/VehicleDataManager.m)0
-rw-r--r--Example Apps/Example ObjC/main.m (renamed from SmartDeviceLink_Example/Classes/main.m)0
-rw-r--r--Example Apps/Example Swift/AlertManager.swift (renamed from SmartDeviceLink_Example/AlertManager.swift)0
-rw-r--r--Example Apps/Example Swift/AppDelegate.swift (renamed from SmartDeviceLink_Example/AppDelegate.swift)0
-rw-r--r--Example Apps/Example Swift/AppUserDefaults.swift (renamed from SmartDeviceLink_Example/AppUserDefaults.swift)0
-rw-r--r--Example Apps/Example Swift/AudioManager.swift (renamed from SmartDeviceLink_Example/AudioManager.swift)0
-rw-r--r--Example Apps/Example Swift/ButtonManager.swift (renamed from SmartDeviceLink_Example/ButtonManager.swift)0
-rw-r--r--Example Apps/Example Swift/ConnectionContainerViewController.swift (renamed from SmartDeviceLink_Example/ConnectionContainerViewController.swift)0
-rw-r--r--Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard (renamed from SmartDeviceLink_Example/ConnectionIAPTableViewController.storyboard)0
-rw-r--r--Example Apps/Example Swift/ConnectionIAPTableViewController.swift (renamed from SmartDeviceLink_Example/ConnectionIAPTableViewController.swift)0
-rw-r--r--Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard (renamed from SmartDeviceLink_Example/ConnectionTCPTableViewController.storyboard)0
-rw-r--r--Example Apps/Example Swift/ConnectionTCPTableViewController.swift (renamed from SmartDeviceLink_Example/ConnectionTCPTableViewController.swift)0
-rw-r--r--Example Apps/Example Swift/LaunchScreen.xib (renamed from SmartDeviceLink_Example/LaunchScreen.xib)0
-rw-r--r--Example Apps/Example Swift/Main.storyboard (renamed from SmartDeviceLink_Example/Main.storyboard)0
-rw-r--r--Example Apps/Example Swift/MenuManager.swift (renamed from SmartDeviceLink_Example/MenuManager.swift)0
-rw-r--r--Example Apps/Example Swift/PerformInteractionManager.swift (renamed from SmartDeviceLink_Example/PerformInteractionManager.swift)0
-rw-r--r--Example Apps/Example Swift/Protocol+ProxyManagerDelegate.swift (renamed from SmartDeviceLink_Example/Protocol+ProxyManagerDelegate.swift)0
-rw-r--r--Example Apps/Example Swift/ProxyManager.swift (renamed from SmartDeviceLink_Example/ProxyManager.swift)4
-rw-r--r--Example Apps/Example Swift/RPCPermissionsManager.swift (renamed from SmartDeviceLink_Example/RPCPermissionsManager.swift)0
-rw-r--r--Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h (renamed from SmartDeviceLink_Example/SmartDeviceLink-Example-Swift-Bridging-Header.h)0
-rw-r--r--Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist (renamed from SmartDeviceLink-Example-Swift-Info.plist)2
-rw-r--r--Example Apps/Example Swift/TextValidator.swift (renamed from SmartDeviceLink_Example/TextValidator.swift)0
-rw-r--r--Example Apps/Example Swift/VehicleDataManager.swift (renamed from SmartDeviceLink_Example/VehicleDataManager.swift)0
-rw-r--r--Example Apps/Shared/AppConstants.h (renamed from SmartDeviceLink_Example/AppConstants.h)2
-rw-r--r--Example Apps/Shared/AppConstants.m (renamed from SmartDeviceLink_Example/AppConstants.m)2
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png (renamed from SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png)bin5279 -> 5279 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png (renamed from SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png)bin5279 -> 5279 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png (renamed from SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png)bin8132 -> 8132 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png (renamed from SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png)bin3537 -> 3537 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png (renamed from SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png)bin2403 -> 2403 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png (renamed from SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png)bin3728 -> 3728 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/alert.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/alert.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/alert.imageset/alert.png (renamed from SmartDeviceLink_Example/Images.xcassets/alert.imageset/alert.png)bin1287 -> 1287 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/car.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/car.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/car.imageset/iconmonstr-car-1-64.png (renamed from SmartDeviceLink_Example/Images.xcassets/car.imageset/iconmonstr-car-1-64.png)bin1381 -> 1381 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/choice_set.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/choice_set.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/choice_set.imageset/iconmonstr-text-23-64.png (renamed from SmartDeviceLink_Example/Images.xcassets/choice_set.imageset/iconmonstr-text-23-64.png)bin224 -> 224 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/microphone.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/microphone.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/microphone.imageset/microphone.png (renamed from SmartDeviceLink_Example/Images.xcassets/microphone.imageset/microphone.png)bin2608 -> 2608 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/phone.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/phone.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/phone.imageset/phone.png (renamed from SmartDeviceLink_Example/Images.xcassets/phone.imageset/phone.png)bin3434 -> 3434 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green.png (renamed from SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green.png)bin6530 -> 6530 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@2x.png (renamed from SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@2x.png)bin13966 -> 13966 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@3x.png (renamed from SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@3x.png)bin22723 -> 22723 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/speak.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/speak.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/speak.imageset/iconmonstr-speech-bubble-5-64.png (renamed from SmartDeviceLink_Example/Images.xcassets/speak.imageset/iconmonstr-speech-bubble-5-64.png)bin1502 -> 1502 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/toggle_off.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/toggle_off.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/toggle_off.imageset/toggle_off.png (renamed from SmartDeviceLink_Example/Images.xcassets/toggle_off.imageset/toggle_off.png)bin1495 -> 1495 bytes
-rw-r--r--Example Apps/Shared/Images.xcassets/toggle_on.imageset/Contents.json (renamed from SmartDeviceLink_Example/Images.xcassets/toggle_on.imageset/Contents.json)0
-rw-r--r--Example Apps/Shared/Images.xcassets/toggle_on.imageset/toggle_on.png (renamed from SmartDeviceLink_Example/Images.xcassets/toggle_on.imageset/toggle_on.png)bin1869 -> 1869 bytes
-rw-r--r--README.md16
-rw-r--r--SmartDeviceLink-iOS.podspec4
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj498
-rw-r--r--SmartDeviceLink.podspec18
-rw-r--r--SmartDeviceLink/Info.plist2
-rw-r--r--SmartDeviceLink/NSMutableArray+Safe.h15
-rw-r--r--SmartDeviceLink/NSMutableArray+Safe.m19
-rw-r--r--SmartDeviceLink/NSMutableDictionary+SafeRemove.h14
-rw-r--r--SmartDeviceLink/NSMutableDictionary+Store.h2
-rw-r--r--SmartDeviceLink/NSMutableDictionary+Store.m6
-rw-r--r--SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m9
-rw-r--r--SmartDeviceLink/SDLButtonName.h7
-rw-r--r--SmartDeviceLink/SDLButtonName.m1
-rw-r--r--SmartDeviceLink/SDLChoice.h10
-rw-r--r--SmartDeviceLink/SDLChoice.m8
-rw-r--r--SmartDeviceLink/SDLChoiceSet.m24
-rw-r--r--SmartDeviceLink/SDLChoiceSetManager.m5
-rw-r--r--SmartDeviceLink/SDLDeleteFileOperation.m29
-rw-r--r--SmartDeviceLink/SDLDeleteFileResponse.h2
-rw-r--r--SmartDeviceLink/SDLDeleteFileResponse.m4
-rw-r--r--SmartDeviceLink/SDLEqualizerSettings.h2
-rw-r--r--SmartDeviceLink/SDLEqualizerSettings.m5
-rw-r--r--SmartDeviceLink/SDLFileManager.m10
-rw-r--r--SmartDeviceLink/SDLGPSData.h64
-rw-r--r--SmartDeviceLink/SDLGPSData.m64
-rw-r--r--SmartDeviceLink/SDLGPSLocation.h40
-rw-r--r--SmartDeviceLink/SDLGPSLocation.m54
-rw-r--r--SmartDeviceLink/SDLGlobals.h7
-rw-r--r--SmartDeviceLink/SDLGlobals.m8
-rw-r--r--SmartDeviceLink/SDLLifecycleConfiguration.h51
-rw-r--r--SmartDeviceLink/SDLLifecycleConfiguration.m64
-rw-r--r--SmartDeviceLink/SDLLifecycleManager.m4
-rw-r--r--SmartDeviceLink/SDLLightCapabilities.h8
-rw-r--r--SmartDeviceLink/SDLLightCapabilities.m12
-rw-r--r--SmartDeviceLink/SDLLightControlData.h2
-rw-r--r--SmartDeviceLink/SDLLightControlData.m2
-rw-r--r--SmartDeviceLink/SDLLightName.h8
-rw-r--r--SmartDeviceLink/SDLLightName.m4
-rw-r--r--SmartDeviceLink/SDLLightState.h20
-rw-r--r--SmartDeviceLink/SDLLightState.m27
-rw-r--r--SmartDeviceLink/SDLListFilesOperation.m27
-rw-r--r--SmartDeviceLink/SDLListFilesResponse.h2
-rw-r--r--SmartDeviceLink/SDLListFilesResponse.m4
-rw-r--r--SmartDeviceLink/SDLLockScreenConfiguration.h8
-rw-r--r--SmartDeviceLink/SDLLockScreenManager.m2
-rw-r--r--SmartDeviceLink/SDLManager.m2
-rw-r--r--SmartDeviceLink/SDLMenuManager.m14
-rw-r--r--SmartDeviceLink/SDLNames.h5
-rw-r--r--SmartDeviceLink/SDLNames.m5
-rw-r--r--SmartDeviceLink/SDLProxy.m218
-rw-r--r--SmartDeviceLink/SDLPutFileResponse.h2
-rw-r--r--SmartDeviceLink/SDLPutFileResponse.m4
-rw-r--r--SmartDeviceLink/SDLRPCMessage.h2
-rw-r--r--SmartDeviceLink/SDLRPCMessage.m15
-rw-r--r--SmartDeviceLink/SDLRPCStruct.m26
-rw-r--r--SmartDeviceLink/SDLRadioControlData.h4
-rw-r--r--SmartDeviceLink/SDLRadioControlData.m4
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterface.h184
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterface.m36
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterfaceResponse.m2
-rw-r--r--SmartDeviceLink/SDLResponseDispatcher.m23
-rw-r--r--SmartDeviceLink/SDLSISData.h8
-rw-r--r--SmartDeviceLink/SDLSISData.m10
-rw-r--r--SmartDeviceLink/SDLSRGBColor.h35
-rw-r--r--SmartDeviceLink/SDLSRGBColor.m52
-rw-r--r--SmartDeviceLink/SDLUploadFileOperation.m7
-rw-r--r--SmartDeviceLink/SDLV2ProtocolMessage.m4
-rw-r--r--SmartDeviceLink/SmartDeviceLink.h2
-rw-r--r--SmartDeviceLinkSwift/Info.plist2
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLAsynchronousRPCRequestOperationSpec.m29
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m22
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m4
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m75
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m428
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m1
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m56
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m17
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m11
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLV2ProtocolMessageSpec.m36
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLightNameSpec.m4
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m396
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m8
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSLocationSpec.m70
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m14
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m34
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m22
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSDLSRGBColorSpec.m63
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m5
-rw-r--r--SmartDeviceLinkTests/SDLLifecycleConfigurationUpdateSpec.m76
-rw-r--r--SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m20
182 files changed, 1799 insertions, 1481 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f4d0bc5fa..6b3f4cdc5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 6.0.2
+
+### Bug Fixes
+* Video streaming apps put into a phone background state can now properly stop the video streaming when it leaves a streamable HMI state. (#1047)
+
# 6.0.1
### Bug Fixes
diff --git a/Cartfile.resolved b/Cartfile.resolved
index 20086137a..45a305d09 100644
--- a/Cartfile.resolved
+++ b/Cartfile.resolved
@@ -1,4 +1,4 @@
-github "Quick/Nimble" "v7.0.3"
-github "Quick/Quick" "v1.2.0"
-github "erikdoe/ocmock" "v3.4.1"
+github "Quick/Nimble" "v7.3.0"
+github "Quick/Quick" "v1.3.1"
+github "erikdoe/ocmock" "v3.4.2"
github "facebook/ios-snapshot-test-case" "2.1.4"
diff --git a/SmartDeviceLink_Example/AlertManager.h b/Example Apps/Example ObjC/AlertManager.h
index 1d4471b95..1d4471b95 100644
--- a/SmartDeviceLink_Example/AlertManager.h
+++ b/Example Apps/Example ObjC/AlertManager.h
diff --git a/SmartDeviceLink_Example/AlertManager.m b/Example Apps/Example ObjC/AlertManager.m
index cab877a5e..cab877a5e 100644
--- a/SmartDeviceLink_Example/AlertManager.m
+++ b/Example Apps/Example ObjC/AlertManager.m
diff --git a/SmartDeviceLink_Example/AppDelegate.h b/Example Apps/Example ObjC/AppDelegate.h
index b86efb1a6..b86efb1a6 100644
--- a/SmartDeviceLink_Example/AppDelegate.h
+++ b/Example Apps/Example ObjC/AppDelegate.h
diff --git a/SmartDeviceLink_Example/AppDelegate.m b/Example Apps/Example ObjC/AppDelegate.m
index 1ceb6f765..1ceb6f765 100644
--- a/SmartDeviceLink_Example/AppDelegate.m
+++ b/Example Apps/Example ObjC/AppDelegate.m
diff --git a/SmartDeviceLink_Example/AudioManager.h b/Example Apps/Example ObjC/AudioManager.h
index b02138e2c..b02138e2c 100644
--- a/SmartDeviceLink_Example/AudioManager.h
+++ b/Example Apps/Example ObjC/AudioManager.h
diff --git a/SmartDeviceLink_Example/AudioManager.m b/Example Apps/Example ObjC/AudioManager.m
index 6d1b66c48..6d1b66c48 100644
--- a/SmartDeviceLink_Example/AudioManager.m
+++ b/Example Apps/Example ObjC/AudioManager.m
diff --git a/SmartDeviceLink_Example/Base.lproj/ConnectionIAPTableViewController.storyboard b/Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard
index d8a88f6de..d8a88f6de 100644
--- a/SmartDeviceLink_Example/Base.lproj/ConnectionIAPTableViewController.storyboard
+++ b/Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard
diff --git a/SmartDeviceLink_Example/Base.lproj/ConnectionTCPTableViewController.storyboard b/Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard
index 2eca0e73a..2eca0e73a 100644
--- a/SmartDeviceLink_Example/Base.lproj/ConnectionTCPTableViewController.storyboard
+++ b/Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard
diff --git a/SmartDeviceLink_Example/Base.lproj/LaunchScreen.xib b/Example Apps/Example ObjC/Base.lproj/LaunchScreen.xib
index c1427dc91..c1427dc91 100644
--- a/SmartDeviceLink_Example/Base.lproj/LaunchScreen.xib
+++ b/Example Apps/Example ObjC/Base.lproj/LaunchScreen.xib
diff --git a/SmartDeviceLink_Example/Base.lproj/Main.storyboard b/Example Apps/Example ObjC/Base.lproj/Main.storyboard
index 34ff3123e..34ff3123e 100644
--- a/SmartDeviceLink_Example/Base.lproj/Main.storyboard
+++ b/Example Apps/Example ObjC/Base.lproj/Main.storyboard
diff --git a/SmartDeviceLink_Example/ButtonManager.h b/Example Apps/Example ObjC/ButtonManager.h
index 867f50c7c..867f50c7c 100644
--- a/SmartDeviceLink_Example/ButtonManager.h
+++ b/Example Apps/Example ObjC/ButtonManager.h
diff --git a/SmartDeviceLink_Example/ButtonManager.m b/Example Apps/Example ObjC/ButtonManager.m
index 9c7a0779f..9c7a0779f 100644
--- a/SmartDeviceLink_Example/ButtonManager.m
+++ b/Example Apps/Example ObjC/ButtonManager.m
diff --git a/SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.h b/Example Apps/Example ObjC/ConnectionAnimatedTransition.h
index a09f1fa77..a09f1fa77 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.h
+++ b/Example Apps/Example ObjC/ConnectionAnimatedTransition.h
diff --git a/SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.m b/Example Apps/Example ObjC/ConnectionAnimatedTransition.m
index 1a4d4d141..1a4d4d141 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.m
+++ b/Example Apps/Example ObjC/ConnectionAnimatedTransition.m
diff --git a/SmartDeviceLink_Example/Classes/ConnectionContainerViewController.h b/Example Apps/Example ObjC/ConnectionContainerViewController.h
index 4e2d1ea32..4e2d1ea32 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionContainerViewController.h
+++ b/Example Apps/Example ObjC/ConnectionContainerViewController.h
diff --git a/SmartDeviceLink_Example/Classes/ConnectionContainerViewController.m b/Example Apps/Example ObjC/ConnectionContainerViewController.m
index 544a9f3c9..544a9f3c9 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionContainerViewController.m
+++ b/Example Apps/Example ObjC/ConnectionContainerViewController.m
diff --git a/SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.h b/Example Apps/Example ObjC/ConnectionIAPTableViewController.h
index 5ebb3801c..5ebb3801c 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.h
+++ b/Example Apps/Example ObjC/ConnectionIAPTableViewController.h
diff --git a/SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.m b/Example Apps/Example ObjC/ConnectionIAPTableViewController.m
index 31a0f3fdf..31a0f3fdf 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.m
+++ b/Example Apps/Example ObjC/ConnectionIAPTableViewController.m
diff --git a/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.h b/Example Apps/Example ObjC/ConnectionTCPTableViewController.h
index 8414dfcfc..8414dfcfc 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.h
+++ b/Example Apps/Example ObjC/ConnectionTCPTableViewController.h
diff --git a/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m b/Example Apps/Example ObjC/ConnectionTCPTableViewController.m
index e567eb44e..e567eb44e 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m
+++ b/Example Apps/Example ObjC/ConnectionTCPTableViewController.m
diff --git a/SmartDeviceLink_Example/Classes/ConnectionTransitionContext.h b/Example Apps/Example ObjC/ConnectionTransitionContext.h
index eda85adef..eda85adef 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionTransitionContext.h
+++ b/Example Apps/Example ObjC/ConnectionTransitionContext.h
diff --git a/SmartDeviceLink_Example/Classes/ConnectionTransitionContext.m b/Example Apps/Example ObjC/ConnectionTransitionContext.m
index e46e19a10..e46e19a10 100644
--- a/SmartDeviceLink_Example/Classes/ConnectionTransitionContext.m
+++ b/Example Apps/Example ObjC/ConnectionTransitionContext.m
diff --git a/SmartDeviceLink_Example/MenuManager.h b/Example Apps/Example ObjC/MenuManager.h
index a7c1404c1..a7c1404c1 100644
--- a/SmartDeviceLink_Example/MenuManager.h
+++ b/Example Apps/Example ObjC/MenuManager.h
diff --git a/SmartDeviceLink_Example/MenuManager.m b/Example Apps/Example ObjC/MenuManager.m
index 083d368d8..083d368d8 100644
--- a/SmartDeviceLink_Example/MenuManager.m
+++ b/Example Apps/Example ObjC/MenuManager.m
diff --git a/SmartDeviceLink_Example/PerformInteractionManager.h b/Example Apps/Example ObjC/PerformInteractionManager.h
index 740b3f2c1..740b3f2c1 100644
--- a/SmartDeviceLink_Example/PerformInteractionManager.h
+++ b/Example Apps/Example ObjC/PerformInteractionManager.h
diff --git a/SmartDeviceLink_Example/PerformInteractionManager.m b/Example Apps/Example ObjC/PerformInteractionManager.m
index 82c8a6535..82c8a6535 100644
--- a/SmartDeviceLink_Example/PerformInteractionManager.m
+++ b/Example Apps/Example ObjC/PerformInteractionManager.m
diff --git a/SmartDeviceLink_Example/Classes/Preferences.h b/Example Apps/Example ObjC/Preferences.h
index 4a982b7fc..4a982b7fc 100644
--- a/SmartDeviceLink_Example/Classes/Preferences.h
+++ b/Example Apps/Example ObjC/Preferences.h
diff --git a/SmartDeviceLink_Example/Classes/Preferences.m b/Example Apps/Example ObjC/Preferences.m
index a3082bd4f..a3082bd4f 100644
--- a/SmartDeviceLink_Example/Classes/Preferences.m
+++ b/Example Apps/Example ObjC/Preferences.m
diff --git a/SmartDeviceLink_Example/Classes/ProxyManager.h b/Example Apps/Example ObjC/ProxyManager.h
index 59872b335..59872b335 100644
--- a/SmartDeviceLink_Example/Classes/ProxyManager.h
+++ b/Example Apps/Example ObjC/ProxyManager.h
diff --git a/SmartDeviceLink_Example/Classes/ProxyManager.m b/Example Apps/Example ObjC/ProxyManager.m
index 7facc514e..317b9cb92 100644
--- a/SmartDeviceLink_Example/Classes/ProxyManager.m
+++ b/Example Apps/Example ObjC/ProxyManager.m
@@ -105,11 +105,11 @@ NS_ASSUME_NONNULL_BEGIN
}
+ (SDLLifecycleConfiguration *)sdlex_iapLifecycleConfiguration {
- return [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration defaultConfigurationWithAppName:ExampleAppName appId:ExampleAppId]];
+ return [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration defaultConfigurationWithAppName:ExampleAppName fullAppId:ExampleFullAppId]];
}
+ (SDLLifecycleConfiguration *)sdlex_tcpLifecycleConfiguration {
- return [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration debugConfigurationWithAppName:ExampleAppName appId:ExampleAppId ipAddress:[Preferences sharedPreferences].ipAddress port:[Preferences sharedPreferences].port]];
+ return [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration debugConfigurationWithAppName:ExampleAppName fullAppId:ExampleFullAppId ipAddress:[Preferences sharedPreferences].ipAddress port:[Preferences sharedPreferences].port]];
}
- (void)sdlex_setupConfigurationWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration {
@@ -129,7 +129,7 @@ NS_ASSUME_NONNULL_BEGIN
config.ttsName = [SDLTTSChunk textChunksFromString:ExampleAppName];
config.language = SDLLanguageEnUs;
config.languagesSupported = @[SDLLanguageEnUs, SDLLanguageFrCa, SDLLanguageEsMx];
- config.appType = SDLAppHMITypeDefault;
+ config.appType = SDLAppHMITypeMedia;
SDLRGBColor *green = [[SDLRGBColor alloc] initWithRed:126 green:188 blue:121];
SDLRGBColor *white = [[SDLRGBColor alloc] initWithRed:249 green:251 blue:254];
diff --git a/SmartDeviceLink_Example/RPCPermissionsManager.h b/Example Apps/Example ObjC/RPCPermissionsManager.h
index 09e321f31..09e321f31 100644
--- a/SmartDeviceLink_Example/RPCPermissionsManager.h
+++ b/Example Apps/Example ObjC/RPCPermissionsManager.h
diff --git a/SmartDeviceLink_Example/RPCPermissionsManager.m b/Example Apps/Example ObjC/RPCPermissionsManager.m
index dc5cf6dfc..dc5cf6dfc 100644
--- a/SmartDeviceLink_Example/RPCPermissionsManager.m
+++ b/Example Apps/Example ObjC/RPCPermissionsManager.m
diff --git a/SmartDeviceLink_Example/SmartDeviceLink-Example-ObjC-Info.plist b/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist
index 571bb0d92..a61e708bb 100644
--- a/SmartDeviceLink_Example/SmartDeviceLink-Example-ObjC-Info.plist
+++ b/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist
@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>6.0.0</string>
+ <string>6.0.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
diff --git a/SmartDeviceLink_Example/TextValidator.h b/Example Apps/Example ObjC/TextValidator.h
index df8a12321..df8a12321 100644
--- a/SmartDeviceLink_Example/TextValidator.h
+++ b/Example Apps/Example ObjC/TextValidator.h
diff --git a/SmartDeviceLink_Example/TextValidator.m b/Example Apps/Example ObjC/TextValidator.m
index 2e14c4797..2e14c4797 100644
--- a/SmartDeviceLink_Example/TextValidator.m
+++ b/Example Apps/Example ObjC/TextValidator.m
diff --git a/SmartDeviceLink_Example/VehicleDataManager.h b/Example Apps/Example ObjC/VehicleDataManager.h
index a32c38992..a32c38992 100644
--- a/SmartDeviceLink_Example/VehicleDataManager.h
+++ b/Example Apps/Example ObjC/VehicleDataManager.h
diff --git a/SmartDeviceLink_Example/VehicleDataManager.m b/Example Apps/Example ObjC/VehicleDataManager.m
index 999a22616..999a22616 100644
--- a/SmartDeviceLink_Example/VehicleDataManager.m
+++ b/Example Apps/Example ObjC/VehicleDataManager.m
diff --git a/SmartDeviceLink_Example/Classes/main.m b/Example Apps/Example ObjC/main.m
index 4566abbdd..4566abbdd 100644
--- a/SmartDeviceLink_Example/Classes/main.m
+++ b/Example Apps/Example ObjC/main.m
diff --git a/SmartDeviceLink_Example/AlertManager.swift b/Example Apps/Example Swift/AlertManager.swift
index c463e7d36..c463e7d36 100644
--- a/SmartDeviceLink_Example/AlertManager.swift
+++ b/Example Apps/Example Swift/AlertManager.swift
diff --git a/SmartDeviceLink_Example/AppDelegate.swift b/Example Apps/Example Swift/AppDelegate.swift
index fd42468d3..fd42468d3 100644
--- a/SmartDeviceLink_Example/AppDelegate.swift
+++ b/Example Apps/Example Swift/AppDelegate.swift
diff --git a/SmartDeviceLink_Example/AppUserDefaults.swift b/Example Apps/Example Swift/AppUserDefaults.swift
index 2589ab467..2589ab467 100644
--- a/SmartDeviceLink_Example/AppUserDefaults.swift
+++ b/Example Apps/Example Swift/AppUserDefaults.swift
diff --git a/SmartDeviceLink_Example/AudioManager.swift b/Example Apps/Example Swift/AudioManager.swift
index a2e80929d..a2e80929d 100644
--- a/SmartDeviceLink_Example/AudioManager.swift
+++ b/Example Apps/Example Swift/AudioManager.swift
diff --git a/SmartDeviceLink_Example/ButtonManager.swift b/Example Apps/Example Swift/ButtonManager.swift
index 2a7b7ccf7..2a7b7ccf7 100644
--- a/SmartDeviceLink_Example/ButtonManager.swift
+++ b/Example Apps/Example Swift/ButtonManager.swift
diff --git a/SmartDeviceLink_Example/ConnectionContainerViewController.swift b/Example Apps/Example Swift/ConnectionContainerViewController.swift
index e990712fa..e990712fa 100644
--- a/SmartDeviceLink_Example/ConnectionContainerViewController.swift
+++ b/Example Apps/Example Swift/ConnectionContainerViewController.swift
diff --git a/SmartDeviceLink_Example/ConnectionIAPTableViewController.storyboard b/Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard
index 44ec1e58b..44ec1e58b 100644
--- a/SmartDeviceLink_Example/ConnectionIAPTableViewController.storyboard
+++ b/Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard
diff --git a/SmartDeviceLink_Example/ConnectionIAPTableViewController.swift b/Example Apps/Example Swift/ConnectionIAPTableViewController.swift
index f5bacb922..f5bacb922 100644
--- a/SmartDeviceLink_Example/ConnectionIAPTableViewController.swift
+++ b/Example Apps/Example Swift/ConnectionIAPTableViewController.swift
diff --git a/SmartDeviceLink_Example/ConnectionTCPTableViewController.storyboard b/Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard
index ff8be7363..ff8be7363 100644
--- a/SmartDeviceLink_Example/ConnectionTCPTableViewController.storyboard
+++ b/Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard
diff --git a/SmartDeviceLink_Example/ConnectionTCPTableViewController.swift b/Example Apps/Example Swift/ConnectionTCPTableViewController.swift
index 3cf1e91c3..3cf1e91c3 100644
--- a/SmartDeviceLink_Example/ConnectionTCPTableViewController.swift
+++ b/Example Apps/Example Swift/ConnectionTCPTableViewController.swift
diff --git a/SmartDeviceLink_Example/LaunchScreen.xib b/Example Apps/Example Swift/LaunchScreen.xib
index fc726aac2..fc726aac2 100644
--- a/SmartDeviceLink_Example/LaunchScreen.xib
+++ b/Example Apps/Example Swift/LaunchScreen.xib
diff --git a/SmartDeviceLink_Example/Main.storyboard b/Example Apps/Example Swift/Main.storyboard
index 7415d792f..7415d792f 100644
--- a/SmartDeviceLink_Example/Main.storyboard
+++ b/Example Apps/Example Swift/Main.storyboard
diff --git a/SmartDeviceLink_Example/MenuManager.swift b/Example Apps/Example Swift/MenuManager.swift
index 959265a74..959265a74 100644
--- a/SmartDeviceLink_Example/MenuManager.swift
+++ b/Example Apps/Example Swift/MenuManager.swift
diff --git a/SmartDeviceLink_Example/PerformInteractionManager.swift b/Example Apps/Example Swift/PerformInteractionManager.swift
index fcf330f86..fcf330f86 100644
--- a/SmartDeviceLink_Example/PerformInteractionManager.swift
+++ b/Example Apps/Example Swift/PerformInteractionManager.swift
diff --git a/SmartDeviceLink_Example/Protocol+ProxyManagerDelegate.swift b/Example Apps/Example Swift/Protocol+ProxyManagerDelegate.swift
index ede7b7701..ede7b7701 100644
--- a/SmartDeviceLink_Example/Protocol+ProxyManagerDelegate.swift
+++ b/Example Apps/Example Swift/Protocol+ProxyManagerDelegate.swift
diff --git a/SmartDeviceLink_Example/ProxyManager.swift b/Example Apps/Example Swift/ProxyManager.swift
index e5c30aeca..3b0ca25a4 100644
--- a/SmartDeviceLink_Example/ProxyManager.swift
+++ b/Example Apps/Example Swift/ProxyManager.swift
@@ -66,7 +66,7 @@ private extension ProxyManager {
///
/// - Returns: A SDLConfiguration object
class func connectIAP() -> SDLConfiguration {
- let lifecycleConfiguration = SDLLifecycleConfiguration(appName: ExampleAppName, appId: ExampleAppId)
+ let lifecycleConfiguration = SDLLifecycleConfiguration(appName: ExampleAppName, fullAppId: ExampleFullAppId)
return setupManagerConfiguration(with: lifecycleConfiguration)
}
@@ -74,7 +74,7 @@ private extension ProxyManager {
///
/// - Returns: A SDLConfiguration object
class func connectTCP() -> SDLConfiguration {
- let lifecycleConfiguration = SDLLifecycleConfiguration(appName: ExampleAppName, appId: ExampleAppId, ipAddress: AppUserDefaults.shared.ipAddress!, port: UInt16(AppUserDefaults.shared.port!)!)
+ let lifecycleConfiguration = SDLLifecycleConfiguration(appName: ExampleAppName, fullAppId: ExampleFullAppId, ipAddress: AppUserDefaults.shared.ipAddress!, port: UInt16(AppUserDefaults.shared.port!)!)
return setupManagerConfiguration(with: lifecycleConfiguration)
}
diff --git a/SmartDeviceLink_Example/RPCPermissionsManager.swift b/Example Apps/Example Swift/RPCPermissionsManager.swift
index 72cdb8019..72cdb8019 100644
--- a/SmartDeviceLink_Example/RPCPermissionsManager.swift
+++ b/Example Apps/Example Swift/RPCPermissionsManager.swift
diff --git a/SmartDeviceLink_Example/SmartDeviceLink-Example-Swift-Bridging-Header.h b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h
index 70ca78854..70ca78854 100644
--- a/SmartDeviceLink_Example/SmartDeviceLink-Example-Swift-Bridging-Header.h
+++ b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h
diff --git a/SmartDeviceLink-Example-Swift-Info.plist b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist
index b458e0df2..81a89f887 100644
--- a/SmartDeviceLink-Example-Swift-Info.plist
+++ b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist
@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>6.0.0</string>
+ <string>6.0.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
diff --git a/SmartDeviceLink_Example/TextValidator.swift b/Example Apps/Example Swift/TextValidator.swift
index 3c0e5645e..3c0e5645e 100644
--- a/SmartDeviceLink_Example/TextValidator.swift
+++ b/Example Apps/Example Swift/TextValidator.swift
diff --git a/SmartDeviceLink_Example/VehicleDataManager.swift b/Example Apps/Example Swift/VehicleDataManager.swift
index 08b2881c3..08b2881c3 100644
--- a/SmartDeviceLink_Example/VehicleDataManager.swift
+++ b/Example Apps/Example Swift/VehicleDataManager.swift
diff --git a/SmartDeviceLink_Example/AppConstants.h b/Example Apps/Shared/AppConstants.h
index 649909d43..4ec2851b1 100644
--- a/SmartDeviceLink_Example/AppConstants.h
+++ b/Example Apps/Shared/AppConstants.h
@@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
extern NSString * const ExampleAppName;
extern NSString * const ExampleAppNameShort;
extern NSString * const ExampleAppNameTTS;
-extern NSString * const ExampleAppId;
+extern NSString * const ExampleFullAppId;
extern BOOL const ExampleAppShouldRestartSDLManagerOnDisconnect;
#pragma mark - SDL Textfields
diff --git a/SmartDeviceLink_Example/AppConstants.m b/Example Apps/Shared/AppConstants.m
index 490016105..016985ff2 100644
--- a/SmartDeviceLink_Example/AppConstants.m
+++ b/Example Apps/Shared/AppConstants.m
@@ -12,7 +12,7 @@
NSString * const ExampleAppName = @"SDL Example App";
NSString * const ExampleAppNameShort = @"SDL";
NSString * const ExampleAppNameTTS = @"S D L Example App";
-NSString * const ExampleAppId = @"9c21";
+NSString * const ExampleFullAppId = @"123e4567-e89b-12d3-a456-426655440000"; // Dummy App Id
BOOL const ExampleAppShouldRestartSDLManagerOnDisconnect = NO;
#pragma mark - SDL Textfields
diff --git a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Contents.json b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json
index 997a0f138..997a0f138 100644
--- a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png
index 96eb6cf4e..96eb6cf4e 100644
--- a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
index 96eb6cf4e..96eb6cf4e 100644
--- a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
index 148b6b035..148b6b035 100644
--- a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png
index 96c19098b..96c19098b 100644
--- a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
index cb4b2fca3..cb4b2fca3 100644
--- a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
index ee66223a7..ee66223a7 100644
--- a/SmartDeviceLink_Example/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/Contents.json b/Example Apps/Shared/Images.xcassets/Contents.json
index da4a164c9..da4a164c9 100644
--- a/SmartDeviceLink_Example/Images.xcassets/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/alert.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/alert.imageset/Contents.json
index 402889e26..402889e26 100644
--- a/SmartDeviceLink_Example/Images.xcassets/alert.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/alert.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/alert.imageset/alert.png b/Example Apps/Shared/Images.xcassets/alert.imageset/alert.png
index f7f732fcf..f7f732fcf 100644
--- a/SmartDeviceLink_Example/Images.xcassets/alert.imageset/alert.png
+++ b/Example Apps/Shared/Images.xcassets/alert.imageset/alert.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/car.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/car.imageset/Contents.json
index da6fe9437..da6fe9437 100644
--- a/SmartDeviceLink_Example/Images.xcassets/car.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/car.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/car.imageset/iconmonstr-car-1-64.png b/Example Apps/Shared/Images.xcassets/car.imageset/iconmonstr-car-1-64.png
index c95eaa035..c95eaa035 100644
--- a/SmartDeviceLink_Example/Images.xcassets/car.imageset/iconmonstr-car-1-64.png
+++ b/Example Apps/Shared/Images.xcassets/car.imageset/iconmonstr-car-1-64.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/choice_set.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/choice_set.imageset/Contents.json
index e784269b3..e784269b3 100644
--- a/SmartDeviceLink_Example/Images.xcassets/choice_set.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/choice_set.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/choice_set.imageset/iconmonstr-text-23-64.png b/Example Apps/Shared/Images.xcassets/choice_set.imageset/iconmonstr-text-23-64.png
index 23a0aa481..23a0aa481 100644
--- a/SmartDeviceLink_Example/Images.xcassets/choice_set.imageset/iconmonstr-text-23-64.png
+++ b/Example Apps/Shared/Images.xcassets/choice_set.imageset/iconmonstr-text-23-64.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/microphone.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/microphone.imageset/Contents.json
index 4620dff89..4620dff89 100644
--- a/SmartDeviceLink_Example/Images.xcassets/microphone.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/microphone.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/microphone.imageset/microphone.png b/Example Apps/Shared/Images.xcassets/microphone.imageset/microphone.png
index 8ccae2bcb..8ccae2bcb 100644
--- a/SmartDeviceLink_Example/Images.xcassets/microphone.imageset/microphone.png
+++ b/Example Apps/Shared/Images.xcassets/microphone.imageset/microphone.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/phone.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/phone.imageset/Contents.json
index feb2dff17..feb2dff17 100644
--- a/SmartDeviceLink_Example/Images.xcassets/phone.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/phone.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/phone.imageset/phone.png b/Example Apps/Shared/Images.xcassets/phone.imageset/phone.png
index 7c7eff383..7c7eff383 100644
--- a/SmartDeviceLink_Example/Images.xcassets/phone.imageset/phone.png
+++ b/Example Apps/Shared/Images.xcassets/phone.imageset/phone.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/Contents.json
index 63b272052..63b272052 100644
--- a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green.png b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green.png
index 0e0a373d1..0e0a373d1 100644
--- a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green.png
+++ b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@2x.png b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@2x.png
index d79b86eb1..d79b86eb1 100644
--- a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@2x.png
+++ b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@2x.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@3x.png b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@3x.png
index e1e6bd476..e1e6bd476 100644
--- a/SmartDeviceLink_Example/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@3x.png
+++ b/Example Apps/Shared/Images.xcassets/sdl_logo_green.imageset/sdl_logo_green@3x.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/speak.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/speak.imageset/Contents.json
index 38dbeb7ed..38dbeb7ed 100644
--- a/SmartDeviceLink_Example/Images.xcassets/speak.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/speak.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/speak.imageset/iconmonstr-speech-bubble-5-64.png b/Example Apps/Shared/Images.xcassets/speak.imageset/iconmonstr-speech-bubble-5-64.png
index 9404acfe5..9404acfe5 100644
--- a/SmartDeviceLink_Example/Images.xcassets/speak.imageset/iconmonstr-speech-bubble-5-64.png
+++ b/Example Apps/Shared/Images.xcassets/speak.imageset/iconmonstr-speech-bubble-5-64.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/toggle_off.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/toggle_off.imageset/Contents.json
index 38e2b195b..38e2b195b 100644
--- a/SmartDeviceLink_Example/Images.xcassets/toggle_off.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/toggle_off.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/toggle_off.imageset/toggle_off.png b/Example Apps/Shared/Images.xcassets/toggle_off.imageset/toggle_off.png
index 2e165a6fc..2e165a6fc 100644
--- a/SmartDeviceLink_Example/Images.xcassets/toggle_off.imageset/toggle_off.png
+++ b/Example Apps/Shared/Images.xcassets/toggle_off.imageset/toggle_off.png
Binary files differ
diff --git a/SmartDeviceLink_Example/Images.xcassets/toggle_on.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/toggle_on.imageset/Contents.json
index 695bb6a56..695bb6a56 100644
--- a/SmartDeviceLink_Example/Images.xcassets/toggle_on.imageset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/toggle_on.imageset/Contents.json
diff --git a/SmartDeviceLink_Example/Images.xcassets/toggle_on.imageset/toggle_on.png b/Example Apps/Shared/Images.xcassets/toggle_on.imageset/toggle_on.png
index eb43d718b..eb43d718b 100644
--- a/SmartDeviceLink_Example/Images.xcassets/toggle_on.imageset/toggle_on.png
+++ b/Example Apps/Shared/Images.xcassets/toggle_on.imageset/toggle_on.png
Binary files differ
diff --git a/README.md b/README.md
index 5cc36d988..789a7cae1 100644
--- a/README.md
+++ b/README.md
@@ -29,12 +29,10 @@ The mobile library component of SDL is meant to run on the end user’s smart-de
## SDL iOS
-We're still working on creating documentation for each of these individual repositories, but in the meantime, you can find more information about SmartDeviceLink [on the SDL Core README](https://github.com/smartdevicelink/sdl_core/blob/master/README.md) and [on Genivi](http://projects.genivi.org/smartdevicelink/about).
+We're still working on creating documentation for each of these individual repositories, but in the meantime, you can find more information about SmartDeviceLink [on the website](https://www.smartdevicelink.com).
See the [changelog](https://github.com/smartdevicelink/sdl_ios/blob/master/CHANGELOG.md) for release notes. This project uses [Semantic Versioning](http://semver.org/).
-See the [roadmap](https://github.com/smartdevicelink/sdl_ios/wiki/Roadmap) to see what we have planned for future versions.
-
### Installing
##### Cocoapods
@@ -79,8 +77,11 @@ If you see a bug, please post an issue on the appropriate repository. Please see
### SDL iOS Getting Started
+#### Example Apps
+To use the example apps, you can use `pod try SmartDeviceLink`, alternately, you can clone or download the project, but you must then also retrieve the submodules by running `git submodule init` and `git submodule update` in your terminal while in the main directory of the project.
+
#### Other Installation Requirements
-You may want to build the [sdl_core project](https://github.com/smartdevicelink/sdl_core) to be able to see your application connecting if you don't have an iAP enabled head unit to test.
+You can connect your application with [manticore](https://smartdevicelink.com/resources/manticore/) while running in TCP debug mode in order to test. For more information, [see the guildes](https://smartdevicelink.com/en/guides/iOS/getting-started/connecting-to-an-infotainment-system/).
#### Enabling Background Capabilities
iOS 5 introduced the capability for an iOS application to maintain a connection to an external accessory while the application is in the background. This capability must be explicitly enabled for your application.
@@ -130,13 +131,6 @@ Your application must support a set of smartdevicelink protocol strings in order
</array>
```
-#### Lock Screen Support
-If you used CocoaPods to install the SDL SDK, you must complete the following steps to add the default lock screen resources to your project:
-
-1. Select your application's build target, go to Build Phases, Copy Bundle Resources.
-2. Then in the Navigator window of Xcode, go to Target's Support Files, Pods-YourProjectName, and drag and drop the SmartDeviceLink.bundle file into Copy Bundle Resources.
-3. After the bundle is dropped into Copy Bundle Resources check "copy items if need" from the popup box and click "Finish."
-
#### Continue Integrating
Go through the [guide documentation](https://smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/) to get started setting up your app to work with SDL!
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec
index ddaa964d7..c36259ae9 100644
--- a/SmartDeviceLink-iOS.podspec
+++ b/SmartDeviceLink-iOS.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|
s.name = "SmartDeviceLink-iOS"
-s.version = "6.0.1"
+s.version = "6.0.2"
s.summary = "Connect your app with cars!"
s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS"
s.license = { :type => "New BSD", :file => "LICENSE" }
@@ -126,7 +126,6 @@ ss.public_header_files = [
'SmartDeviceLink/SDLGetWaypointsResponse.h',
'SmartDeviceLink/SDLGlobalProperty.h',
'SmartDeviceLink/SDLGPSData.h',
-'SmartDeviceLink/SDLGPSLocation.h',
'SmartDeviceLink/SDLHapticRect.h',
'SmartDeviceLink/SDLHeadLampStatus.h',
'SmartDeviceLink/SDLHMICapabilities.h',
@@ -302,7 +301,6 @@ ss.public_header_files = [
'SmartDeviceLink/SDLSpeak.h',
'SmartDeviceLink/SDLSpeakResponse.h',
'SmartDeviceLink/SDLSpeechCapabilities.h',
-'SmartDeviceLink/SDLSRGBColor.h',
'SmartDeviceLink/SDLStartTime.h',
'SmartDeviceLink/SDLStaticIconName.h',
'SmartDeviceLink/SDLStationIDNumber.h',
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index b9210d3ab..e9323dc81 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -277,8 +277,6 @@
1EAA470E2032BF1D000FE74B /* SDLOnRCStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA470D2032BF1D000FE74B /* SDLOnRCStatusSpec.m */; };
1EAA47112033FE80000FE74B /* SDLStationIDNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA470F2033FE80000FE74B /* SDLStationIDNumber.h */; settings = {ATTRIBUTES = (Public, ); }; };
1EAA47122033FE80000FE74B /* SDLStationIDNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47102033FE80000FE74B /* SDLStationIDNumber.m */; };
- 1EAA47152034052D000FE74B /* SDLGPSLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA47132034052D000FE74B /* SDLGPSLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA47162034052D000FE74B /* SDLGPSLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47142034052D000FE74B /* SDLGPSLocation.m */; };
1EAA4719203406B2000FE74B /* SDLSISData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA4717203406B1000FE74B /* SDLSISData.h */; settings = {ATTRIBUTES = (Public, ); }; };
1EAA471A203406B2000FE74B /* SDLSISData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4718203406B1000FE74B /* SDLSISData.m */; };
1EAA471D203410BB000FE74B /* SDLAudioControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA471B203410BB000FE74B /* SDLAudioControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -291,8 +289,6 @@
1EAA472E20344108000FE74B /* SDLLightStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA472C20344108000FE74B /* SDLLightStatus.m */; };
1EAA4731203442C0000FE74B /* SDLLightName.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA472F203442C0000FE74B /* SDLLightName.h */; settings = {ATTRIBUTES = (Public, ); }; };
1EAA4732203442C0000FE74B /* SDLLightName.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4730203442C0000FE74B /* SDLLightName.m */; };
- 1EAA4735203458CE000FE74B /* SDLSRGBColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA4733203458CE000FE74B /* SDLSRGBColor.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA4736203458CE000FE74B /* SDLSRGBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4734203458CE000FE74B /* SDLSRGBColor.m */; };
1EAA473920345B7A000FE74B /* SDLLightCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA473720345B7A000FE74B /* SDLLightCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
1EAA473A20345B7A000FE74B /* SDLLightCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA473820345B7A000FE74B /* SDLLightCapabilities.m */; };
1EAA473D203554B5000FE74B /* SDLLightState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA473B203554B5000FE74B /* SDLLightState.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -323,8 +319,6 @@
1EAA47762036B847000FE74B /* SDLEqualizerSettingsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47752036B847000FE74B /* SDLEqualizerSettingsSpec.m */; };
1EAA47782036BA74000FE74B /* SDLAudioControlCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47772036BA74000FE74B /* SDLAudioControlCapabilitiesSpec.m */; };
1EAA477A2036BD46000FE74B /* SDLSISDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47792036BD46000FE74B /* SDLSISDataSpec.m */; };
- 1EAA477C2036BD6D000FE74B /* SDLSDLSRGBColorSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA477B2036BD6D000FE74B /* SDLSDLSRGBColorSpec.m */; };
- 1EAA477E2036C091000FE74B /* SDLGPSLocationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA477D2036C091000FE74B /* SDLGPSLocationSpec.m */; };
1EAA47802036C2C9000FE74B /* SDLStationIDNumberSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA477F2036C2C9000FE74B /* SDLStationIDNumberSpec.m */; };
1EB59C9F202D925500343A61 /* SDLMassageZone.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59C9D202D925500343A61 /* SDLMassageZone.h */; settings = {ATTRIBUTES = (Public, ); }; };
1EB59CA0202D925500343A61 /* SDLMassageZone.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59C9E202D925500343A61 /* SDLMassageZone.m */; };
@@ -397,11 +391,8 @@
5D00AC781F15283E004000D9 /* SDLNavigationCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */; };
5D00AC7B1F15287E004000D9 /* SDLPhoneCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D00AC7C1F15287E004000D9 /* SDLPhoneCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */; };
- 5D0218F61A8E79C400D1BF62 /* ConnectionTCPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0218F51A8E79C400D1BF62 /* ConnectionTCPTableViewController.m */; };
- 5D0218F91A8E7A7300D1BF62 /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D0218F71A8E7A7300D1BF62 /* ConnectionTCPTableViewController.storyboard */; };
- 5D0218FC1A8E7E1700D1BF62 /* ConnectionContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0218FB1A8E7E1700D1BF62 /* ConnectionContainerViewController.m */; };
- 5D0218FF1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0218FE1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m */; };
- 5D0219051A8E9F6D00D1BF62 /* ConnectionIAPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D0219031A8E9F6D00D1BF62 /* ConnectionIAPTableViewController.storyboard */; };
+ 5D019276214994AC003500F6 /* NSMutableArray+Safe.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D019274214994AC003500F6 /* NSMutableArray+Safe.h */; };
+ 5D019277214994AC003500F6 /* NSMutableArray+Safe.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D019275214994AC003500F6 /* NSMutableArray+Safe.m */; };
5D07C02D2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D07C02B2044AC9000D1ECDC /* SDLSequentialRPCRequestOperation.h */; };
5D07C02E2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D07C02C2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m */; };
5D07C0312044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D07C02F2044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h */; };
@@ -437,6 +428,52 @@
5D1665CD1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1665CC1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D1BF6AF204742FB00D36881 /* SDLDisplayCapabilities+ShowManagerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1BF6AD204742FB00D36881 /* SDLDisplayCapabilities+ShowManagerExtensions.h */; };
5D1BF6B0204742FB00D36881 /* SDLDisplayCapabilities+ShowManagerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1BF6AE204742FB00D36881 /* SDLDisplayCapabilities+ShowManagerExtensions.m */; };
+ 5D1FF28D213044F9000EB9B4 /* AlertManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF28C213044F9000EB9B4 /* AlertManager.m */; };
+ 5D1FF29C21304515000EB9B4 /* PerformInteractionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29121304513000EB9B4 /* PerformInteractionManager.m */; };
+ 5D1FF29D21304515000EB9B4 /* RPCPermissionsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29221304513000EB9B4 /* RPCPermissionsManager.m */; };
+ 5D1FF29E21304515000EB9B4 /* MenuManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29421304513000EB9B4 /* MenuManager.m */; };
+ 5D1FF29F21304515000EB9B4 /* ProxyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29621304514000EB9B4 /* ProxyManager.m */; };
+ 5D1FF2A021304515000EB9B4 /* AudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29721304514000EB9B4 /* AudioManager.m */; };
+ 5D1FF2A121304515000EB9B4 /* VehicleDataManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29921304514000EB9B4 /* VehicleDataManager.m */; };
+ 5D1FF2A221304515000EB9B4 /* ButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29B21304515000EB9B4 /* ButtonManager.m */; };
+ 5D1FF2A721304531000EB9B4 /* Preferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2A421304531000EB9B4 /* Preferences.m */; };
+ 5D1FF2A821304531000EB9B4 /* TextValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2A621304531000EB9B4 /* TextValidator.m */; };
+ 5D1FF2AF21304568000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2A921304567000EB9B4 /* ConnectionTCPTableViewController.storyboard */; };
+ 5D1FF2B021304568000EB9B4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2AB21304567000EB9B4 /* Main.storyboard */; };
+ 5D1FF2B121304568000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2AD21304567000EB9B4 /* ConnectionIAPTableViewController.storyboard */; };
+ 5D1FF2B821304581000EB9B4 /* ConnectionIAPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2B421304580000EB9B4 /* ConnectionIAPTableViewController.m */; };
+ 5D1FF2B921304581000EB9B4 /* ConnectionContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2B521304581000EB9B4 /* ConnectionContainerViewController.m */; };
+ 5D1FF2BA21304581000EB9B4 /* ConnectionTCPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2B621304581000EB9B4 /* ConnectionTCPTableViewController.m */; };
+ 5D1FF2BF21304598000EB9B4 /* ConnectionAnimatedTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2BC21304598000EB9B4 /* ConnectionAnimatedTransition.m */; };
+ 5D1FF2C021304598000EB9B4 /* ConnectionTransitionContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2BE21304598000EB9B4 /* ConnectionTransitionContext.m */; };
+ 5D1FF2C3213045EB000EB9B4 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C2213045EB000EB9B4 /* AppConstants.m */; };
+ 5D1FF2C4213045EB000EB9B4 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C2213045EB000EB9B4 /* AppConstants.m */; };
+ 5D1FF2C6213045F2000EB9B4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C5213045F1000EB9B4 /* Images.xcassets */; };
+ 5D1FF2C7213045F2000EB9B4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C5213045F1000EB9B4 /* Images.xcassets */; };
+ 5D1FF2CA2130463F000EB9B4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C92130463F000EB9B4 /* AppDelegate.m */; };
+ 5D1FF2CC2130464E000EB9B4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2CB2130464D000EB9B4 /* main.m */; };
+ 5D1FF2CE21304654000EB9B4 /* SmartDeviceLink-Example-ObjC-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2CD21304654000EB9B4 /* SmartDeviceLink-Example-ObjC-Info.plist */; };
+ 5D1FF2D12130466D000EB9B4 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2CF2130466D000EB9B4 /* LaunchScreen.xib */; };
+ 5D1FF2DA21304746000EB9B4 /* ButtonManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D221304745000EB9B4 /* ButtonManager.swift */; };
+ 5D1FF2DB21304746000EB9B4 /* ProxyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D321304745000EB9B4 /* ProxyManager.swift */; };
+ 5D1FF2DC21304746000EB9B4 /* AlertManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D421304746000EB9B4 /* AlertManager.swift */; };
+ 5D1FF2DD21304746000EB9B4 /* RPCPermissionsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D521304746000EB9B4 /* RPCPermissionsManager.swift */; };
+ 5D1FF2DE21304746000EB9B4 /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D621304746000EB9B4 /* AudioManager.swift */; };
+ 5D1FF2DF21304746000EB9B4 /* PerformInteractionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D721304746000EB9B4 /* PerformInteractionManager.swift */; };
+ 5D1FF2E021304746000EB9B4 /* MenuManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D821304746000EB9B4 /* MenuManager.swift */; };
+ 5D1FF2E121304746000EB9B4 /* VehicleDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2D921304746000EB9B4 /* VehicleDataManager.swift */; };
+ 5D1FF2E521304761000EB9B4 /* AppUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E221304761000EB9B4 /* AppUserDefaults.swift */; };
+ 5D1FF2E621304761000EB9B4 /* Protocol+ProxyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E321304761000EB9B4 /* Protocol+ProxyManagerDelegate.swift */; };
+ 5D1FF2E721304761000EB9B4 /* TextValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E421304761000EB9B4 /* TextValidator.swift */; };
+ 5D1FF2EB2130479C000EB9B4 /* ConnectionContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E82130479C000EB9B4 /* ConnectionContainerViewController.swift */; };
+ 5D1FF2EC2130479C000EB9B4 /* ConnectionTCPTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E92130479C000EB9B4 /* ConnectionTCPTableViewController.swift */; };
+ 5D1FF2ED2130479C000EB9B4 /* ConnectionIAPTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2EA2130479C000EB9B4 /* ConnectionIAPTableViewController.swift */; };
+ 5D1FF2F1213047AB000EB9B4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2EE213047AB000EB9B4 /* Main.storyboard */; };
+ 5D1FF2F2213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2EF213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard */; };
+ 5D1FF2F3213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F0213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard */; };
+ 5D1FF2F5213047B3000EB9B4 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F4213047B2000EB9B4 /* LaunchScreen.xib */; };
+ 5D1FF2F8213047C1000EB9B4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F7213047C1000EB9B4 /* AppDelegate.swift */; };
+ 5D1FF2FA2130480C000EB9B4 /* SmartDeviceLink-Example-Swift-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F92130480C000EB9B4 /* SmartDeviceLink-Example-Swift-Info.plist */; };
5D293AFE1FE078A9000CBD7E /* SDLCarWindowViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D293AFC1FE078A9000CBD7E /* SDLCarWindowViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D293AFF1FE078A9000CBD7E /* SDLCarWindowViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D293AFD1FE078A9000CBD7E /* SDLCarWindowViewController.m */; };
5D2F58081D0717D5001085CE /* SDLManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D2F58071D0717D5001085CE /* SDLManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -456,9 +493,6 @@
5D3E48801D6F88A30000BFEF /* SDLRPCNotificationNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D3E487E1D6F88A30000BFEF /* SDLRPCNotificationNotification.m */; };
5D3E48CB1D7722FE0000BFEF /* NSBundle+SDLBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D3E48C91D7722FE0000BFEF /* NSBundle+SDLBundle.h */; };
5D3E48CC1D7722FE0000BFEF /* NSBundle+SDLBundle.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D3E48CA1D7722FE0000BFEF /* NSBundle+SDLBundle.m */; };
- 5D4029D41A76F0340006B0C2 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D4029D31A76F0340006B0C2 /* Images.xcassets */; };
- 5D4029E31A76F0760006B0C2 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5D4029DF1A76F0760006B0C2 /* LaunchScreen.xib */; };
- 5D4029E41A76F0760006B0C2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D4029E11A76F0760006B0C2 /* Main.storyboard */; };
5D4346471E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4346461E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m */; };
5D43465B1E6F154400B639C6 /* SDLLogConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D43465A1E6F154400B639C6 /* SDLLogConfigurationSpec.m */; };
5D43466B1E6F3B4C00B639C6 /* SDLLogFilterSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D43466A1E6F3B4C00B639C6 /* SDLLogFilterSpec.m */; };
@@ -472,10 +506,6 @@
5D4631111F2135850092EFDC /* SDLControlFramePayloadConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D46310F1F2135850092EFDC /* SDLControlFramePayloadConstants.m */; };
5D4631141F2136B60092EFDC /* SDLControlFramePayloadNak.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4631121F2136B60092EFDC /* SDLControlFramePayloadNak.h */; };
5D4631151F2136B60092EFDC /* SDLControlFramePayloadNak.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4631131F2136B60092EFDC /* SDLControlFramePayloadNak.m */; };
- 5D48329D1A8EA33D00252386 /* Preferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D48329C1A8EA33D00252386 /* Preferences.m */; };
- 5D4832A11A92868E00252386 /* ProxyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4832A01A92868E00252386 /* ProxyManager.m */; };
- 5D4832A51A94F90D00252386 /* ConnectionTransitionContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4832A41A94F90D00252386 /* ConnectionTransitionContext.m */; };
- 5D4832A81A95191B00252386 /* ConnectionAnimatedTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4832A71A95191B00252386 /* ConnectionAnimatedTransition.m */; };
5D4D67AC1D2ED37A00468B4A /* SDLNotificationDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4D67AA1D2ED37A00468B4A /* SDLNotificationDispatcher.h */; };
5D4D67AD1D2ED37A00468B4A /* SDLNotificationDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4D67AB1D2ED37A00468B4A /* SDLNotificationDispatcher.m */; };
5D4D67B01D2FE2F900468B4A /* SDLResponseDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4D67AE1D2FE2F900468B4A /* SDLResponseDispatcher.h */; };
@@ -486,8 +516,6 @@
5D535DC61B72473800CF7760 /* SDLGlobals.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D535DC41B72473800CF7760 /* SDLGlobals.m */; };
5D53C46D1B7A99B9003526EA /* SDLStreamingMediaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53C46B1B7A99B9003526EA /* SDLStreamingMediaManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D53C46E1B7A99B9003526EA /* SDLStreamingMediaManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D53C46C1B7A99B9003526EA /* SDLStreamingMediaManager.m */; };
- 5D59350F1A855EB300687FB9 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D59350C1A855EB300687FB9 /* AppDelegate.m */; };
- 5D5935121A855EBE00687FB9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5935111A855EBE00687FB9 /* main.m */; };
5D59DD471B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D59DD461B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m */; };
5D5DBF081D48E39C00D4F914 /* FBSnapshotTestCase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */; };
5D5DBF091D48E3AC00D4F914 /* FBSnapshotTestCase.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -1191,28 +1219,18 @@
5DF40B26208FA7DE00DD6FDA /* SDLMenuManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF40B25208FA7DE00DD6FDA /* SDLMenuManagerSpec.m */; };
5DF40B28208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */; };
5DFFB9151BD7C89700DB3F04 /* SDLConnectionManagerType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DFFB9141BD7C89700DB3F04 /* SDLConnectionManagerType.h */; };
- 8800871E20A6356D008E1EA0 /* ButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8800871B20A6338C008E1EA0 /* ButtonManager.m */; };
880245A420F79C3400ED195B /* SDLFileManagerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 880245A220F79C3400ED195B /* SDLFileManagerConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
880245A520F79C3400ED195B /* SDLFileManagerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 880245A320F79C3400ED195B /* SDLFileManagerConfiguration.m */; };
- 8803A0AF208E2A3A009FDC02 /* AudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8803A0AC208E2907009FDC02 /* AudioManager.m */; };
- 8803A0B2208E7CA4009FDC02 /* VehicleDataManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8803A0B1208E7CA4009FDC02 /* VehicleDataManager.m */; };
880E35B42088F75A00181259 /* SDLSystemCapabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */; };
880E35B52088F75A00181259 /* SDLSystemCapabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
880E35B82088F78E00181259 /* SDLSystemCapabilityManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 880E35B72088F78E00181259 /* SDLSystemCapabilityManagerSpec.m */; };
- 8814AEA720AB65FC00466E0F /* MenuManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8814AEA620AB65FC00466E0F /* MenuManager.m */; };
- 8814AEAA20AB663800466E0F /* PerformInteractionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8814AEA920AB663800466E0F /* PerformInteractionManager.m */; };
- 8814AEAC20AB667B00466E0F /* PerformInteractionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8814AEAB20AB667B00466E0F /* PerformInteractionManager.swift */; };
- 88166B00207E41E900076236 /* MenuManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88166AFF207E41E900076236 /* MenuManager.swift */; };
8818ADD82100FC18007D6F19 /* SDLTurnSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8818ADD62100FC18007D6F19 /* SDLTurnSignal.h */; settings = {ATTRIBUTES = (Public, ); }; };
8818ADD92100FC18007D6F19 /* SDLTurnSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8818ADD72100FC18007D6F19 /* SDLTurnSignal.m */; };
8818ADDD2100FE0C007D6F19 /* SDLTurnSignalSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8818ADDC2100FE0C007D6F19 /* SDLTurnSignalSpec.m */; };
8829568B207CF68800EF056C /* SmartDeviceLink.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D61FA1C1A84237100846EE7 /* SmartDeviceLink.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
- 88295690207CF68800EF056C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D4029D31A76F0340006B0C2 /* Images.xcassets */; };
88295693207CF68800EF056C /* SmartDeviceLink.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5D61FA1C1A84237100846EE7 /* SmartDeviceLink.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 8829569E207CFD0E00EF056C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8829569D207CFD0E00EF056C /* AppDelegate.swift */; };
+ 882C42CE2108CDB100A44B58 /* SDLLifecycleConfigurationUpdateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 882C42CD2108CDB100A44B58 /* SDLLifecycleConfigurationUpdateSpec.m */; };
8850DB601F4475D30053A48D /* TestMultipleFilesConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8850DB5F1F4475D30053A48D /* TestMultipleFilesConnectionManager.m */; };
- 8863B59D207D3849002D6459 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8863B597207D2388002D6459 /* AppConstants.m */; };
- 8870C3EA208662540070E018 /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8870C3E82086623F0070E018 /* AudioManager.swift */; };
8877F5EB1F34A3BE00DC128A /* SDLSendHapticDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8877F5EA1F34A3BE00DC128A /* SDLSendHapticDataSpec.m */; };
8877F5EE1F34A72200DC128A /* SDLSendHapticDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8877F5EC1F34A72200DC128A /* SDLSendHapticDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
8877F5EF1F34A72200DC128A /* SDLSendHapticDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8877F5ED1F34A72200DC128A /* SDLSendHapticDataResponse.m */; };
@@ -1224,20 +1242,7 @@
88802FF420853BED00E9EBC6 /* SmartDeviceLinkSwift.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4346631E6F38E600B639C6 /* SmartDeviceLinkSwift.h */; settings = {ATTRIBUTES = (Public, ); }; };
88802FF520853CD500E9EBC6 /* SmartDeviceLinkSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */; };
88802FF620853CD500E9EBC6 /* SmartDeviceLinkSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 8880B2EF21021E37004721DB /* TextValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8880B2ED21021964004721DB /* TextValidator.swift */; };
- 8880B2F421022896004721DB /* TextValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8880B2F121022887004721DB /* TextValidator.m */; };
8886EB982111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8886EB972111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m */; };
- 888D178F207E7F42008E9F8F /* ButtonManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 888D178D207E7F0E008E9F8F /* ButtonManager.swift */; };
- 888D1790207E815C008E9F8F /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8863B597207D2388002D6459 /* AppConstants.m */; };
- 88A0AA56207CFE5D0075132C /* AppUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A0AA55207CFE5C0075132C /* AppUserDefaults.swift */; };
- 88A0AA58207CFE650075132C /* ProxyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A0AA57207CFE650075132C /* ProxyManager.swift */; };
- 88A0AA5C207CFE740075132C /* ConnectionContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A0AA59207CFE740075132C /* ConnectionContainerViewController.swift */; };
- 88A0AA5D207CFE740075132C /* ConnectionIAPTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A0AA5A207CFE740075132C /* ConnectionIAPTableViewController.swift */; };
- 88A0AA5E207CFE740075132C /* ConnectionTCPTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A0AA5B207CFE740075132C /* ConnectionTCPTableViewController.swift */; };
- 88A0AA65207CFF980075132C /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 88A0AA61207CFF970075132C /* LaunchScreen.xib */; };
- 88A0AA66207CFF980075132C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 88A0AA62207CFF970075132C /* Main.storyboard */; };
- 88A0AA67207CFF980075132C /* ConnectionIAPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 88A0AA63207CFF970075132C /* ConnectionIAPTableViewController.storyboard */; };
- 88A0AA68207CFF980075132C /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 88A0AA64207CFF980075132C /* ConnectionTCPTableViewController.storyboard */; };
88A795D22106787400056542 /* SDLStaticIconName.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A795D02106787400056542 /* SDLStaticIconName.h */; settings = {ATTRIBUTES = (Public, ); }; };
88A795D32106787400056542 /* SDLStaticIconName.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A795D12106787400056542 /* SDLStaticIconName.m */; };
88A795D5210678E000056542 /* SDLStaticIconNameSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A795D4210678E000056542 /* SDLStaticIconNameSpec.m */; };
@@ -1249,13 +1254,7 @@
88B3BFA220DA911E00943565 /* SDLFuelRangeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B3BFA120DA911E00943565 /* SDLFuelRangeSpec.m */; };
88B848C31F45E1A600DED768 /* TestResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B848C21F45E1A600DED768 /* TestResponse.m */; };
88B848C91F462E3600DED768 /* TestFileProgressResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B848C81F462E3600DED768 /* TestFileProgressResponse.m */; };
- 88B849C52080F4B3002A034D /* RPCPermissionsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B849C32080F4AF002A034D /* RPCPermissionsManager.swift */; };
- 88B849C820812442002A034D /* VehicleDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B849C620812412002A034D /* VehicleDataManager.swift */; };
88D2AAE41F682BB20078D5B2 /* SDLLogConstantsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D2AAE31F682BB20078D5B2 /* SDLLogConstantsSpec.m */; };
- 88DA6D10209794A400AD8297 /* AlertManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DA6D0F209794A400AD8297 /* AlertManager.m */; };
- 88DE80B720A5C8DD00BA9CF0 /* RPCPermissionsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DE80B620A5C8DD00BA9CF0 /* RPCPermissionsManager.m */; };
- 88DFB053207F8E100079D19D /* Protocol+ProxyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88DFB051207F8DF50079D19D /* Protocol+ProxyManagerDelegate.swift */; };
- 88DFB055207F96EE0079D19D /* AlertManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88DFB054207F96EE0079D19D /* AlertManager.swift */; };
88EED8381F33AE1700E6C42E /* SDLHapticRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EED8361F33AE1700E6C42E /* SDLHapticRect.h */; settings = {ATTRIBUTES = (Public, ); }; };
88EED8391F33AE1700E6C42E /* SDLHapticRect.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EED8371F33AE1700E6C42E /* SDLHapticRect.m */; };
88EED83B1F33BECB00E6C42E /* SDLHapticRectSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */; };
@@ -1738,8 +1737,6 @@
1EAA470D2032BF1D000FE74B /* SDLOnRCStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnRCStatusSpec.m; sourceTree = "<group>"; };
1EAA470F2033FE80000FE74B /* SDLStationIDNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStationIDNumber.h; sourceTree = "<group>"; };
1EAA47102033FE80000FE74B /* SDLStationIDNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStationIDNumber.m; sourceTree = "<group>"; };
- 1EAA47132034052D000FE74B /* SDLGPSLocation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGPSLocation.h; sourceTree = "<group>"; };
- 1EAA47142034052D000FE74B /* SDLGPSLocation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGPSLocation.m; sourceTree = "<group>"; };
1EAA4717203406B1000FE74B /* SDLSISData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSISData.h; sourceTree = "<group>"; };
1EAA4718203406B1000FE74B /* SDLSISData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSISData.m; sourceTree = "<group>"; };
1EAA471B203410BB000FE74B /* SDLAudioControlCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAudioControlCapabilities.h; sourceTree = "<group>"; };
@@ -1752,8 +1749,6 @@
1EAA472C20344108000FE74B /* SDLLightStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightStatus.m; sourceTree = "<group>"; };
1EAA472F203442C0000FE74B /* SDLLightName.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightName.h; sourceTree = "<group>"; };
1EAA4730203442C0000FE74B /* SDLLightName.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightName.m; sourceTree = "<group>"; };
- 1EAA4733203458CE000FE74B /* SDLSRGBColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSRGBColor.h; sourceTree = "<group>"; };
- 1EAA4734203458CE000FE74B /* SDLSRGBColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSRGBColor.m; sourceTree = "<group>"; };
1EAA473720345B7A000FE74B /* SDLLightCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightCapabilities.h; sourceTree = "<group>"; };
1EAA473820345B7A000FE74B /* SDLLightCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightCapabilities.m; sourceTree = "<group>"; };
1EAA473B203554B5000FE74B /* SDLLightState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightState.h; sourceTree = "<group>"; };
@@ -1784,8 +1779,6 @@
1EAA47752036B847000FE74B /* SDLEqualizerSettingsSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEqualizerSettingsSpec.m; sourceTree = "<group>"; };
1EAA47772036BA74000FE74B /* SDLAudioControlCapabilitiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAudioControlCapabilitiesSpec.m; sourceTree = "<group>"; };
1EAA47792036BD46000FE74B /* SDLSISDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSISDataSpec.m; sourceTree = "<group>"; };
- 1EAA477B2036BD6D000FE74B /* SDLSDLSRGBColorSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSDLSRGBColorSpec.m; sourceTree = "<group>"; };
- 1EAA477D2036C091000FE74B /* SDLGPSLocationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGPSLocationSpec.m; sourceTree = "<group>"; };
1EAA477F2036C2C9000FE74B /* SDLStationIDNumberSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStationIDNumberSpec.m; sourceTree = "<group>"; };
1EB59C9D202D925500343A61 /* SDLMassageZone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMassageZone.h; sourceTree = "<group>"; };
1EB59C9E202D925500343A61 /* SDLMassageZone.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageZone.m; sourceTree = "<group>"; };
@@ -1858,14 +1851,8 @@
5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationCapability.m; sourceTree = "<group>"; };
5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPhoneCapability.h; sourceTree = "<group>"; };
5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPhoneCapability.m; sourceTree = "<group>"; };
- 5D0218F41A8E79C400D1BF62 /* ConnectionTCPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionTCPTableViewController.h; path = SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.h; sourceTree = SOURCE_ROOT; };
- 5D0218F51A8E79C400D1BF62 /* ConnectionTCPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionTCPTableViewController.m; path = SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m; sourceTree = SOURCE_ROOT; };
- 5D0218F81A8E7A7300D1BF62 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = SmartDeviceLink_Example/Base.lproj/ConnectionTCPTableViewController.storyboard; sourceTree = SOURCE_ROOT; };
- 5D0218FA1A8E7E1700D1BF62 /* ConnectionContainerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionContainerViewController.h; path = SmartDeviceLink_Example/Classes/ConnectionContainerViewController.h; sourceTree = SOURCE_ROOT; };
- 5D0218FB1A8E7E1700D1BF62 /* ConnectionContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionContainerViewController.m; path = SmartDeviceLink_Example/Classes/ConnectionContainerViewController.m; sourceTree = SOURCE_ROOT; };
- 5D0218FD1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionIAPTableViewController.h; path = SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.h; sourceTree = SOURCE_ROOT; };
- 5D0218FE1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionIAPTableViewController.m; path = SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.m; sourceTree = SOURCE_ROOT; };
- 5D0219041A8E9F6D00D1BF62 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = SmartDeviceLink_Example/Base.lproj/ConnectionIAPTableViewController.storyboard; sourceTree = SOURCE_ROOT; };
+ 5D019274214994AC003500F6 /* NSMutableArray+Safe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+Safe.h"; sourceTree = "<group>"; };
+ 5D019275214994AC003500F6 /* NSMutableArray+Safe.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+Safe.m"; sourceTree = "<group>"; };
5D07C02B2044AC9000D1ECDC /* SDLSequentialRPCRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSequentialRPCRequestOperation.h; sourceTree = "<group>"; };
5D07C02C2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSequentialRPCRequestOperation.m; sourceTree = "<group>"; };
5D07C02F2044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAsynchronousRPCRequestOperation.h; sourceTree = "<group>"; };
@@ -1909,6 +1896,68 @@
5D1665CC1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPermissionConstants.h; sourceTree = "<group>"; };
5D1BF6AD204742FB00D36881 /* SDLDisplayCapabilities+ShowManagerExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SDLDisplayCapabilities+ShowManagerExtensions.h"; sourceTree = "<group>"; };
5D1BF6AE204742FB00D36881 /* SDLDisplayCapabilities+ShowManagerExtensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "SDLDisplayCapabilities+ShowManagerExtensions.m"; sourceTree = "<group>"; };
+ 5D1FF28B213044F9000EB9B4 /* AlertManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AlertManager.h; path = "Example Apps/Example ObjC/AlertManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF28C213044F9000EB9B4 /* AlertManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AlertManager.m; path = "Example Apps/Example ObjC/AlertManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF28E21304513000EB9B4 /* MenuManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MenuManager.h; path = "Example Apps/Example ObjC/MenuManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF28F21304513000EB9B4 /* AudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioManager.h; path = "Example Apps/Example ObjC/AudioManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29021304513000EB9B4 /* VehicleDataManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VehicleDataManager.h; path = "Example Apps/Example ObjC/VehicleDataManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29121304513000EB9B4 /* PerformInteractionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PerformInteractionManager.m; path = "Example Apps/Example ObjC/PerformInteractionManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29221304513000EB9B4 /* RPCPermissionsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RPCPermissionsManager.m; path = "Example Apps/Example ObjC/RPCPermissionsManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29321304513000EB9B4 /* PerformInteractionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PerformInteractionManager.h; path = "Example Apps/Example ObjC/PerformInteractionManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29421304513000EB9B4 /* MenuManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MenuManager.m; path = "Example Apps/Example ObjC/MenuManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29521304514000EB9B4 /* ButtonManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ButtonManager.h; path = "Example Apps/Example ObjC/ButtonManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29621304514000EB9B4 /* ProxyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProxyManager.m; path = "Example Apps/Example ObjC/ProxyManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29721304514000EB9B4 /* AudioManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AudioManager.m; path = "Example Apps/Example ObjC/AudioManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29821304514000EB9B4 /* RPCPermissionsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPCPermissionsManager.h; path = "Example Apps/Example ObjC/RPCPermissionsManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29921304514000EB9B4 /* VehicleDataManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VehicleDataManager.m; path = "Example Apps/Example ObjC/VehicleDataManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29A21304514000EB9B4 /* ProxyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProxyManager.h; path = "Example Apps/Example ObjC/ProxyManager.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF29B21304515000EB9B4 /* ButtonManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ButtonManager.m; path = "Example Apps/Example ObjC/ButtonManager.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2A321304530000EB9B4 /* Preferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Preferences.h; path = "Example Apps/Example ObjC/Preferences.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2A421304531000EB9B4 /* Preferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Preferences.m; path = "Example Apps/Example ObjC/Preferences.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2A521304531000EB9B4 /* TextValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextValidator.h; path = "Example Apps/Example ObjC/TextValidator.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2A621304531000EB9B4 /* TextValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TextValidator.m; path = "Example Apps/Example ObjC/TextValidator.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2AA21304567000EB9B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2AC21304567000EB9B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Example Apps/Example ObjC/Base.lproj/Main.storyboard"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2AE21304567000EB9B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2B221304580000EB9B4 /* ConnectionContainerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionContainerViewController.h; path = "Example Apps/Example ObjC/ConnectionContainerViewController.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2B321304580000EB9B4 /* ConnectionTCPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionTCPTableViewController.h; path = "Example Apps/Example ObjC/ConnectionTCPTableViewController.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2B421304580000EB9B4 /* ConnectionIAPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionIAPTableViewController.m; path = "Example Apps/Example ObjC/ConnectionIAPTableViewController.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2B521304581000EB9B4 /* ConnectionContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionContainerViewController.m; path = "Example Apps/Example ObjC/ConnectionContainerViewController.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2B621304581000EB9B4 /* ConnectionTCPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionTCPTableViewController.m; path = "Example Apps/Example ObjC/ConnectionTCPTableViewController.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2B721304581000EB9B4 /* ConnectionIAPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionIAPTableViewController.h; path = "Example Apps/Example ObjC/ConnectionIAPTableViewController.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2BB21304598000EB9B4 /* ConnectionAnimatedTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionAnimatedTransition.h; path = "Example Apps/Example ObjC/ConnectionAnimatedTransition.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2BC21304598000EB9B4 /* ConnectionAnimatedTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionAnimatedTransition.m; path = "Example Apps/Example ObjC/ConnectionAnimatedTransition.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2BD21304598000EB9B4 /* ConnectionTransitionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionTransitionContext.h; path = "Example Apps/Example ObjC/ConnectionTransitionContext.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2BE21304598000EB9B4 /* ConnectionTransitionContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionTransitionContext.m; path = "Example Apps/Example ObjC/ConnectionTransitionContext.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2C1213045EB000EB9B4 /* AppConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConstants.h; path = "Example Apps/Shared/AppConstants.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2C2213045EB000EB9B4 /* AppConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppConstants.m; path = "Example Apps/Shared/AppConstants.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2C5213045F1000EB9B4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "Example Apps/Shared/Images.xcassets"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2C82130463E000EB9B4 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = "Example Apps/Example ObjC/AppDelegate.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2C92130463F000EB9B4 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = "Example Apps/Example ObjC/AppDelegate.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2CB2130464D000EB9B4 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "Example Apps/Example ObjC/main.m"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2CD21304654000EB9B4 /* SmartDeviceLink-Example-ObjC-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "SmartDeviceLink-Example-ObjC-Info.plist"; path = "Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D02130466D000EB9B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Example Apps/Example ObjC/Base.lproj/LaunchScreen.xib"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D221304745000EB9B4 /* ButtonManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ButtonManager.swift; path = "Example Apps/Example Swift/ButtonManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D321304745000EB9B4 /* ProxyManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ProxyManager.swift; path = "Example Apps/Example Swift/ProxyManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D421304746000EB9B4 /* AlertManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AlertManager.swift; path = "Example Apps/Example Swift/AlertManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D521304746000EB9B4 /* RPCPermissionsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RPCPermissionsManager.swift; path = "Example Apps/Example Swift/RPCPermissionsManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D621304746000EB9B4 /* AudioManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AudioManager.swift; path = "Example Apps/Example Swift/AudioManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D721304746000EB9B4 /* PerformInteractionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PerformInteractionManager.swift; path = "Example Apps/Example Swift/PerformInteractionManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D821304746000EB9B4 /* MenuManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MenuManager.swift; path = "Example Apps/Example Swift/MenuManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2D921304746000EB9B4 /* VehicleDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = VehicleDataManager.swift; path = "Example Apps/Example Swift/VehicleDataManager.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2E221304761000EB9B4 /* AppUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppUserDefaults.swift; path = "Example Apps/Example Swift/AppUserDefaults.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2E321304761000EB9B4 /* Protocol+ProxyManagerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Protocol+ProxyManagerDelegate.swift"; path = "Example Apps/Example Swift/Protocol+ProxyManagerDelegate.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2E421304761000EB9B4 /* TextValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TextValidator.swift; path = "Example Apps/Example Swift/TextValidator.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2E82130479C000EB9B4 /* ConnectionContainerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ConnectionContainerViewController.swift; path = "Example Apps/Example Swift/ConnectionContainerViewController.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2E92130479C000EB9B4 /* ConnectionTCPTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ConnectionTCPTableViewController.swift; path = "Example Apps/Example Swift/ConnectionTCPTableViewController.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2EA2130479C000EB9B4 /* ConnectionIAPTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ConnectionIAPTableViewController.swift; path = "Example Apps/Example Swift/ConnectionIAPTableViewController.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2EE213047AB000EB9B4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = "Example Apps/Example Swift/Main.storyboard"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2EF213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = ConnectionIAPTableViewController.storyboard; path = "Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2F0213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = ConnectionTCPTableViewController.storyboard; path = "Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2F4213047B2000EB9B4 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = LaunchScreen.xib; path = "Example Apps/Example Swift/LaunchScreen.xib"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2F6213047C1000EB9B4 /* SmartDeviceLink-Example-Swift-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SmartDeviceLink-Example-Swift-Bridging-Header.h"; path = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2F7213047C1000EB9B4 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = "Example Apps/Example Swift/AppDelegate.swift"; sourceTree = SOURCE_ROOT; };
+ 5D1FF2F92130480C000EB9B4 /* SmartDeviceLink-Example-Swift-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "SmartDeviceLink-Example-Swift-Info.plist"; path = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist"; sourceTree = SOURCE_ROOT; };
5D293AFC1FE078A9000CBD7E /* SDLCarWindowViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCarWindowViewController.h; sourceTree = "<group>"; };
5D293AFD1FE078A9000CBD7E /* SDLCarWindowViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCarWindowViewController.m; sourceTree = "<group>"; };
5D2F58071D0717D5001085CE /* SDLManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLManagerDelegate.h; sourceTree = "<group>"; };
@@ -1929,10 +1978,6 @@
5D3E48C91D7722FE0000BFEF /* NSBundle+SDLBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+SDLBundle.h"; sourceTree = "<group>"; };
5D3E48CA1D7722FE0000BFEF /* NSBundle+SDLBundle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+SDLBundle.m"; sourceTree = "<group>"; };
5D4019AF1A76EC350006B0C2 /* SDL Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SDL Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 5D4029D31A76F0340006B0C2 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = SmartDeviceLink_Example/Images.xcassets; sourceTree = SOURCE_ROOT; };
- 5D4029D51A76F0410006B0C2 /* SmartDeviceLink-Example-ObjC-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "SmartDeviceLink-Example-ObjC-Info.plist"; path = "SmartDeviceLink_Example/SmartDeviceLink-Example-ObjC-Info.plist"; sourceTree = SOURCE_ROOT; };
- 5D4029E01A76F0760006B0C2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = SmartDeviceLink_Example/Base.lproj/LaunchScreen.xib; sourceTree = SOURCE_ROOT; };
- 5D4029E21A76F0760006B0C2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = SmartDeviceLink_Example/Base.lproj/Main.storyboard; sourceTree = SOURCE_ROOT; };
5D4346461E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogFileModuleSpec.m; path = LoggingSpecs/SDLLogFileModuleSpec.m; sourceTree = "<group>"; };
5D43465A1E6F154400B639C6 /* SDLLogConfigurationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogConfigurationSpec.m; path = LoggingSpecs/SDLLogConfigurationSpec.m; sourceTree = "<group>"; };
5D4346631E6F38E600B639C6 /* SmartDeviceLinkSwift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SmartDeviceLinkSwift.h; sourceTree = "<group>"; };
@@ -1950,14 +1995,6 @@
5D46310F1F2135850092EFDC /* SDLControlFramePayloadConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadConstants.m; sourceTree = "<group>"; };
5D4631121F2136B60092EFDC /* SDLControlFramePayloadNak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadNak.h; sourceTree = "<group>"; };
5D4631131F2136B60092EFDC /* SDLControlFramePayloadNak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadNak.m; sourceTree = "<group>"; };
- 5D48329B1A8EA33D00252386 /* Preferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Preferences.h; path = SmartDeviceLink_Example/Classes/Preferences.h; sourceTree = SOURCE_ROOT; };
- 5D48329C1A8EA33D00252386 /* Preferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Preferences.m; path = SmartDeviceLink_Example/Classes/Preferences.m; sourceTree = SOURCE_ROOT; };
- 5D48329F1A92868E00252386 /* ProxyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProxyManager.h; path = SmartDeviceLink_Example/Classes/ProxyManager.h; sourceTree = SOURCE_ROOT; };
- 5D4832A01A92868E00252386 /* ProxyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProxyManager.m; path = SmartDeviceLink_Example/Classes/ProxyManager.m; sourceTree = SOURCE_ROOT; };
- 5D4832A31A94F90D00252386 /* ConnectionTransitionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionTransitionContext.h; path = SmartDeviceLink_Example/Classes/ConnectionTransitionContext.h; sourceTree = SOURCE_ROOT; };
- 5D4832A41A94F90D00252386 /* ConnectionTransitionContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionTransitionContext.m; path = SmartDeviceLink_Example/Classes/ConnectionTransitionContext.m; sourceTree = SOURCE_ROOT; };
- 5D4832A61A95191B00252386 /* ConnectionAnimatedTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionAnimatedTransition.h; path = SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.h; sourceTree = SOURCE_ROOT; };
- 5D4832A71A95191B00252386 /* ConnectionAnimatedTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionAnimatedTransition.m; path = SmartDeviceLink_Example/Classes/ConnectionAnimatedTransition.m; sourceTree = SOURCE_ROOT; };
5D4D67AA1D2ED37A00468B4A /* SDLNotificationDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLNotificationDispatcher.h; sourceTree = "<group>"; };
5D4D67AB1D2ED37A00468B4A /* SDLNotificationDispatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNotificationDispatcher.m; sourceTree = "<group>"; };
5D4D67AE1D2FE2F900468B4A /* SDLResponseDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResponseDispatcher.h; sourceTree = "<group>"; };
@@ -1968,9 +2005,6 @@
5D535DC41B72473800CF7760 /* SDLGlobals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGlobals.m; sourceTree = "<group>"; };
5D53C46B1B7A99B9003526EA /* SDLStreamingMediaManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStreamingMediaManager.h; sourceTree = "<group>"; };
5D53C46C1B7A99B9003526EA /* SDLStreamingMediaManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingMediaManager.m; sourceTree = "<group>"; };
- 5D59350B1A855EB300687FB9 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = SmartDeviceLink_Example/AppDelegate.h; sourceTree = SOURCE_ROOT; };
- 5D59350C1A855EB300687FB9 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = SmartDeviceLink_Example/AppDelegate.m; sourceTree = SOURCE_ROOT; };
- 5D5935111A855EBE00687FB9 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = SmartDeviceLink_Example/Classes/main.m; sourceTree = SOURCE_ROOT; };
5D59DD461B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenStatusManagerSpec.m; path = ProxySpecs/SDLLockScreenStatusManagerSpec.m; sourceTree = "<group>"; };
5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSnapshotTestCase.framework; path = sdl_ios/Carthage/Build/iOS/FBSnapshotTestCase.framework; sourceTree = "<group>"; };
5D5DBF0A1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenViewControllerSnapshotTests.m; path = DevAPISpecs/SDLLockScreenViewControllerSnapshotTests.m; sourceTree = "<group>"; };
@@ -2690,23 +2724,11 @@
5DF40B25208FA7DE00DD6FDA /* SDLMenuManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLMenuManagerSpec.m; path = DevAPISpecs/SDLMenuManagerSpec.m; sourceTree = "<group>"; };
5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandManagerSpec.m; path = DevAPISpecs/SDLVoiceCommandManagerSpec.m; sourceTree = "<group>"; };
5DFFB9141BD7C89700DB3F04 /* SDLConnectionManagerType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLConnectionManagerType.h; sourceTree = "<group>"; };
- 8800871A20A6338C008E1EA0 /* ButtonManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ButtonManager.h; sourceTree = "<group>"; };
- 8800871B20A6338C008E1EA0 /* ButtonManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ButtonManager.m; sourceTree = "<group>"; };
880245A220F79C3400ED195B /* SDLFileManagerConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLFileManagerConfiguration.h; sourceTree = "<group>"; };
880245A320F79C3400ED195B /* SDLFileManagerConfiguration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLFileManagerConfiguration.m; sourceTree = "<group>"; };
- 8803A0AB208E2907009FDC02 /* AudioManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioManager.h; sourceTree = "<group>"; };
- 8803A0AC208E2907009FDC02 /* AudioManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AudioManager.m; sourceTree = "<group>"; };
- 8803A0B0208E7CA4009FDC02 /* VehicleDataManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VehicleDataManager.h; sourceTree = "<group>"; };
- 8803A0B1208E7CA4009FDC02 /* VehicleDataManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VehicleDataManager.m; sourceTree = "<group>"; };
880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityManager.m; sourceTree = "<group>"; };
880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityManager.h; sourceTree = "<group>"; };
880E35B72088F78E00181259 /* SDLSystemCapabilityManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityManagerSpec.m; sourceTree = "<group>"; };
- 8814AEA520AB65FC00466E0F /* MenuManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MenuManager.h; sourceTree = "<group>"; };
- 8814AEA620AB65FC00466E0F /* MenuManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MenuManager.m; sourceTree = "<group>"; };
- 8814AEA820AB663800466E0F /* PerformInteractionManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PerformInteractionManager.h; sourceTree = "<group>"; };
- 8814AEA920AB663800466E0F /* PerformInteractionManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PerformInteractionManager.m; sourceTree = "<group>"; };
- 8814AEAB20AB667B00466E0F /* PerformInteractionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerformInteractionManager.swift; sourceTree = "<group>"; };
- 88166AFF207E41E900076236 /* MenuManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuManager.swift; sourceTree = "<group>"; };
8818ADD62100FC18007D6F19 /* SDLTurnSignal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTurnSignal.h; sourceTree = "<group>"; };
8818ADD72100FC18007D6F19 /* SDLTurnSignal.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTurnSignal.m; sourceTree = "<group>"; };
8818ADDC2100FE0C007D6F19 /* SDLTurnSignalSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTurnSignalSpec.m; sourceTree = "<group>"; };
@@ -2716,28 +2738,12 @@
8829569D207CFD0E00EF056C /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
8850DB5E1F4475D30053A48D /* TestMultipleFilesConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestMultipleFilesConnectionManager.h; sourceTree = "<group>"; };
8850DB5F1F4475D30053A48D /* TestMultipleFilesConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestMultipleFilesConnectionManager.m; sourceTree = "<group>"; };
- 8863B596207D2388002D6459 /* AppConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppConstants.h; sourceTree = "<group>"; };
- 8863B597207D2388002D6459 /* AppConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppConstants.m; sourceTree = "<group>"; };
- 8870C3E82086623F0070E018 /* AudioManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioManager.swift; sourceTree = "<group>"; };
8877F5EA1F34A3BE00DC128A /* SDLSendHapticDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticDataSpec.m; sourceTree = "<group>"; };
8877F5EC1F34A72200DC128A /* SDLSendHapticDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSendHapticDataResponse.h; sourceTree = "<group>"; };
8877F5ED1F34A72200DC128A /* SDLSendHapticDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticDataResponse.m; sourceTree = "<group>"; };
8877F5F01F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticDataResponseSpec.m; sourceTree = "<group>"; };
88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SmartDeviceLinkSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 8880B2ED21021964004721DB /* TextValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextValidator.swift; sourceTree = "<group>"; };
- 8880B2F021022887004721DB /* TextValidator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextValidator.h; sourceTree = "<group>"; };
- 8880B2F121022887004721DB /* TextValidator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TextValidator.m; sourceTree = "<group>"; };
8886EB972111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFileManagerConfigurationSpec.m; sourceTree = "<group>"; };
- 888D178D207E7F0E008E9F8F /* ButtonManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonManager.swift; sourceTree = "<group>"; };
- 88A0AA55207CFE5C0075132C /* AppUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppUserDefaults.swift; sourceTree = "<group>"; };
- 88A0AA57207CFE650075132C /* ProxyManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProxyManager.swift; sourceTree = "<group>"; };
- 88A0AA59207CFE740075132C /* ConnectionContainerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionContainerViewController.swift; sourceTree = "<group>"; };
- 88A0AA5A207CFE740075132C /* ConnectionIAPTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionIAPTableViewController.swift; sourceTree = "<group>"; };
- 88A0AA5B207CFE740075132C /* ConnectionTCPTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionTCPTableViewController.swift; sourceTree = "<group>"; };
- 88A0AA61207CFF970075132C /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = "<group>"; };
- 88A0AA62207CFF970075132C /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
- 88A0AA63207CFF970075132C /* ConnectionIAPTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ConnectionIAPTableViewController.storyboard; sourceTree = "<group>"; };
- 88A0AA64207CFF980075132C /* ConnectionTCPTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ConnectionTCPTableViewController.storyboard; sourceTree = "<group>"; };
88A795D02106787400056542 /* SDLStaticIconName.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStaticIconName.h; sourceTree = "<group>"; };
88A795D12106787400056542 /* SDLStaticIconName.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStaticIconName.m; sourceTree = "<group>"; };
88A795D4210678E000056542 /* SDLStaticIconNameSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStaticIconNameSpec.m; sourceTree = "<group>"; };
@@ -2751,15 +2757,7 @@
88B848C21F45E1A600DED768 /* TestResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestResponse.m; sourceTree = "<group>"; };
88B848C71F462E3600DED768 /* TestFileProgressResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFileProgressResponse.h; sourceTree = "<group>"; };
88B848C81F462E3600DED768 /* TestFileProgressResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestFileProgressResponse.m; sourceTree = "<group>"; };
- 88B849C32080F4AF002A034D /* RPCPermissionsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RPCPermissionsManager.swift; sourceTree = "<group>"; };
- 88B849C620812412002A034D /* VehicleDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleDataManager.swift; sourceTree = "<group>"; };
88D2AAE31F682BB20078D5B2 /* SDLLogConstantsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogConstantsSpec.m; sourceTree = "<group>"; };
- 88DA6D0E209794A400AD8297 /* AlertManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AlertManager.h; sourceTree = "<group>"; };
- 88DA6D0F209794A400AD8297 /* AlertManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AlertManager.m; sourceTree = "<group>"; };
- 88DE80B520A5C8DD00BA9CF0 /* RPCPermissionsManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RPCPermissionsManager.h; sourceTree = "<group>"; };
- 88DE80B620A5C8DD00BA9CF0 /* RPCPermissionsManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RPCPermissionsManager.m; sourceTree = "<group>"; };
- 88DFB051207F8DF50079D19D /* Protocol+ProxyManagerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Protocol+ProxyManagerDelegate.swift"; sourceTree = "<group>"; };
- 88DFB054207F96EE0079D19D /* AlertManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertManager.swift; sourceTree = "<group>"; };
88EED8361F33AE1700E6C42E /* SDLHapticRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHapticRect.h; sourceTree = "<group>"; };
88EED8371F33AE1700E6C42E /* SDLHapticRect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHapticRect.m; sourceTree = "<group>"; };
88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHapticRectSpec.m; sourceTree = "<group>"; };
@@ -3225,7 +3223,6 @@
88B3BFA120DA911E00943565 /* SDLFuelRangeSpec.m */,
1EAA47752036B847000FE74B /* SDLEqualizerSettingsSpec.m */,
162E829C1A9BDE8A00906325 /* SDLGPSDataSpec.m */,
- 1EAA477D2036C091000FE74B /* SDLGPSLocationSpec.m */,
88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */,
162E829D1A9BDE8A00906325 /* SDLHeadLampStatusSpec.m */,
5DE372A31ACB336600849FAA /* SDLHMICapabilitiesSpec.m */,
@@ -3268,7 +3265,6 @@
1EAA47792036BD46000FE74B /* SDLSISDataSpec.m */,
162E82A91A9BDE8A00906325 /* SDLSoftButtonCapabilitiesSpec.m */,
162E82AA1A9BDE8A00906325 /* SDLSoftButtonSpec.m */,
- 1EAA477B2036BD6D000FE74B /* SDLSDLSRGBColorSpec.m */,
1EAA477F2036C2C9000FE74B /* SDLStationIDNumberSpec.m */,
162E82AB1A9BDE8A00906325 /* SDLStartTimeSpec.m */,
162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */,
@@ -3353,6 +3349,7 @@
5D0218EB1A8E795700D1BF62 /* UI */ = {
isa = PBXGroup;
children = (
+ 5D1FF2CF2130466D000EB9B4 /* LaunchScreen.xib */,
5D0218EC1A8E796100D1BF62 /* Connection */,
);
name = UI;
@@ -3363,12 +3360,12 @@
children = (
5D4832991A8EA27200252386 /* Storyboards */,
5D4832A21A94F8F100252386 /* Transition */,
- 5D0218FA1A8E7E1700D1BF62 /* ConnectionContainerViewController.h */,
- 5D0218FB1A8E7E1700D1BF62 /* ConnectionContainerViewController.m */,
- 5D0218F41A8E79C400D1BF62 /* ConnectionTCPTableViewController.h */,
- 5D0218F51A8E79C400D1BF62 /* ConnectionTCPTableViewController.m */,
- 5D0218FD1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.h */,
- 5D0218FE1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m */,
+ 5D1FF2B221304580000EB9B4 /* ConnectionContainerViewController.h */,
+ 5D1FF2B521304581000EB9B4 /* ConnectionContainerViewController.m */,
+ 5D1FF2B721304581000EB9B4 /* ConnectionIAPTableViewController.h */,
+ 5D1FF2B421304580000EB9B4 /* ConnectionIAPTableViewController.m */,
+ 5D1FF2B321304580000EB9B4 /* ConnectionTCPTableViewController.h */,
+ 5D1FF2B621304581000EB9B4 /* ConnectionTCPTableViewController.m */,
);
name = Connection;
sourceTree = "<group>";
@@ -3584,7 +3581,7 @@
5D4019AF1A76EC350006B0C2 /* SDL Example.app */,
5D61FA1C1A84237100846EE7 /* SmartDeviceLink.framework */,
5D61FA261A84237100846EE7 /* SmartDeviceLinkTests.xctest */,
- 88295697207CF68800EF056C /* SDL Example.app */,
+ 88295697207CF68800EF056C /* SDL Example Swift.app */,
88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */,
);
name = Products;
@@ -3604,11 +3601,10 @@
5D4019B21A76EC350006B0C2 /* Supporting Files */ = {
isa = PBXGroup;
children = (
- 5D59350B1A855EB300687FB9 /* AppDelegate.h */,
- 5D59350C1A855EB300687FB9 /* AppDelegate.m */,
- 5D4029DF1A76F0760006B0C2 /* LaunchScreen.xib */,
- 5D5935111A855EBE00687FB9 /* main.m */,
- 5D4029D51A76F0410006B0C2 /* SmartDeviceLink-Example-ObjC-Info.plist */,
+ 5D1FF2C82130463E000EB9B4 /* AppDelegate.h */,
+ 5D1FF2C92130463F000EB9B4 /* AppDelegate.m */,
+ 5D1FF2CD21304654000EB9B4 /* SmartDeviceLink-Example-ObjC-Info.plist */,
+ 5D1FF2CB2130464D000EB9B4 /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
@@ -3683,9 +3679,9 @@
5D4832991A8EA27200252386 /* Storyboards */ = {
isa = PBXGroup;
children = (
- 5D4029E11A76F0760006B0C2 /* Main.storyboard */,
- 5D0218F71A8E7A7300D1BF62 /* ConnectionTCPTableViewController.storyboard */,
- 5D0219031A8E9F6D00D1BF62 /* ConnectionIAPTableViewController.storyboard */,
+ 5D1FF2AD21304567000EB9B4 /* ConnectionIAPTableViewController.storyboard */,
+ 5D1FF2A921304567000EB9B4 /* ConnectionTCPTableViewController.storyboard */,
+ 5D1FF2AB21304567000EB9B4 /* Main.storyboard */,
);
name = Storyboards;
sourceTree = "<group>";
@@ -3693,10 +3689,10 @@
5D48329A1A8EA31500252386 /* Utilities */ = {
isa = PBXGroup;
children = (
- 5D48329B1A8EA33D00252386 /* Preferences.h */,
- 5D48329C1A8EA33D00252386 /* Preferences.m */,
- 8880B2F021022887004721DB /* TextValidator.h */,
- 8880B2F121022887004721DB /* TextValidator.m */,
+ 5D1FF2A321304530000EB9B4 /* Preferences.h */,
+ 5D1FF2A421304531000EB9B4 /* Preferences.m */,
+ 5D1FF2A521304531000EB9B4 /* TextValidator.h */,
+ 5D1FF2A621304531000EB9B4 /* TextValidator.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -3704,22 +3700,22 @@
5D48329E1A92865900252386 /* SDL */ = {
isa = PBXGroup;
children = (
- 5D48329F1A92868E00252386 /* ProxyManager.h */,
- 5D4832A01A92868E00252386 /* ProxyManager.m */,
- 88DA6D0E209794A400AD8297 /* AlertManager.h */,
- 88DA6D0F209794A400AD8297 /* AlertManager.m */,
- 8803A0AB208E2907009FDC02 /* AudioManager.h */,
- 8803A0AC208E2907009FDC02 /* AudioManager.m */,
- 8800871A20A6338C008E1EA0 /* ButtonManager.h */,
- 8800871B20A6338C008E1EA0 /* ButtonManager.m */,
- 8814AEA520AB65FC00466E0F /* MenuManager.h */,
- 8814AEA620AB65FC00466E0F /* MenuManager.m */,
- 8814AEA820AB663800466E0F /* PerformInteractionManager.h */,
- 8814AEA920AB663800466E0F /* PerformInteractionManager.m */,
- 88DE80B520A5C8DD00BA9CF0 /* RPCPermissionsManager.h */,
- 88DE80B620A5C8DD00BA9CF0 /* RPCPermissionsManager.m */,
- 8803A0B0208E7CA4009FDC02 /* VehicleDataManager.h */,
- 8803A0B1208E7CA4009FDC02 /* VehicleDataManager.m */,
+ 5D1FF28B213044F9000EB9B4 /* AlertManager.h */,
+ 5D1FF28C213044F9000EB9B4 /* AlertManager.m */,
+ 5D1FF28F21304513000EB9B4 /* AudioManager.h */,
+ 5D1FF29721304514000EB9B4 /* AudioManager.m */,
+ 5D1FF29521304514000EB9B4 /* ButtonManager.h */,
+ 5D1FF29B21304515000EB9B4 /* ButtonManager.m */,
+ 5D1FF28E21304513000EB9B4 /* MenuManager.h */,
+ 5D1FF29421304513000EB9B4 /* MenuManager.m */,
+ 5D1FF29321304513000EB9B4 /* PerformInteractionManager.h */,
+ 5D1FF29121304513000EB9B4 /* PerformInteractionManager.m */,
+ 5D1FF29A21304514000EB9B4 /* ProxyManager.h */,
+ 5D1FF29621304514000EB9B4 /* ProxyManager.m */,
+ 5D1FF29821304514000EB9B4 /* RPCPermissionsManager.h */,
+ 5D1FF29221304513000EB9B4 /* RPCPermissionsManager.m */,
+ 5D1FF29021304513000EB9B4 /* VehicleDataManager.h */,
+ 5D1FF29921304514000EB9B4 /* VehicleDataManager.m */,
);
name = SDL;
sourceTree = "<group>";
@@ -3727,10 +3723,10 @@
5D4832A21A94F8F100252386 /* Transition */ = {
isa = PBXGroup;
children = (
- 5D4832A31A94F90D00252386 /* ConnectionTransitionContext.h */,
- 5D4832A41A94F90D00252386 /* ConnectionTransitionContext.m */,
- 5D4832A61A95191B00252386 /* ConnectionAnimatedTransition.h */,
- 5D4832A71A95191B00252386 /* ConnectionAnimatedTransition.m */,
+ 5D1FF2BB21304598000EB9B4 /* ConnectionAnimatedTransition.h */,
+ 5D1FF2BC21304598000EB9B4 /* ConnectionAnimatedTransition.m */,
+ 5D1FF2BD21304598000EB9B4 /* ConnectionTransitionContext.h */,
+ 5D1FF2BE21304598000EB9B4 /* ConnectionTransitionContext.m */,
);
name = Transition;
sourceTree = "<group>";
@@ -4057,8 +4053,6 @@
1EAA4724203416D3000FE74B /* SDLEqualizerSettings.m */,
5D61FACE1A84238A00846EE7 /* SDLGPSData.h */,
5D61FACF1A84238A00846EE7 /* SDLGPSData.m */,
- 1EAA47132034052D000FE74B /* SDLGPSLocation.h */,
- 1EAA47142034052D000FE74B /* SDLGPSLocation.m */,
88EED8361F33AE1700E6C42E /* SDLHapticRect.h */,
88EED8371F33AE1700E6C42E /* SDLHapticRect.m */,
5D61FAD01A84238A00846EE7 /* SDLHeadLampStatus.h */,
@@ -4143,8 +4137,6 @@
5D61FBB31A84238B00846EE7 /* SDLSoftButton.m */,
5D61FBB41A84238B00846EE7 /* SDLSoftButtonCapabilities.h */,
5D61FBB51A84238B00846EE7 /* SDLSoftButtonCapabilities.m */,
- 1EAA4733203458CE000FE74B /* SDLSRGBColor.h */,
- 1EAA4734203458CE000FE74B /* SDLSRGBColor.m */,
5D61FBBE1A84238B00846EE7 /* SDLStartTime.h */,
5D61FBBF1A84238B00846EE7 /* SDLStartTime.m */,
1EAA470F2033FE80000FE74B /* SDLStationIDNumber.h */,
@@ -4926,6 +4918,8 @@
5DA102A31D4122C700C15826 /* NSMutableDictionary+SafeRemove.m */,
5D3E48C91D7722FE0000BFEF /* NSBundle+SDLBundle.h */,
5D3E48CA1D7722FE0000BFEF /* NSBundle+SDLBundle.m */,
+ 5D019274214994AC003500F6 /* NSMutableArray+Safe.h */,
+ 5D019275214994AC003500F6 /* NSMutableArray+Safe.m */,
);
name = Categories;
sourceTree = "<group>";
@@ -5069,6 +5063,7 @@
5DB1BCE01D243DDE002FFC37 /* SDLConfigurationSpec.m */,
8886EB972111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m */,
5DB1BCDC1D243DC3002FFC37 /* SDLLifecycleConfigurationSpec.m */,
+ 882C42CD2108CDB100A44B58 /* SDLLifecycleConfigurationUpdateSpec.m */,
5DB1BCDE1D243DD3002FFC37 /* SDLLockScreenConfigurationSpec.m */,
5DBEFA531F434B9E009EE295 /* SDLStreamingMediaConfigurationSpec.m */,
);
@@ -5427,14 +5422,14 @@
88295679207CF48C00EF056C /* SDL */ = {
isa = PBXGroup;
children = (
- 88A0AA57207CFE650075132C /* ProxyManager.swift */,
- 88DFB054207F96EE0079D19D /* AlertManager.swift */,
- 8870C3E82086623F0070E018 /* AudioManager.swift */,
- 888D178D207E7F0E008E9F8F /* ButtonManager.swift */,
- 88166AFF207E41E900076236 /* MenuManager.swift */,
- 8814AEAB20AB667B00466E0F /* PerformInteractionManager.swift */,
- 88B849C32080F4AF002A034D /* RPCPermissionsManager.swift */,
- 88B849C620812412002A034D /* VehicleDataManager.swift */,
+ 5D1FF2D421304746000EB9B4 /* AlertManager.swift */,
+ 5D1FF2D621304746000EB9B4 /* AudioManager.swift */,
+ 5D1FF2D221304745000EB9B4 /* ButtonManager.swift */,
+ 5D1FF2D821304746000EB9B4 /* MenuManager.swift */,
+ 5D1FF2D721304746000EB9B4 /* PerformInteractionManager.swift */,
+ 5D1FF2D321304745000EB9B4 /* ProxyManager.swift */,
+ 5D1FF2D521304746000EB9B4 /* RPCPermissionsManager.swift */,
+ 5D1FF2D921304746000EB9B4 /* VehicleDataManager.swift */,
);
name = SDL;
sourceTree = "<group>";
@@ -5442,10 +5437,9 @@
8829567A207CF49600EF056C /* Supporting Files */ = {
isa = PBXGroup;
children = (
- 8829569D207CFD0E00EF056C /* AppDelegate.swift */,
- 88A0AA61207CFF970075132C /* LaunchScreen.xib */,
- 88295698207CF68800EF056C /* SmartDeviceLink-Example-Swift-Info.plist */,
- 8829569C207CFD0D00EF056C /* SmartDeviceLink-Example-Swift-Bridging-Header.h */,
+ 5D1FF2F92130480C000EB9B4 /* SmartDeviceLink-Example-Swift-Info.plist */,
+ 5D1FF2F7213047C1000EB9B4 /* AppDelegate.swift */,
+ 5D1FF2F6213047C1000EB9B4 /* SmartDeviceLink-Example-Swift-Bridging-Header.h */,
);
name = "Supporting Files";
sourceTree = "<group>";
@@ -5453,10 +5447,11 @@
8829567B207CF49F00EF056C /* UI */ = {
isa = PBXGroup;
children = (
+ 5D1FF2F4213047B2000EB9B4 /* LaunchScreen.xib */,
88A0AA5F207CFEA60075132C /* Connection */,
- 88A0AA59207CFE740075132C /* ConnectionContainerViewController.swift */,
- 88A0AA5A207CFE740075132C /* ConnectionIAPTableViewController.swift */,
- 88A0AA5B207CFE740075132C /* ConnectionTCPTableViewController.swift */,
+ 5D1FF2E82130479C000EB9B4 /* ConnectionContainerViewController.swift */,
+ 5D1FF2EA2130479C000EB9B4 /* ConnectionIAPTableViewController.swift */,
+ 5D1FF2E92130479C000EB9B4 /* ConnectionTCPTableViewController.swift */,
);
name = UI;
sourceTree = "<group>";
@@ -5464,9 +5459,9 @@
8829567C207CF4AB00EF056C /* Utilities */ = {
isa = PBXGroup;
children = (
- 88A0AA55207CFE5C0075132C /* AppUserDefaults.swift */,
- 88DFB051207F8DF50079D19D /* Protocol+ProxyManagerDelegate.swift */,
- 8880B2ED21021964004721DB /* TextValidator.swift */,
+ 5D1FF2E221304761000EB9B4 /* AppUserDefaults.swift */,
+ 5D1FF2E321304761000EB9B4 /* Protocol+ProxyManagerDelegate.swift */,
+ 5D1FF2E421304761000EB9B4 /* TextValidator.swift */,
);
name = Utilities;
sourceTree = "<group>";
@@ -5474,9 +5469,9 @@
88295699207CFBD900EF056C /* Shared Assets */ = {
isa = PBXGroup;
children = (
- 5D4029D31A76F0340006B0C2 /* Images.xcassets */,
- 8863B596207D2388002D6459 /* AppConstants.h */,
- 8863B597207D2388002D6459 /* AppConstants.m */,
+ 5D1FF2C5213045F1000EB9B4 /* Images.xcassets */,
+ 5D1FF2C1213045EB000EB9B4 /* AppConstants.h */,
+ 5D1FF2C2213045EB000EB9B4 /* AppConstants.m */,
);
name = "Shared Assets";
sourceTree = "<group>";
@@ -5492,9 +5487,9 @@
88A0AA60207CFEAC0075132C /* Storyboards */ = {
isa = PBXGroup;
children = (
- 88A0AA63207CFF970075132C /* ConnectionIAPTableViewController.storyboard */,
- 88A0AA64207CFF980075132C /* ConnectionTCPTableViewController.storyboard */,
- 88A0AA62207CFF970075132C /* Main.storyboard */,
+ 5D1FF2EF213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard */,
+ 5D1FF2F0213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard */,
+ 5D1FF2EE213047AB000EB9B4 /* Main.storyboard */,
);
name = Storyboards;
sourceTree = "<group>";
@@ -5661,7 +5656,6 @@
2BF2F84F20ED004000A26EF2 /* SDLAudioStreamingIndicator.h in Headers */,
1EAA475120356CD2000FE74B /* SDLDistanceUnit.h in Headers */,
1EAA4755203583BC000FE74B /* SDLHMISettingsControlData.h in Headers */,
- 1EAA4735203458CE000FE74B /* SDLSRGBColor.h in Headers */,
1EAA4731203442C0000FE74B /* SDLLightName.h in Headers */,
1EAA472D20344108000FE74B /* SDLLightStatus.h in Headers */,
1EAA474D20356B2D000FE74B /* SDLDisplayMode.h in Headers */,
@@ -5672,7 +5666,6 @@
1EAA473920345B7A000FE74B /* SDLLightCapabilities.h in Headers */,
1EAA4725203416D3000FE74B /* SDLEqualizerSettings.h in Headers */,
1EAA47112033FE80000FE74B /* SDLStationIDNumber.h in Headers */,
- 1EAA47152034052D000FE74B /* SDLGPSLocation.h in Headers */,
5D9FC2A61FD8815800ACA5C2 /* SDLPCMAudioConverter.h in Headers */,
1EAA47292034388D000FE74B /* SDLAudioControlData.h in Headers */,
1EAA471D203410BB000FE74B /* SDLAudioControlCapabilities.h in Headers */,
@@ -5858,6 +5851,7 @@
5DCF76F51ACDBAD300BB647B /* SDLSendLocation.h in Headers */,
5D61FC9E1A84238C00846EE7 /* SDLEncodedSyncPData.h in Headers */,
1FF7DABA1F75B2A800B46C30 /* SDLFocusableItemLocator.h in Headers */,
+ 5D019276214994AC003500F6 /* NSMutableArray+Safe.h in Headers */,
5D61FDE11A84238C00846EE7 /* SDLTurn.h in Headers */,
5D9FC29B1FD8812F00ACA5C2 /* SDLAudioStreamManagerDelegate.h in Headers */,
5D61FC801A84238C00846EE7 /* SDLDeleteSubMenuResponse.h in Headers */,
@@ -6197,7 +6191,7 @@
);
name = "SmartDeviceLink-Example-Swift";
productName = "SmartDeviceLink-iOS";
- productReference = 88295697207CF68800EF056C /* SDL Example.app */;
+ productReference = 88295697207CF68800EF056C /* SDL Example Swift.app */;
productType = "com.apple.product-type.application";
};
88802CD720853AE600E9EBC6 /* SmartDeviceLinkSwift */ = {
@@ -6282,11 +6276,12 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 5D0218F91A8E7A7300D1BF62 /* ConnectionTCPTableViewController.storyboard in Resources */,
- 5D0219051A8E9F6D00D1BF62 /* ConnectionIAPTableViewController.storyboard in Resources */,
- 5D4029E31A76F0760006B0C2 /* LaunchScreen.xib in Resources */,
- 5D4029D41A76F0340006B0C2 /* Images.xcassets in Resources */,
- 5D4029E41A76F0760006B0C2 /* Main.storyboard in Resources */,
+ 5D1FF2B121304568000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */,
+ 5D1FF2AF21304568000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */,
+ 5D1FF2C6213045F2000EB9B4 /* Images.xcassets in Resources */,
+ 5D1FF2B021304568000EB9B4 /* Main.storyboard in Resources */,
+ 5D1FF2D12130466D000EB9B4 /* LaunchScreen.xib in Resources */,
+ 5D1FF2CE21304654000EB9B4 /* SmartDeviceLink-Example-ObjC-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -6321,11 +6316,12 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 88A0AA66207CFF980075132C /* Main.storyboard in Resources */,
- 88A0AA68207CFF980075132C /* ConnectionTCPTableViewController.storyboard in Resources */,
- 88A0AA65207CFF980075132C /* LaunchScreen.xib in Resources */,
- 88295690207CF68800EF056C /* Images.xcassets in Resources */,
- 88A0AA67207CFF980075132C /* ConnectionIAPTableViewController.storyboard in Resources */,
+ 5D1FF2F1213047AB000EB9B4 /* Main.storyboard in Resources */,
+ 5D1FF2FA2130480C000EB9B4 /* SmartDeviceLink-Example-Swift-Info.plist in Resources */,
+ 5D1FF2F3213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */,
+ 5D1FF2C7213045F2000EB9B4 /* Images.xcassets in Resources */,
+ 5D1FF2F5213047B3000EB9B4 /* LaunchScreen.xib in Resources */,
+ 5D1FF2F2213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -6346,24 +6342,24 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 5D4832A51A94F90D00252386 /* ConnectionTransitionContext.m in Sources */,
- 8880B2F421022896004721DB /* TextValidator.m in Sources */,
- 8800871E20A6356D008E1EA0 /* ButtonManager.m in Sources */,
- 5D0218FC1A8E7E1700D1BF62 /* ConnectionContainerViewController.m in Sources */,
- 88DA6D10209794A400AD8297 /* AlertManager.m in Sources */,
- 8803A0AF208E2A3A009FDC02 /* AudioManager.m in Sources */,
- 5D0218FF1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m in Sources */,
- 8803A0B2208E7CA4009FDC02 /* VehicleDataManager.m in Sources */,
- 5D48329D1A8EA33D00252386 /* Preferences.m in Sources */,
- 8814AEA720AB65FC00466E0F /* MenuManager.m in Sources */,
- 8814AEAA20AB663800466E0F /* PerformInteractionManager.m in Sources */,
- 5D59350F1A855EB300687FB9 /* AppDelegate.m in Sources */,
- 5D5935121A855EBE00687FB9 /* main.m in Sources */,
- 5D4832A81A95191B00252386 /* ConnectionAnimatedTransition.m in Sources */,
- 88DE80B720A5C8DD00BA9CF0 /* RPCPermissionsManager.m in Sources */,
- 5D4832A11A92868E00252386 /* ProxyManager.m in Sources */,
- 5D0218F61A8E79C400D1BF62 /* ConnectionTCPTableViewController.m in Sources */,
- 8863B59D207D3849002D6459 /* AppConstants.m in Sources */,
+ 5D1FF2CA2130463F000EB9B4 /* AppDelegate.m in Sources */,
+ 5D1FF2BA21304581000EB9B4 /* ConnectionTCPTableViewController.m in Sources */,
+ 5D1FF2B921304581000EB9B4 /* ConnectionContainerViewController.m in Sources */,
+ 5D1FF29D21304515000EB9B4 /* RPCPermissionsManager.m in Sources */,
+ 5D1FF2A121304515000EB9B4 /* VehicleDataManager.m in Sources */,
+ 5D1FF29F21304515000EB9B4 /* ProxyManager.m in Sources */,
+ 5D1FF2BF21304598000EB9B4 /* ConnectionAnimatedTransition.m in Sources */,
+ 5D1FF2A721304531000EB9B4 /* Preferences.m in Sources */,
+ 5D1FF2CC2130464E000EB9B4 /* main.m in Sources */,
+ 5D1FF2C021304598000EB9B4 /* ConnectionTransitionContext.m in Sources */,
+ 5D1FF2A221304515000EB9B4 /* ButtonManager.m in Sources */,
+ 5D1FF2A021304515000EB9B4 /* AudioManager.m in Sources */,
+ 5D1FF29E21304515000EB9B4 /* MenuManager.m in Sources */,
+ 5D1FF2C3213045EB000EB9B4 /* AppConstants.m in Sources */,
+ 5D1FF2B821304581000EB9B4 /* ConnectionIAPTableViewController.m in Sources */,
+ 5D1FF29C21304515000EB9B4 /* PerformInteractionManager.m in Sources */,
+ 5D1FF2A821304531000EB9B4 /* TextValidator.m in Sources */,
+ 5D1FF28D213044F9000EB9B4 /* AlertManager.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -6435,6 +6431,7 @@
5D3E420B20EAAD6500D8C622 /* SDLTPMS.m in Sources */,
5DD67CB11E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m in Sources */,
5D92935420B2F76500FCC775 /* SDLTemplateColorScheme.m in Sources */,
+ 5D019277214994AC003500F6 /* NSMutableArray+Safe.m in Sources */,
5D61FD1C1A84238C00846EE7 /* SDLOnSystemRequest.m in Sources */,
5D61FC911A84238C00846EE7 /* SDLDisplayCapabilities.m in Sources */,
1EB59CC4202DB40400343A61 /* SDLSeatControlCapabilities.m in Sources */,
@@ -6497,7 +6494,6 @@
DAC572621D10C5020004288B /* SDLPinchGesture.m in Sources */,
1EAA471A203406B2000FE74B /* SDLSISData.m in Sources */,
5D61FCF51A84238C00846EE7 /* SDLMaintenanceModeStatus.m in Sources */,
- 1EAA47162034052D000FE74B /* SDLGPSLocation.m in Sources */,
1EE48E911F2F0EE700B98D08 /* SDLTemperatureUnit.m in Sources */,
5D61FCD81A84238C00846EE7 /* SDLInteractionMode.m in Sources */,
5D61FCB01A84238C00846EE7 /* SDLGenericResponse.m in Sources */,
@@ -6764,7 +6760,6 @@
1EAA4732203442C0000FE74B /* SDLLightName.m in Sources */,
5D61FDC21A84238C00846EE7 /* SDLSystemRequestResponse.m in Sources */,
5D9FDA911F2A7D3400A495C8 /* bson_object.c in Sources */,
- 1EAA4736203458CE000FE74B /* SDLSRGBColor.m in Sources */,
5D61FD001A84238C00846EE7 /* SDLOnAppInterfaceUnregistered.m in Sources */,
DAC5726A1D10D5FC0004288B /* dispatch_timer.m in Sources */,
5D61FC6C1A84238C00846EE7 /* SDLCreateInteractionChoiceSet.m in Sources */,
@@ -6861,6 +6856,7 @@
162E83511A9BDE8B00906325 /* SDLDeleteInteractionChoiceSetResponseSpec.m in Sources */,
DA9F7EB41DCC086400ACAE48 /* SDLDateTimeSpec.m in Sources */,
162E82E41A9BDE8B00906325 /* SDLImageFieldNameSpec.m in Sources */,
+ 882C42CE2108CDB100A44B58 /* SDLLifecycleConfigurationUpdateSpec.m in Sources */,
162E82ED1A9BDE8B00906325 /* SDLMaintenanceModeStatusSpec.m in Sources */,
8B9376DB1F33656C009605C4 /* SDLMetadataTagsSpec.m in Sources */,
5DB92D2D1AC4A34F00C15BB0 /* SDLPrioritizedObjectCollectionSpec.m in Sources */,
@@ -6915,7 +6911,6 @@
1EE8C45A1F387BBB00FDC2CF /* SDLGetInteriorVehicleDataSpec.m in Sources */,
5D6035D5202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m in Sources */,
162E83691A9BDE8B00906325 /* SDLSubscribeButtonResponseSpec.m in Sources */,
- 1EAA477E2036C091000FE74B /* SDLGPSLocationSpec.m in Sources */,
5DAE06751BDEC6D600F9B498 /* SDLArtworkSpec.m in Sources */,
5DA23FF01F2FA0FF009C0313 /* SDLControlFramePayloadEndServiceSpec.m in Sources */,
162E83591A9BDE8B00906325 /* SDLListFilesResponseSpec.m in Sources */,
@@ -7116,7 +7111,6 @@
5DBF0D601F3B3DB4008AF2C9 /* SDLControlFrameVideoStartServiceAckSpec.m in Sources */,
162E83311A9BDE8B00906325 /* SDLListFilesSpec.m in Sources */,
EE5D1B33208EBCA900D17216 /* SDLTCPTransportSpec.m in Sources */,
- 1EAA477C2036BD6D000FE74B /* SDLSDLSRGBColorSpec.m in Sources */,
DA9F7EB01DCC063400ACAE48 /* SDLLocationDetailsSpec.m in Sources */,
5DC978261B7A38640012C2F1 /* SDLGlobalsSpec.m in Sources */,
162E82FF1A9BDE8B00906325 /* SDLTextAlignmentSpec.m in Sources */,
@@ -7219,22 +7213,22 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 88A0AA5C207CFE740075132C /* ConnectionContainerViewController.swift in Sources */,
- 88B849C52080F4B3002A034D /* RPCPermissionsManager.swift in Sources */,
- 8870C3EA208662540070E018 /* AudioManager.swift in Sources */,
- 88DFB055207F96EE0079D19D /* AlertManager.swift in Sources */,
- 888D178F207E7F42008E9F8F /* ButtonManager.swift in Sources */,
- 88A0AA5E207CFE740075132C /* ConnectionTCPTableViewController.swift in Sources */,
- 88DFB053207F8E100079D19D /* Protocol+ProxyManagerDelegate.swift in Sources */,
- 88B849C820812442002A034D /* VehicleDataManager.swift in Sources */,
- 8829569E207CFD0E00EF056C /* AppDelegate.swift in Sources */,
- 8880B2EF21021E37004721DB /* TextValidator.swift in Sources */,
- 88A0AA58207CFE650075132C /* ProxyManager.swift in Sources */,
- 88166B00207E41E900076236 /* MenuManager.swift in Sources */,
- 8814AEAC20AB667B00466E0F /* PerformInteractionManager.swift in Sources */,
- 888D1790207E815C008E9F8F /* AppConstants.m in Sources */,
- 88A0AA5D207CFE740075132C /* ConnectionIAPTableViewController.swift in Sources */,
- 88A0AA56207CFE5D0075132C /* AppUserDefaults.swift in Sources */,
+ 5D1FF2E121304746000EB9B4 /* VehicleDataManager.swift in Sources */,
+ 5D1FF2DB21304746000EB9B4 /* ProxyManager.swift in Sources */,
+ 5D1FF2E621304761000EB9B4 /* Protocol+ProxyManagerDelegate.swift in Sources */,
+ 5D1FF2E521304761000EB9B4 /* AppUserDefaults.swift in Sources */,
+ 5D1FF2EC2130479C000EB9B4 /* ConnectionTCPTableViewController.swift in Sources */,
+ 5D1FF2C4213045EB000EB9B4 /* AppConstants.m in Sources */,
+ 5D1FF2DA21304746000EB9B4 /* ButtonManager.swift in Sources */,
+ 5D1FF2DC21304746000EB9B4 /* AlertManager.swift in Sources */,
+ 5D1FF2EB2130479C000EB9B4 /* ConnectionContainerViewController.swift in Sources */,
+ 5D1FF2E021304746000EB9B4 /* MenuManager.swift in Sources */,
+ 5D1FF2DF21304746000EB9B4 /* PerformInteractionManager.swift in Sources */,
+ 5D1FF2ED2130479C000EB9B4 /* ConnectionIAPTableViewController.swift in Sources */,
+ 5D1FF2DD21304746000EB9B4 /* RPCPermissionsManager.swift in Sources */,
+ 5D1FF2E721304761000EB9B4 /* TextValidator.swift in Sources */,
+ 5D1FF2F8213047C1000EB9B4 /* AppDelegate.swift in Sources */,
+ 5D1FF2DE21304746000EB9B4 /* AudioManager.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -7282,36 +7276,36 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
- 5D0218F71A8E7A7300D1BF62 /* ConnectionTCPTableViewController.storyboard */ = {
+ 5D1FF2A921304567000EB9B4 /* ConnectionTCPTableViewController.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 5D0218F81A8E7A7300D1BF62 /* Base */,
+ 5D1FF2AA21304567000EB9B4 /* Base */,
);
name = ConnectionTCPTableViewController.storyboard;
sourceTree = "<group>";
};
- 5D0219031A8E9F6D00D1BF62 /* ConnectionIAPTableViewController.storyboard */ = {
+ 5D1FF2AB21304567000EB9B4 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 5D0219041A8E9F6D00D1BF62 /* Base */,
+ 5D1FF2AC21304567000EB9B4 /* Base */,
);
- name = ConnectionIAPTableViewController.storyboard;
+ name = Main.storyboard;
sourceTree = "<group>";
};
- 5D4029DF1A76F0760006B0C2 /* LaunchScreen.xib */ = {
+ 5D1FF2AD21304567000EB9B4 /* ConnectionIAPTableViewController.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 5D4029E01A76F0760006B0C2 /* Base */,
+ 5D1FF2AE21304567000EB9B4 /* Base */,
);
- name = LaunchScreen.xib;
+ name = ConnectionIAPTableViewController.storyboard;
sourceTree = "<group>";
};
- 5D4029E11A76F0760006B0C2 /* Main.storyboard */ = {
+ 5D1FF2CF2130466D000EB9B4 /* LaunchScreen.xib */ = {
isa = PBXVariantGroup;
children = (
- 5D4029E21A76F0760006B0C2 /* Base */,
+ 5D1FF2D02130466D000EB9B4 /* Base */,
);
- name = Main.storyboard;
+ name = LaunchScreen.xib;
sourceTree = "<group>";
};
5D616B481D552F7A00553F6B /* SDLLockScreen.storyboard */ = {
@@ -7442,7 +7436,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = NCVC2MHU7M;
- INFOPLIST_FILE = "$(SRCROOT)/SmartDeviceLink_Example/SmartDeviceLink-Example-ObjC-Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
@@ -7456,7 +7450,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = NCVC2MHU7M;
- INFOPLIST_FILE = "$(SRCROOT)/SmartDeviceLink_Example/SmartDeviceLink-Example-ObjC-Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
@@ -7631,12 +7625,12 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = NCVC2MHU7M;
- INFOPLIST_FILE = "SmartDeviceLink-Example-Swift-Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
PRODUCT_NAME = "SDL Example Swift";
- SWIFT_OBJC_BRIDGING_HEADER = "SmartDeviceLink_Example/SmartDeviceLink-Example-Swift-Bridging-Header.h";
+ SWIFT_OBJC_BRIDGING_HEADER = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
};
@@ -7650,12 +7644,12 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = NCVC2MHU7M;
- INFOPLIST_FILE = "SmartDeviceLink-Example-Swift-Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
PRODUCT_NAME = "SDL Example Swift";
- SWIFT_OBJC_BRIDGING_HEADER = "SmartDeviceLink_Example/SmartDeviceLink-Example-Swift-Bridging-Header.h";
+ SWIFT_OBJC_BRIDGING_HEADER = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h";
SWIFT_VERSION = 3.0;
};
name = Release;
diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec
index c37e56f27..3ff04460e 100644
--- a/SmartDeviceLink.podspec
+++ b/SmartDeviceLink.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|
s.name = "SmartDeviceLink"
-s.version = "6.0.1"
+s.version = "6.0.2"
s.summary = "Connect your app with cars!"
s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS"
s.license = { :type => "New BSD", :file => "LICENSE" }
@@ -10,14 +10,14 @@ s.platform = :ios, "8.0"
s.dependency 'BiSON', '~> 1.1.1'
s.source = { :git => "https://github.com/smartdevicelink/sdl_ios.git", :tag => s.version.to_s }
s.requires_arc = true
-s.resource_bundles = { 'SmartDeviceLink' => ['SmartDeviceLink/Assets/**/*'] }
s.default_subspec = 'Default'
-s.subspec 'Default' do |ss|
-ss.source_files = 'SmartDeviceLink/*.{h,m}'
+s.subspec 'Default' do |sdefault|
+sdefault.source_files = 'SmartDeviceLink/*.{h,m}'
+sdefault.resource_bundles = { 'SmartDeviceLink' => ['SmartDeviceLink/Assets/**/*'] }
-ss.public_header_files = [
+sdefault.public_header_files = [
'SmartDeviceLink/NSNumber+NumberType.h',
'SmartDeviceLink/SDLAddCommand.h',
'SmartDeviceLink/SDLAddCommandResponse.h',
@@ -126,7 +126,6 @@ ss.public_header_files = [
'SmartDeviceLink/SDLGetWaypointsResponse.h',
'SmartDeviceLink/SDLGlobalProperty.h',
'SmartDeviceLink/SDLGPSData.h',
-'SmartDeviceLink/SDLGPSLocation.h',
'SmartDeviceLink/SDLHapticRect.h',
'SmartDeviceLink/SDLHeadLampStatus.h',
'SmartDeviceLink/SDLHMICapabilities.h',
@@ -302,7 +301,6 @@ ss.public_header_files = [
'SmartDeviceLink/SDLSpeak.h',
'SmartDeviceLink/SDLSpeakResponse.h',
'SmartDeviceLink/SDLSpeechCapabilities.h',
-'SmartDeviceLink/SDLSRGBColor.h',
'SmartDeviceLink/SDLStartTime.h',
'SmartDeviceLink/SDLStaticIconName.h',
'SmartDeviceLink/SDLStationIDNumber.h',
@@ -380,9 +378,9 @@ ss.public_header_files = [
]
end
-s.subspec 'Swift' do |ss|
-ss.dependency 'SmartDeviceLink/Default'
-ss.source_files = 'SmartDeviceLinkSwift/*.swift'
+s.subspec 'Swift' do |sswift|
+sswift.dependency 'SmartDeviceLink/Default'
+sswift.source_files = 'SmartDeviceLinkSwift/*.swift'
end
end
diff --git a/SmartDeviceLink/Info.plist b/SmartDeviceLink/Info.plist
index 5e6f7b0f0..faf16f886 100644
--- a/SmartDeviceLink/Info.plist
+++ b/SmartDeviceLink/Info.plist
@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
- <string>6.0.0</string>
+ <string>6.0.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
diff --git a/SmartDeviceLink/NSMutableArray+Safe.h b/SmartDeviceLink/NSMutableArray+Safe.h
new file mode 100644
index 000000000..795b186df
--- /dev/null
+++ b/SmartDeviceLink/NSMutableArray+Safe.h
@@ -0,0 +1,15 @@
+//
+// NSMutableArray+NSMutableArray_Safe.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 9/12/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface NSMutableArray<ObjectType> (Safe)
+
+- (void)sdl_safeAddObject:(ObjectType)object;
+
+@end
diff --git a/SmartDeviceLink/NSMutableArray+Safe.m b/SmartDeviceLink/NSMutableArray+Safe.m
new file mode 100644
index 000000000..fb6665b8c
--- /dev/null
+++ b/SmartDeviceLink/NSMutableArray+Safe.m
@@ -0,0 +1,19 @@
+//
+// NSMutableArray+NSMutableArray_Safe.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 9/12/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "NSMutableArray+Safe.h"
+
+@implementation NSMutableArray (Safe)
+
+- (void)sdl_safeAddObject:(id)object {
+ if (object == nil) { return; }
+
+ [self addObject:object];
+}
+
+@end
diff --git a/SmartDeviceLink/NSMutableDictionary+SafeRemove.h b/SmartDeviceLink/NSMutableDictionary+SafeRemove.h
index c72371395..4c238cde4 100644
--- a/SmartDeviceLink/NSMutableDictionary+SafeRemove.h
+++ b/SmartDeviceLink/NSMutableDictionary+SafeRemove.h
@@ -8,30 +8,28 @@
#import <Foundation/Foundation.h>
-@interface NSMutableDictionary <KeyType, ObjectType>
-(SafeRemove)
+@interface NSMutableDictionary <KeyType, ObjectType> (SafeRemove)
- /**
+/**
* Safely attempt to remove a key/object pair by no-oping if they don't exist in the Mutable Dictionary instead of throwing an exception
*
* @param aKey The key to attempt removal of
*
* @return Whether or not the key/object pair existed to remove.
*/
- - (BOOL)safeRemoveObjectForKey : (KeyType)aKey;
+- (BOOL)safeRemoveObjectForKey : (KeyType)aKey;
@end
-@interface NSMapTable <KeyType, ObjectType>
-(SafeRemove)
+@interface NSMapTable <KeyType, ObjectType> (SafeRemove)
- /**
+/**
* Safely attempt to remove a key/object pair by no-oping if they don't exist in the MapTable instead of throwing an exception
*
* @param aKey The key to attempt removal of
*
* @return Whether or not the key/object pair existed to remove.
*/
- - (BOOL)safeRemoveObjectForKey : (KeyType)aKey;
+- (BOOL)safeRemoveObjectForKey : (KeyType)aKey;
@end
diff --git a/SmartDeviceLink/NSMutableDictionary+Store.h b/SmartDeviceLink/NSMutableDictionary+Store.h
index e4160bc7f..baeb46ca8 100644
--- a/SmartDeviceLink/NSMutableDictionary+Store.h
+++ b/SmartDeviceLink/NSMutableDictionary+Store.h
@@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
typedef NSString* SDLName SDL_SWIFT_ENUM;
typedef NSString* SDLEnum SDL_SWIFT_ENUM;
-@interface NSMutableDictionary (Store)
+@interface NSDictionary (Store)
- (void)sdl_setObject:(NSObject *)object forName:(SDLName)name;
- (nullable id)sdl_objectForName:(SDLName)name;
diff --git a/SmartDeviceLink/NSMutableDictionary+Store.m b/SmartDeviceLink/NSMutableDictionary+Store.m
index cd681bd46..777489b43 100644
--- a/SmartDeviceLink/NSMutableDictionary+Store.m
+++ b/SmartDeviceLink/NSMutableDictionary+Store.m
@@ -26,7 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable id)sdl_objectForName:(SDLName)name ofClass:(Class)classType {
NSObject *obj = [self sdl_objectForName:name];
- if (obj == nil || [obj isKindOfClass:classType.class]) {
+ if (obj == nil || [obj isKindOfClass:classType]) {
return obj;
} else {
return [[classType alloc] initWithDictionary:(NSDictionary *)obj];
@@ -37,12 +37,12 @@ NS_ASSUME_NONNULL_BEGIN
NSArray *array = [self sdl_objectForName:name];
if ([array isEqual:[NSNull null]]) {
return [NSMutableArray array];
- } else if (array.count < 1 || [array.firstObject isMemberOfClass:classType.class]) {
+ } else if (array.count < 1 || [array.firstObject isMemberOfClass:classType]) {
// It's an array of the actual class type, just return
return array;
} else {
// It's an array of dictionaries, make them into their class type
- NSMutableArray *newList = [NSMutableArray arrayWithCapacity:[array count]];
+ NSMutableArray *newList = [NSMutableArray arrayWithCapacity:array.count];
for (NSDictionary<NSString *, id> *dict in array) {
[newList addObject:[[classType alloc] initWithDictionary:dict]];
}
diff --git a/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m b/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m
index a891f7268..5c67e3e8a 100644
--- a/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m
+++ b/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m
@@ -80,7 +80,7 @@ NS_ASSUME_NONNULL_BEGIN
for (SDLRPCRequest *request in self.requests) {
if (self.isCancelled) {
[self sdl_abortOperationWithRequest:request];
- break;
+ return;
}
[self sdl_sendRequest:request];
@@ -119,10 +119,9 @@ NS_ASSUME_NONNULL_BEGIN
}
- (void)sdl_abortOperationWithRequest:(SDLRPCRequest *)request {
- if (self.isFinished) { return; }
self.requestFailed = YES;
- for (NSUInteger i = self.requestsComplete; i <= self.requests.count; i++) {
+ for (NSUInteger i = self.requestsComplete; i < self.requests.count; i++) {
if (self.progressHandler != NULL) {
self.progressHandler(self.requests[i], nil, [NSError sdl_lifecycle_multipleRequestsCancelled], self.percentComplete);
}
@@ -130,6 +129,10 @@ NS_ASSUME_NONNULL_BEGIN
if (self.responseHandler != NULL) {
self.responseHandler(request, nil, [NSError sdl_lifecycle_multipleRequestsCancelled]);
}
+
+ if (self.completionHandler != NULL) {
+ self.completionHandler(NO);
+ }
}
[self finishOperation];
diff --git a/SmartDeviceLink/SDLButtonName.h b/SmartDeviceLink/SDLButtonName.h
index 5299910c8..cb767ef35 100644
--- a/SmartDeviceLink/SDLButtonName.h
+++ b/SmartDeviceLink/SDLButtonName.h
@@ -16,11 +16,16 @@
typedef SDLEnum SDLButtonName SDL_SWIFT_ENUM;
/**
- * Represents the button usually labeled "OK". A typical use of this button is for the user to press it to make a selection.
+ * Represents the button usually labeled "OK". A typical use of this button is for the user to press it to make a selection. Prior to SDL Core 5.0 (iOS Proxy v.6.1), Ok was used for both "OK" buttons *AND* PlayPause. In 5.0, PlayPause was introduced to reduce confusion, and you should use the one you intend for your use case (usually PlayPause). Until the next proxy breaking change, however, subscribing to this button name will continue to subscribe you to PlayPause so that your code does not break. That means that if you subscribe to both Ok and PlayPause, you will receive duplicate notifications.
*/
extern SDLButtonName const SDLButtonNameOk;
/**
+ * Represents the play/pause button for media apps. Replaces "OK" on sub-5.0 head units, compliments it on 5.0 head units and later.
+ */
+extern SDLButtonName const SDLButtonNamePlayPause;
+
+/**
* Represents the seek-left button. A typical use of this button is for the user to scroll to the left through menu choices one menu item per press.
*/
extern SDLButtonName const SDLButtonNameSeekLeft;
diff --git a/SmartDeviceLink/SDLButtonName.m b/SmartDeviceLink/SDLButtonName.m
index 8283fa5a2..fe8e1ac33 100644
--- a/SmartDeviceLink/SDLButtonName.m
+++ b/SmartDeviceLink/SDLButtonName.m
@@ -5,6 +5,7 @@
#import "SDLButtonName.h"
SDLButtonName const SDLButtonNameOk = @"OK";
+SDLButtonName const SDLButtonNamePlayPause = @"PLAY_PAUSE";
SDLButtonName const SDLButtonNameSeekLeft = @"SEEKLEFT";
SDLButtonName const SDLButtonNameSeekRight = @"SEEKRIGHT";
SDLButtonName const SDLButtonNameTuneUp = @"TUNEUP";
diff --git a/SmartDeviceLink/SDLChoice.h b/SmartDeviceLink/SDLChoice.h
index 96860909f..9abdb5630 100644
--- a/SmartDeviceLink/SDLChoice.h
+++ b/SmartDeviceLink/SDLChoice.h
@@ -15,9 +15,9 @@ NS_ASSUME_NONNULL_BEGIN
@interface SDLChoice : SDLRPCStruct
-- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(NSArray<NSString *> *)vrCommands;
+- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(nullable NSArray<NSString *> *)vrCommands;
-- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(NSArray<NSString *> *)vrCommands image:(nullable SDLImage *)image secondaryText:(nullable NSString *)secondaryText secondaryImage:(nullable SDLImage *)secondaryImage tertiaryText:(nullable NSString *)tertiaryText;
+- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(nullable NSArray<NSString *> *)vrCommands image:(nullable SDLImage *)image secondaryText:(nullable NSString *)secondaryText secondaryImage:(nullable SDLImage *)secondaryImage tertiaryText:(nullable NSString *)tertiaryText;
/**
* The application-scoped identifier that uniquely identifies this choice
@@ -36,9 +36,11 @@ NS_ASSUME_NONNULL_BEGIN
/**
* VR synonyms for this choice
*
- * Required, Array of Strings, Array length 1 - 100, Max String length 99 chars
+ * Optional, Array of Strings, Array length 1 - 100, Max String length 99 chars
+ *
+ * @discussion, VR commands are optional beginning with SDL Core v.5.0. They are required for previous versions.
*/
-@property (strong, nonatomic) NSArray<NSString *> *vrCommands;
+@property (nullable, strong, nonatomic) NSArray<NSString *> *vrCommands;
/**
* The image of the choice
diff --git a/SmartDeviceLink/SDLChoice.m b/SmartDeviceLink/SDLChoice.m
index 919ef6102..7545ec4f5 100644
--- a/SmartDeviceLink/SDLChoice.m
+++ b/SmartDeviceLink/SDLChoice.m
@@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SDLChoice
-- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(NSArray<NSString *> *)vrCommands image:(nullable SDLImage *)image secondaryText:(nullable NSString *)secondaryText secondaryImage:(nullable SDLImage *)secondaryImage tertiaryText:(nullable NSString *)tertiaryText {
+- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(nullable NSArray<NSString *> *)vrCommands image:(nullable SDLImage *)image secondaryText:(nullable NSString *)secondaryText secondaryImage:(nullable SDLImage *)secondaryImage tertiaryText:(nullable NSString *)tertiaryText {
self = [self initWithId:choiceId menuName:menuName vrCommands:vrCommands];
if (!self) {
return nil;
@@ -25,7 +25,7 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
-- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(NSArray<NSString *> *)vrCommands {
+- (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrCommands:(nullable NSArray<NSString *> *)vrCommands {
self = [self init];
if (!self) {
return nil;
@@ -54,11 +54,11 @@ NS_ASSUME_NONNULL_BEGIN
return [store sdl_objectForName:SDLNameMenuName];
}
-- (void)setVrCommands:(NSArray<NSString *> *)vrCommands {
+- (void)setVrCommands:(nullable NSArray<NSString *> *)vrCommands {
[store sdl_setObject:vrCommands forName:SDLNameVRCommands];
}
-- (NSArray<NSString *> *)vrCommands {
+- (nullable NSArray<NSString *> *)vrCommands {
return [store sdl_objectForName:SDLNameVRCommands];
}
diff --git a/SmartDeviceLink/SDLChoiceSet.m b/SmartDeviceLink/SDLChoiceSet.m
index d98f23429..62bd97470 100644
--- a/SmartDeviceLink/SDLChoiceSet.m
+++ b/SmartDeviceLink/SDLChoiceSet.m
@@ -62,23 +62,29 @@ static SDLChoiceSetLayout _defaultLayout = SDLChoiceSetLayoutList;
}
NSMutableSet<NSString *> *choiceTextSet = [NSMutableSet setWithCapacity:choices.count];
+ NSMutableSet<NSString *> *uniqueVoiceCommands = [NSMutableSet set];
+ NSUInteger allVoiceCommandsCount = 0;
+ NSUInteger choiceCellWithVoiceCommandCount = 0;
for (SDLChoiceCell *cell in choices) {
[choiceTextSet addObject:cell.text];
+ if (cell.voiceCommands == nil) { continue; }
+ [uniqueVoiceCommands addObjectsFromArray:cell.voiceCommands];
+ choiceCellWithVoiceCommandCount += 1;
+ allVoiceCommandsCount += cell.voiceCommands.count;
}
if (choiceTextSet.count < choices.count) {
- SDLLogW(@"Attempted to create a choice set with duplicate cell text. Cell text must be unique.");
+ SDLLogE(@"Attempted to create a choice set with duplicate cell text. Cell text must be unique. The choice set will not be set.");
return nil;
}
- NSMutableArray<NSArray<NSString *> *> *nonNilVoiceCommands = [NSMutableArray array];
- for (SDLChoiceCell *cell in choices) {
- if (cell.voiceCommands != nil) {
- [nonNilVoiceCommands addObject:cell.voiceCommands];
- }
+ // All or none of the choices must have VR commands
+ if ((choiceCellWithVoiceCommandCount > 0 && choiceCellWithVoiceCommandCount < choices.count)) {
+ SDLLogE(@"If using voice recognition commands, all of the choice set cells must have unique VR commands. There are %lu cells with unique voice commands and %lu total cells. The choice set will not be set.", (unsigned long)choiceCellWithVoiceCommandCount, (unsigned long)choices.count);
+ return nil;
}
- NSMutableSet<NSArray<NSString *> *> *choiceVoiceCommandSet = [NSMutableSet setWithArray:nonNilVoiceCommands];
- if (choiceVoiceCommandSet.count < nonNilVoiceCommands.count) {
- SDLLogW(@"Attempted to create a choice set with duplicate voice commands. Voice commands must be unique.");
+ // All the VR commands must be unique
+ if (uniqueVoiceCommands.count < allVoiceCommandsCount) {
+ SDLLogE(@"If using voice recognition commands, all VR commands must be unique. There are %lu unique VR commands and %lu VR commands. The choice set will not be set.", (unsigned long)uniqueVoiceCommands.count, (unsigned long)allVoiceCommandsCount);
return nil;
}
diff --git a/SmartDeviceLink/SDLChoiceSetManager.m b/SmartDeviceLink/SDLChoiceSetManager.m
index b15baa0bd..35037ccc0 100644
--- a/SmartDeviceLink/SDLChoiceSetManager.m
+++ b/SmartDeviceLink/SDLChoiceSetManager.m
@@ -427,16 +427,13 @@ UInt16 const ChoiceCellIdMin = 1;
}
// We need to check for this to make sure we can currently present the dialog. If the current context is HMI_OBSCURED or ALERT, we have to wait for MAIN to present
- SDLSystemContext oldSystemContext = self.currentSystemContext;
self.currentSystemContext = hmiStatus.systemContext;
if ([self.currentSystemContext isEqualToEnum:SDLSystemContextHMIObscured] || [self.currentSystemContext isEqualToEnum:SDLSystemContextAlert]) {
self.transactionQueue.suspended = YES;
}
- if (([oldSystemContext isEqualToEnum:SDLSystemContextHMIObscured] || [oldSystemContext isEqualToEnum:SDLSystemContextAlert])
- && [self.currentSystemContext isEqualToEnum:SDLSystemContextMain]
- && ![self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
+ if ([self.currentSystemContext isEqualToEnum:SDLSystemContextMain] && ![self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
self.transactionQueue.suspended = NO;
}
}
diff --git a/SmartDeviceLink/SDLDeleteFileOperation.m b/SmartDeviceLink/SDLDeleteFileOperation.m
index f45f3cbdd..4d974a2ad 100644
--- a/SmartDeviceLink/SDLDeleteFileOperation.m
+++ b/SmartDeviceLink/SDLDeleteFileOperation.m
@@ -48,20 +48,21 @@ NS_ASSUME_NONNULL_BEGIN
SDLDeleteFile *deleteFile = [[SDLDeleteFile alloc] initWithFileName:self.fileName];
typeof(self) weakself = self;
- [self.connectionManager sendConnectionManagerRequest:deleteFile
- withResponseHandler:^(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *response, NSError *error) {
- // Pull out the parameters
- SDLDeleteFileResponse *deleteFileResponse = (SDLDeleteFileResponse *)response;
- BOOL success = [deleteFileResponse.success boolValue];
- NSUInteger bytesAvailable = [deleteFileResponse.spaceAvailable unsignedIntegerValue];
-
- // Callback
- if (weakself.completionHandler != nil) {
- weakself.completionHandler(success, bytesAvailable, error);
- }
-
- [weakself finishOperation];
- }];
+ [self.connectionManager sendConnectionManagerRequest:deleteFile withResponseHandler:^(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *response, NSError *error) {
+ // Pull out the parameters
+ SDLDeleteFileResponse *deleteFileResponse = (SDLDeleteFileResponse *)response;
+ BOOL success = [deleteFileResponse.success boolValue];
+
+ // If spaceAvailable is nil, set it to the max value
+ NSUInteger bytesAvailable = deleteFileResponse.spaceAvailable != nil ? deleteFileResponse.spaceAvailable.unsignedIntegerValue : 2000000000;
+
+ // Callback
+ if (weakself.completionHandler != nil) {
+ weakself.completionHandler(success, bytesAvailable, error);
+ }
+
+ [weakself finishOperation];
+ }];
}
diff --git a/SmartDeviceLink/SDLDeleteFileResponse.h b/SmartDeviceLink/SDLDeleteFileResponse.h
index 8c3fc4fc5..c639dcdd7 100644
--- a/SmartDeviceLink/SDLDeleteFileResponse.h
+++ b/SmartDeviceLink/SDLDeleteFileResponse.h
@@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
The remaining available space for your application to store data on the remote system.
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *spaceAvailable;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *spaceAvailable;
@end
diff --git a/SmartDeviceLink/SDLDeleteFileResponse.m b/SmartDeviceLink/SDLDeleteFileResponse.m
index 5c54b9852..42689fafe 100644
--- a/SmartDeviceLink/SDLDeleteFileResponse.m
+++ b/SmartDeviceLink/SDLDeleteFileResponse.m
@@ -17,11 +17,11 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
-- (void)setSpaceAvailable:(NSNumber<SDLInt> *)spaceAvailable {
+- (void)setSpaceAvailable:(nullable NSNumber<SDLInt> *)spaceAvailable {
[parameters sdl_setObject:spaceAvailable forName:SDLNameSpaceAvailable];
}
-- (NSNumber<SDLInt> *)spaceAvailable {
+- (nullable NSNumber<SDLInt> *)spaceAvailable {
return [parameters sdl_objectForName:SDLNameSpaceAvailable];
}
diff --git a/SmartDeviceLink/SDLEqualizerSettings.h b/SmartDeviceLink/SDLEqualizerSettings.h
index 086774ddb..64da62126 100644
--- a/SmartDeviceLink/SDLEqualizerSettings.h
+++ b/SmartDeviceLink/SDLEqualizerSettings.h
@@ -13,8 +13,6 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithChannelId:(UInt8)channelId channelSetting:(UInt8)channelSetting;
-- (instancetype)initWithChannelId:(UInt8)channelId channelName:(nullable NSString *)channelName channelSetting:(UInt8)channelSetting;
-
/**
* @abstract Read-only channel / frequency name
* (e.i. "Treble, Midrange, Bass" or "125 Hz")
diff --git a/SmartDeviceLink/SDLEqualizerSettings.m b/SmartDeviceLink/SDLEqualizerSettings.m
index 2f2452717..1106d454e 100644
--- a/SmartDeviceLink/SDLEqualizerSettings.m
+++ b/SmartDeviceLink/SDLEqualizerSettings.m
@@ -10,10 +10,6 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SDLEqualizerSettings
- (instancetype)initWithChannelId:(UInt8)channelId channelSetting:(UInt8)channelSetting {
- return [self initWithChannelId:channelId channelName:nil channelSetting:channelSetting];
-}
-
-- (instancetype)initWithChannelId:(UInt8)channelId channelName:(nullable NSString *)channelName channelSetting:(UInt8)channelSetting {
self = [self init];
if(!self) {
return nil;
@@ -21,7 +17,6 @@ NS_ASSUME_NONNULL_BEGIN
self.channelId = @(channelId);
self.channelSetting = @(channelSetting);
- self.channelName = channelName;
return self;
}
diff --git a/SmartDeviceLink/SDLFileManager.m b/SmartDeviceLink/SDLFileManager.m
index 717660f47..9ff7498ef 100644
--- a/SmartDeviceLink/SDLFileManager.m
+++ b/SmartDeviceLink/SDLFileManager.m
@@ -228,13 +228,13 @@ SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError";
__strong typeof(weakSelf) strongSelf = weakSelf;
// Mutate self based on the changes
- strongSelf.bytesAvailable = bytesAvailable;
if (success) {
+ strongSelf.bytesAvailable = bytesAvailable;
[strongSelf.mutableRemoteFileNames removeObject:name];
}
if (handler != nil) {
- handler(success, self.bytesAvailable, error);
+ handler(success, bytesAvailable, error);
}
}];
@@ -385,11 +385,9 @@ SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError";
if (self.uploadsInProgress[file.name]) {
[self.uploadsInProgress removeObjectForKey:file.name];
}
-
- if (bytesAvailable != 0) {
- weakSelf.bytesAvailable = bytesAvailable;
- }
+
if (success) {
+ weakSelf.bytesAvailable = bytesAvailable;
[weakSelf.mutableRemoteFileNames addObject:fileName];
[weakSelf.uploadedEphemeralFileNames addObject:fileName];
} else {
diff --git a/SmartDeviceLink/SDLGPSData.h b/SmartDeviceLink/SDLGPSData.h
index 12ddd90b5..f0bead9f7 100644
--- a/SmartDeviceLink/SDLGPSData.h
+++ b/SmartDeviceLink/SDLGPSData.h
@@ -34,122 +34,122 @@ NS_ASSUME_NONNULL_BEGIN
/**
* utc year
*
- * Required, Integer, 2010 - 2100
+ * Optional, Integer, 2010 - 2100
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *utcYear;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *utcYear;
/**
* utc month
*
- * Required, Integer, 1 - 12
+ * Optional, Integer, 1 - 12
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *utcMonth;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *utcMonth;
/**
* utc day
*
- * Required, Integer, 1 - 31
+ * Optional, Integer, 1 - 31
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *utcDay;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *utcDay;
/**
* utc hours
*
- * Required, Integer, 0 - 23
+ * Optional, Integer, 0 - 23
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *utcHours;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *utcHours;
/**
* utc minutes
*
- * Required, Integer, 0 - 59
+ * Optional, Integer, 0 - 59
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *utcMinutes;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *utcMinutes;
/**
* utc seconds
*
- * Required, Integer, 0 - 59
+ * Optional, Integer, 0 - 59
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *utcSeconds;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *utcSeconds;
/**
- * Potential Compass Directions
+ * Optional, Potential Compass Directions
*/
-@property (strong, nonatomic) SDLCompassDirection compassDirection;
+@property (nullable, strong, nonatomic) SDLCompassDirection compassDirection;
/**
* The 3D positional dilution of precision.
*
* @discussion If undefined or unavailable, then value shall be set to 0
*
- * Required, Float, 0.0 - 10.0
+ * Required, Float, 0.0 - 1000.0
*/
-@property (strong, nonatomic) NSNumber<SDLFloat> *pdop;
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *pdop;
/**
* The horizontal dilution of precision
*
* @discussion If undefined or unavailable, then value shall be set to 0
*
- * Required, Float, 0.0 - 10.0
+ * Required, Float, 0.0 - 1000.0
*/
-@property (strong, nonatomic) NSNumber<SDLFloat> *hdop;
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *hdop;
/**
* the vertical dilution of precision
*
* @discussion If undefined or unavailable, then value shall be set to 0
*
- * Required, Float, 0.0 - 10.0
+ * Required, Float, 0.0 - 1000.0
*/
-@property (strong, nonatomic) NSNumber<SDLFloat> *vdop;
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *vdop;
/**
* What the coordinates are based on
*
* @discussion YES, if coordinates are based on satellites. NO, if based on dead reckoning.
*
- * Required, Boolean
+ * Optional, Boolean
*/
-@property (strong, nonatomic) NSNumber<SDLBool> *actual;
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *actual;
/**
* The number of satellites in view
*
- * Required, Integer, 0 - 31
+ * Optional, Integer, 0 - 31
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *satellites;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *satellites;
/**
* The supported dimensions of the GPS
*
- * Required
+ * Optional
*/
-@property (strong, nonatomic) SDLDimension dimension;
+@property (nullable, strong, nonatomic) SDLDimension dimension;
/**
* Altitude in meters
*
- * Required, Float, -10000.0 - 10000.0
+ * Optional, Float, -10000.0 - 10000.0
*/
-@property (strong, nonatomic) NSNumber<SDLFloat> *altitude;
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *altitude;
/**
* Heading based on the GPS data.
*
* @discussion North is 0, East is 90, etc. Resolution is 0.01
*
- * Required, Float, 0.0 - 359.99
+ * Optional, Float, 0.0 - 359.99
*/
-@property (strong, nonatomic) NSNumber<SDLFloat> *heading;
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *heading;
/**
* Speed in KPH
*
- * Required, Float, 0.0 - 500.0
+ * Optional, Float, 0.0 - 500.0
*/
-@property (strong, nonatomic) NSNumber<SDLFloat> *speed;
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *speed;
@end
diff --git a/SmartDeviceLink/SDLGPSData.m b/SmartDeviceLink/SDLGPSData.m
index 8bd17706f..eda7edb31 100644
--- a/SmartDeviceLink/SDLGPSData.m
+++ b/SmartDeviceLink/SDLGPSData.m
@@ -26,131 +26,131 @@ NS_ASSUME_NONNULL_BEGIN
return [store sdl_objectForName:SDLNameLatitudeDegrees];
}
-- (void)setUtcYear:(NSNumber<SDLInt> *)utcYear {
+- (void)setUtcYear:(nullable NSNumber<SDLInt> *)utcYear {
[store sdl_setObject:utcYear forName:SDLNameUTCYear];
}
-- (NSNumber<SDLInt> *)utcYear {
+- (nullable NSNumber<SDLInt> *)utcYear {
return [store sdl_objectForName:SDLNameUTCYear];
}
-- (void)setUtcMonth:(NSNumber<SDLInt> *)utcMonth {
+- (void)setUtcMonth:(nullable NSNumber<SDLInt> *)utcMonth {
[store sdl_setObject:utcMonth forName:SDLNameUTCMonth];
}
-- (NSNumber<SDLInt> *)utcMonth {
+- (nullable NSNumber<SDLInt> *)utcMonth {
return [store sdl_objectForName:SDLNameUTCMonth];
}
-- (void)setUtcDay:(NSNumber<SDLInt> *)utcDay {
+- (void)setUtcDay:(nullable NSNumber<SDLInt> *)utcDay {
[store sdl_setObject:utcDay forName:SDLNameUTCDay];
}
-- (NSNumber<SDLInt> *)utcDay {
+- (nullable NSNumber<SDLInt> *)utcDay {
return [store sdl_objectForName:SDLNameUTCDay];
}
-- (void)setUtcHours:(NSNumber<SDLInt> *)utcHours {
+- (void)setUtcHours:(nullable NSNumber<SDLInt> *)utcHours {
[store sdl_setObject:utcHours forName:SDLNameUTCHours];
}
-- (NSNumber<SDLInt> *)utcHours {
+- (nullable NSNumber<SDLInt> *)utcHours {
return [store sdl_objectForName:SDLNameUTCHours];
}
-- (void)setUtcMinutes:(NSNumber<SDLInt> *)utcMinutes {
+- (void)setUtcMinutes:(nullable NSNumber<SDLInt> *)utcMinutes {
[store sdl_setObject:utcMinutes forName:SDLNameUTCMinutes];
}
-- (NSNumber<SDLInt> *)utcMinutes {
+- (nullable NSNumber<SDLInt> *)utcMinutes {
return [store sdl_objectForName:SDLNameUTCMinutes];
}
-- (void)setUtcSeconds:(NSNumber<SDLInt> *)utcSeconds {
+- (void)setUtcSeconds:(nullable NSNumber<SDLInt> *)utcSeconds {
[store sdl_setObject:utcSeconds forName:SDLNameUTCSeconds];
}
-- (NSNumber<SDLInt> *)utcSeconds {
+- (nullable NSNumber<SDLInt> *)utcSeconds {
return [store sdl_objectForName:SDLNameUTCSeconds];
}
-- (void)setCompassDirection:(SDLCompassDirection)compassDirection {
+- (void)setCompassDirection:(nullable SDLCompassDirection)compassDirection {
[store sdl_setObject:compassDirection forName:SDLNameCompassDirection];
}
-- (SDLCompassDirection)compassDirection {
+- (nullable SDLCompassDirection)compassDirection {
return [store sdl_objectForName:SDLNameCompassDirection];
}
-- (void)setPdop:(NSNumber<SDLFloat> *)pdop {
+- (void)setPdop:(nullable NSNumber<SDLFloat> *)pdop {
[store sdl_setObject:pdop forName:SDLNamePDOP];
}
-- (NSNumber<SDLFloat> *)pdop {
+- (nullable NSNumber<SDLFloat> *)pdop {
return [store sdl_objectForName:SDLNamePDOP];
}
-- (void)setHdop:(NSNumber<SDLFloat> *)hdop {
+- (void)setHdop:(nullable NSNumber<SDLFloat> *)hdop {
[store sdl_setObject:hdop forName:SDLNameHDOP];
}
-- (NSNumber<SDLFloat> *)hdop {
+- (nullable NSNumber<SDLFloat> *)hdop {
return [store sdl_objectForName:SDLNameHDOP];
}
-- (void)setVdop:(NSNumber<SDLFloat> *)vdop {
+- (void)setVdop:(nullable NSNumber<SDLFloat> *)vdop {
[store sdl_setObject:vdop forName:SDLNameVDOP];
}
-- (NSNumber<SDLFloat> *)vdop {
+- (nullable NSNumber<SDLFloat> *)vdop {
return [store sdl_objectForName:SDLNameVDOP];
}
-- (void)setActual:(NSNumber<SDLBool> *)actual {
+- (void)setActual:(nullable NSNumber<SDLBool> *)actual {
[store sdl_setObject:actual forName:SDLNameActual];
}
-- (NSNumber<SDLBool> *)actual {
+- (nullable NSNumber<SDLBool> *)actual {
return [store sdl_objectForName:SDLNameActual];
}
-- (void)setSatellites:(NSNumber<SDLInt> *)satellites {
+- (void)setSatellites:(nullable NSNumber<SDLInt> *)satellites {
[store sdl_setObject:satellites forName:SDLNameSatellites];
}
-- (NSNumber<SDLInt> *)satellites {
+- (nullable NSNumber<SDLInt> *)satellites {
return [store sdl_objectForName:SDLNameSatellites];
}
-- (void)setDimension:(SDLDimension)dimension {
+- (void)setDimension:(nullable SDLDimension)dimension {
[store sdl_setObject:dimension forName:SDLNameDimension];
}
-- (SDLDimension)dimension {
+- (nullable SDLDimension)dimension {
return [store sdl_objectForName:SDLNameDimension];
}
-- (void)setAltitude:(NSNumber<SDLFloat> *)altitude {
+- (void)setAltitude:(nullable NSNumber<SDLFloat> *)altitude {
[store sdl_setObject:altitude forName:SDLNameAltitude];
}
-- (NSNumber<SDLFloat> *)altitude {
+- (nullable NSNumber<SDLFloat> *)altitude {
return [store sdl_objectForName:SDLNameAltitude];
}
-- (void)setHeading:(NSNumber<SDLFloat> *)heading {
+- (void)setHeading:(nullable NSNumber<SDLFloat> *)heading {
[store sdl_setObject:heading forName:SDLNameHeading];
}
-- (NSNumber<SDLFloat> *)heading {
+- (nullable NSNumber<SDLFloat> *)heading {
return [store sdl_objectForName:SDLNameHeading];
}
-- (void)setSpeed:(NSNumber<SDLFloat> *)speed {
+- (void)setSpeed:(nullable NSNumber<SDLFloat> *)speed {
[store sdl_setObject:speed forName:SDLNameSpeed];
}
-- (NSNumber<SDLFloat> *)speed {
+- (nullable NSNumber<SDLFloat> *)speed {
return [store sdl_objectForName:SDLNameSpeed];
}
diff --git a/SmartDeviceLink/SDLGPSLocation.h b/SmartDeviceLink/SDLGPSLocation.h
deleted file mode 100644
index 1019fc3d7..000000000
--- a/SmartDeviceLink/SDLGPSLocation.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// SDLGPSLocation.h
-//
-
-#import "SDLRPCMessage.h"
-
-/**
- * Provides teh 3-dimensional geographic station location.
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLGPSLocation : SDLRPCStruct
-
-- (instancetype)initWithLatitudeDegrees:(double)latitudeDegrees longitudeDegrees:(double)longitudeDegrees;
-
-- (instancetype)initWithLatitudeDegrees:(double)latitudeDegrees longitudeDegrees:(double)longitudeDegrees altitudeMeters:(nullable NSNumber<SDLFloat> *)altitudeMeters;
-
-/**
- * @abstract longitude degrees
- *
- * Required, Float, -180 - 180
- */
-@property (strong, nonatomic) NSNumber<SDLFloat> *longitudeDegrees;
-
-/**
- * @abstract latitude degrees
- *
- * Required, Float, -90 - 90
- */
-@property (strong, nonatomic) NSNumber<SDLFloat> *latitudeDegrees;
-/**
- * @abstract altitude in meters
- *
- * Optional, Float, -99999.0 - 99999
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *altitudeMeters;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGPSLocation.m b/SmartDeviceLink/SDLGPSLocation.m
deleted file mode 100644
index 4a2fce5b1..000000000
--- a/SmartDeviceLink/SDLGPSLocation.m
+++ /dev/null
@@ -1,54 +0,0 @@
-// SDLGPSLocation.m
-//
-
-#import "SDLGPSLocation.h"
-#import "SDLNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLGPSLocation
-
-- (instancetype)initWithLatitudeDegrees:(double)latitudeDegrees longitudeDegrees:(double)longitudeDegrees {
- return [self initWithLatitudeDegrees:latitudeDegrees longitudeDegrees:longitudeDegrees altitudeMeters:nil];
-}
-
--(instancetype)initWithLatitudeDegrees:(double)latitudeDegrees longitudeDegrees:(double)longitudeDegrees altitudeMeters:(nullable NSNumber<SDLFloat> *)altitudeMeters {
- self = [self init];
- if(!self) {
- return nil;
- }
-
- self.latitudeDegrees = @(latitudeDegrees);
- self.longitudeDegrees = @(longitudeDegrees);
- self.altitudeMeters = altitudeMeters;
-
- return self;
-}
-
-- (void)setLongitudeDegrees:(NSNumber<SDLFloat> *)longitudeDegrees {
- [store sdl_setObject:longitudeDegrees forName:SDLNameLongitudeDegrees];
-}
-
-- (NSNumber<SDLFloat> *)longitudeDegrees {
- return [store sdl_objectForName:SDLNameLongitudeDegrees];
-}
-
-- (void)setLatitudeDegrees:(NSNumber<SDLFloat> *)latitudeDegrees {
- [store sdl_setObject:latitudeDegrees forName:SDLNameLatitudeDegrees];
-}
-
-- (NSNumber<SDLFloat> *)latitudeDegrees {
- return [store sdl_objectForName:SDLNameLatitudeDegrees];
-}
-- (void)setAltitudeMeters:(nullable NSNumber<SDLFloat> *)altitudeMeters {
- [store sdl_setObject:altitudeMeters forName:SDLNameAltitudeMeters];
-}
-
-- (nullable NSNumber<SDLFloat> *)altitudeMeters {
- return [store sdl_objectForName:SDLNameAltitudeMeters];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGlobals.h b/SmartDeviceLink/SDLGlobals.h
index 5b9220398..84407f11d 100644
--- a/SmartDeviceLink/SDLGlobals.h
+++ b/SmartDeviceLink/SDLGlobals.h
@@ -9,6 +9,7 @@
#import <Foundation/Foundation.h>
#import "SDLProtocolHeader.h"
+#import "SDLSyncMsgVersion.h"
NS_ASSUME_NONNULL_BEGIN
@@ -17,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
#define BLOCK_RETURN return
extern NSString *const SDLMaxProxyProtocolVersion;
+extern NSString *const SDLMaxProxyRPCVersion;
extern NSUInteger const SDLDefaultMTUSize;
extern NSUInteger const SDLV1MTUSize;
@@ -24,9 +26,10 @@ extern NSUInteger const SDLV3MTUSize;
@interface SDLGlobals : NSObject
-@property (strong, nonatomic, readonly) NSString *protocolVersion;
+@property (copy, nonatomic, readonly) NSString *protocolVersion;
@property (assign, nonatomic, readonly) NSInteger majorProtocolVersion;
-@property (strong, nonatomic) NSString *maxHeadUnitVersion;
+@property (strong, nonatomic) SDLSyncMsgVersion *rpcVersion;
+@property (copy, nonatomic) NSString *maxHeadUnitVersion;
+ (instancetype)sharedGlobals;
diff --git a/SmartDeviceLink/SDLGlobals.m b/SmartDeviceLink/SDLGlobals.m
index c3ec574ce..d5364a119 100644
--- a/SmartDeviceLink/SDLGlobals.m
+++ b/SmartDeviceLink/SDLGlobals.m
@@ -14,20 +14,21 @@ NS_ASSUME_NONNULL_BEGIN
// VERSION DEPENDENT CODE
NSString *const SDLMaxProxyProtocolVersion = @"5.1.0";
+NSString *const SDLMaxProxyRPCVersion = @"5.0.0";
NSUInteger const SDLDefaultMTUSize = UINT32_MAX;
NSUInteger const SDLV1MTUSize = 1024;
NSUInteger const SDLV3MTUSize = 131024;
-typedef NSNumber* ServiceTypeBox;
-typedef NSNumber* MTUBox;
+typedef NSNumber *ServiceTypeBox;
+typedef NSNumber *MTUBox;
@interface SDLGlobals ()
@property (strong, nonatomic) NSMutableDictionary<ServiceTypeBox, MTUBox> *dynamicMTUDict;
-@property (strong, nonatomic, readwrite) NSString *protocolVersion;
+@property (copy, nonatomic, readwrite) NSString *protocolVersion;
@end
@@ -52,6 +53,7 @@ typedef NSNumber* MTUBox;
_protocolVersion = @"1.0.0";
_maxHeadUnitVersion = @"0.0.0";
+ _rpcVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:1 minorVersion:0 patchVersion:0];
_dynamicMTUDict = [NSMutableDictionary dictionary];
return self;
diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.h b/SmartDeviceLink/SDLLifecycleConfiguration.h
index fd965414f..a558c0dea 100644
--- a/SmartDeviceLink/SDLLifecycleConfiguration.h
+++ b/SmartDeviceLink/SDLLifecycleConfiguration.h
@@ -29,23 +29,45 @@ NS_ASSUME_NONNULL_BEGIN
* A production configuration that runs using IAP. Additional functionality should be customized on the properties.
*
* @param appName The name of the app.
- * @param appId The appId to be used. This should be registered with the radio's manufacturer.
+ * @param appId The app id to be used. This should be registered with the head unit's manufacturer.
*
* @return The lifecycle configuration
*/
-+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId NS_SWIFT_NAME(init(appName:appId:));
++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId NS_SWIFT_NAME(init(appName:appId:)) __deprecated_msg("Use defaultConfigurationWithAppName:fullAppId: instead");
+
+/**
+ * A production configuration that runs using IAP. Additional functionality should be customized on the properties.
+ *
+ * @param appName The name of the app.
+ * @param fullAppId The full app id to be used. This should be registered with the head unit's manufacturer. When set, the `appId` parameter will be set automatically to the first 10 non-dash characters of the `fullAppId`.
+ *
+ * @return The lifecycle configuration
+ */
++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId NS_SWIFT_NAME(init(appName:fullAppId:));
/**
* A debug configuration that runs using TCP. Additional functionality should be customized on the properties.
*
* @param appName The name of the app.
- * @param appId The appId to be used. This should be registered with the radio's manufacturer.
+ * @param appId The app id to be used. This should be registered with the head unit's manufacturer.
* @param ipAddress The ip address of the server to connect to
* @param port The port of the server to connect to
*
* @return The lifecycle configuration
*/
-+ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port NS_SWIFT_NAME(init(appName:appId:ipAddress:port:));
++ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port NS_SWIFT_NAME(init(appName:appId:ipAddress:port:)) __deprecated_msg("Use debugConfigurationWithAppName:fullAppId:ipAddress:port: instead");
+
+/**
+ * A debug configuration that runs using TCP. Additional functionality should be customized on the properties.
+ *
+ * @param appName The name of the app.
+ * @param fullAppId The full app id to be used. This should be registered with the head unit's manufacturer. When set, the `appId` parameter will be set automatically to the first 10 non-dash characters of the `fullAppId`.
+ * @param ipAddress The ip address of the server to connect to
+ * @param port The port of the server to connect to
+ *
+ * @return The lifecycle configuration
+ */
++ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId ipAddress:(NSString *)ipAddress port:(UInt16)port NS_SWIFT_NAME(init(appName:fullAppId:ipAddress:port:));
/**
* Whether or not debug mode is enabled
@@ -68,11 +90,24 @@ NS_ASSUME_NONNULL_BEGIN
@property (copy, nonatomic) NSString *appName;
/**
- * The app id. This must be the same as the app id received from the SDL developer portal or OEM.
+ * The app id. This must be the same as the app id received from the SDL developer portal.
+ *
+ * @see `fullAppId`
+ *
+ * Required
*/
@property (copy, nonatomic, readonly) NSString *appId;
/**
+ * The full app id. This must be the same as the full app id received from the SDL developer portal.
+ *
+ * Optional
+ *
+ * @discussion The `fullAppId` is used to authenticate apps that connect with head units that implement SDL Core v.5.0 and newer. If connecting with older head units, the `fullAppId` can be truncated to create the required `appId` needed to register the app. The `appId` is the first 10 non-dash ("-") characters of the `fullAppId` (e.g. if you have a `fullAppId` of 123e4567-e89b-12d3-a456-426655440000, the `appId` will be 123e4567e8).
+ */
+@property (copy, nonatomic, nullable, readonly) NSString *fullAppId;
+
+/**
* A hash id which should be passed to the remote system in the RegisterAppInterface
*/
@property (copy, nonatomic, nullable) NSString *resumeHash;
@@ -88,7 +123,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic, null_resettable) SDLAppHMIType appType;
/**
- Additional application types beyond `appType`
+ * Additional application types beyond `appType`
*/
@property (copy, nonatomic, nullable) NSArray<SDLAppHMIType> *additionalAppTypes;
@@ -123,12 +158,12 @@ NS_ASSUME_NONNULL_BEGIN
@property (copy, nonatomic, nullable) NSArray<NSString *> *voiceRecognitionCommandNames;
/**
- The color scheme to use when the head unit is in a light / day situation.
+ * The color scheme to use when the head unit is in a light / day situation.
*/
@property (copy, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
/**
- The color scheme to use when the head unit is in a dark / night situation.
+ * The color scheme to use when the head unit is in a dark / night situation.
*/
@property (copy, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.m b/SmartDeviceLink/SDLLifecycleConfiguration.m
index 114238694..6c5b560c5 100644
--- a/SmartDeviceLink/SDLLifecycleConfiguration.m
+++ b/SmartDeviceLink/SDLLifecycleConfiguration.m
@@ -24,12 +24,31 @@ NS_ASSUME_NONNULL_BEGIN
@end
+static NSUInteger const AppIdCharacterCount = 10;
@implementation SDLLifecycleConfiguration
#pragma mark Lifecycle
-- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId {
++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId {
+ return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:nil appId:appId];
+}
+
++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId {
+ return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:fullAppId appId:fullAppId];
+}
+
++ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port {
+ return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:nil appId:appId ipAddress:ipAddress port:port];
+}
+
++ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId ipAddress:(NSString *)ipAddress port:(UInt16)port {
+ return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:fullAppId appId:fullAppId ipAddress:ipAddress port:port];
+}
+
+#pragma mark Initalization Helpers
+
+- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName fullAppId:(nullable NSString *)fullAppId appId:(NSString *)appId {
self = [super init];
if (!self) {
return nil;
@@ -40,8 +59,6 @@ NS_ASSUME_NONNULL_BEGIN
_tcpDebugPort = DefaultTCPIPPort;
_appName = appName;
- _appId = appId;
-
_appType = SDLAppHMITypeDefault;
_language = SDLLanguageEnUs;
_languagesSupported = @[_language];
@@ -50,15 +67,15 @@ NS_ASSUME_NONNULL_BEGIN
_ttsName = nil;
_voiceRecognitionCommandNames = nil;
+ _fullAppId = fullAppId;
+ _appId = fullAppId != nil ? [self.class sdlex_shortAppIdFromFullAppId:fullAppId] : appId;
+
return self;
}
-+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId {
- return [[self alloc] initDefaultConfigurationWithAppName:appName appId:appId];
-}
+- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName fullAppId:(nullable NSString *)fullAppId appId:(nullable NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port {
+ SDLLifecycleConfiguration *config = [self initDefaultConfigurationWithAppName:appName fullAppId:fullAppId appId:appId];
-+ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port {
- SDLLifecycleConfiguration *config = [[self alloc] initDefaultConfigurationWithAppName:appName appId:appId];
config.tcpDebugMode = YES;
config.tcpDebugIPAddress = ipAddress;
config.tcpDebugPort = port;
@@ -66,7 +83,7 @@ NS_ASSUME_NONNULL_BEGIN
return config;
}
-#pragma mark Computed Properties
+#pragma mark - Computed Properties
- (BOOL)isMedia {
if ([self.appType isEqualToEnum:SDLAppHMITypeMedia] || [self.additionalAppTypes containsObject:SDLAppHMITypeMedia]) {
@@ -93,11 +110,36 @@ NS_ASSUME_NONNULL_BEGIN
_appType = appType;
}
+#pragma mark - Full App ID Helpers
+
+/**
+ * Generates the `appId` from the `fullAppId`
+ *
+ * @discussion When an app is registered with an OEM, it is assigned an `appID` and a `fullAppID`. The `fullAppID` is the full UUID appID. The `appID` is the first 10 non-dash (i.e. "-") characters of the `fullAppID`.
+ *
+ * @param fullAppId A `fullAppId`
+ * @return An `appID` made of the first 10 non-dash characters of the "fullAppID"
+ */
++ (NSString *)sdlex_shortAppIdFromFullAppId:(NSString *)fullAppId {
+ NSString *filteredString = [self sdlex_filterDashesFromText:fullAppId];
+ return [filteredString substringToIndex:MIN(AppIdCharacterCount, filteredString.length)];
+}
+
+/**
+ * Filters the dash characters from a string
+ *
+ * @param text The string
+ * @return The string with all dash characters removed
+ */
++ (NSString *)sdlex_filterDashesFromText:(NSString *)text {
+ NSCharacterSet *supportedCharacters = [NSCharacterSet characterSetWithCharactersInString:@"-"];
+ return [[text componentsSeparatedByCharactersInSet:supportedCharacters] componentsJoinedByString:@""];
+}
-#pragma mark NSCopying
+#pragma mark - NSCopying
- (id)copyWithZone:(nullable NSZone *)zone {
- SDLLifecycleConfiguration *newConfig = [[self.class allocWithZone:zone] initDefaultConfigurationWithAppName:_appName appId:_appId];
+ SDLLifecycleConfiguration *newConfig = [[self.class allocWithZone:zone] initDefaultConfigurationWithAppName:_appName fullAppId:_fullAppId appId:_appId];
newConfig->_tcpDebugMode = _tcpDebugMode;
newConfig->_tcpDebugIPAddress = _tcpDebugIPAddress;
newConfig->_tcpDebugPort = _tcpDebugPort;
diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m
index 7edf7e289..0f6a7d4a6 100644
--- a/SmartDeviceLink/SDLLifecycleManager.m
+++ b/SmartDeviceLink/SDLLifecycleManager.m
@@ -22,6 +22,7 @@
#import "SDLFile.h"
#import "SDLFileManager.h"
#import "SDLFileManagerConfiguration.h"
+#import "SDLGlobals.h"
#import "SDLLifecycleConfiguration.h"
#import "SDLLifecycleConfigurationUpdate.h"
#import "SDLLockScreenConfiguration.h"
@@ -92,7 +93,7 @@ SDLLifecycleState *const SDLLifecycleStateReady = @"Ready";
#pragma mark Lifecycle
- (instancetype)init {
- return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" appId:@"001"] lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration]] delegate:nil];
+ return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" fullAppId:@"001"] lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration]] delegate:nil];
}
- (instancetype)initWithConfiguration:(SDLConfiguration *)configuration delegate:(nullable id<SDLManagerDelegate>)delegate {
@@ -296,6 +297,7 @@ SDLLifecycleState *const SDLLifecycleStateReady = @"Ready";
}
weakSelf.registerResponse = (SDLRegisterAppInterfaceResponse *)response;
+ [SDLGlobals sharedGlobals].rpcVersion = weakSelf.registerResponse.syncMsgVersion;
[weakSelf.lifecycleStateMachine transitionToState:SDLLifecycleStateRegistered];
});
}];
diff --git a/SmartDeviceLink/SDLLightCapabilities.h b/SmartDeviceLink/SDLLightCapabilities.h
index 880a66fd6..0bdac1a62 100644
--- a/SmartDeviceLink/SDLLightCapabilities.h
+++ b/SmartDeviceLink/SDLLightCapabilities.h
@@ -22,12 +22,12 @@ NS_ASSUME_NONNULL_BEGIN
@param name The name of a light or a group of lights
@param densityAvailable light's density can be set remotely
- @param sRGBColorSpaceAvailable Light's color can be set remotely by using the sRGB color space
+ @param colorAvailable Light's color can be set remotely by using the RGB color space
@param statusAvailable whether status is available
@return An instance of the SDLLightCapabilities class
*/
-- (instancetype)initWithName:(SDLLightName)name densityAvailable:(BOOL)densityAvailable sRGBColorSpaceAvailable:(BOOL)sRGBColorSpaceAvailable statusAvailable:(BOOL)statusAvailable;
+- (instancetype)initWithName:(SDLLightName)name densityAvailable:(BOOL)densityAvailable colorAvailable:(BOOL)colorAvailable statusAvailable:(BOOL)statusAvailable;
/**
* @abstract The name of a light or a group of lights
@@ -44,11 +44,11 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *densityAvailable;
/**
- * @abstract Indicates if the light's color can be set remotely by using the sRGB color space.
+ * @abstract Indicates if the light's color can be set remotely by using the RGB color space.
*
* Optional, Boolean
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *sRGBColorSpaceAvailable;
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *colorAvailable;
/**
* @abstract Indicates if the status (ON/OFF) can be set remotely.
diff --git a/SmartDeviceLink/SDLLightCapabilities.m b/SmartDeviceLink/SDLLightCapabilities.m
index aaa0029c0..3db0454ff 100644
--- a/SmartDeviceLink/SDLLightCapabilities.m
+++ b/SmartDeviceLink/SDLLightCapabilities.m
@@ -19,14 +19,14 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
-- (instancetype)initWithName:(SDLLightName)name densityAvailable:(BOOL)densityAvailable sRGBColorSpaceAvailable:(BOOL)sRGBColorSpaceAvailable statusAvailable:(BOOL)statusAvailable {
+- (instancetype)initWithName:(SDLLightName)name densityAvailable:(BOOL)densityAvailable colorAvailable:(BOOL)colorAvailable statusAvailable:(BOOL)statusAvailable {
self = [self init];
if(!self) {
return nil;
}
self.name = name;
self.densityAvailable = @(densityAvailable);
- self.sRGBColorSpaceAvailable = @(sRGBColorSpaceAvailable);
+ self.colorAvailable = @(colorAvailable);
self.statusAvailable = @(statusAvailable);
return self;
@@ -48,12 +48,12 @@ NS_ASSUME_NONNULL_BEGIN
return [store sdl_objectForName:SDLNameDensityAvailable];
}
-- (void)setSRGBColorSpaceAvailable:(nullable NSNumber<SDLBool> *)sRGBColorSpaceAvailable {
- [store sdl_setObject:sRGBColorSpaceAvailable forName:SDLNameSRGBColorSpaceAvailable];
+- (void)setColorAvailable:(nullable NSNumber<SDLBool> *)colorAvailable {
+ [store sdl_setObject:colorAvailable forName:SDLNameRGBColorSpaceAvailable];
}
-- (nullable NSNumber<SDLBool> *)sRGBColorSpaceAvailable {
- return [store sdl_objectForName:SDLNameSRGBColorSpaceAvailable];
+- (nullable NSNumber<SDLBool> *)colorAvailable {
+ return [store sdl_objectForName:SDLNameRGBColorSpaceAvailable];
}
- (void)setStatusAvailable:(nullable NSNumber<SDLBool> *)statusAvailable {
diff --git a/SmartDeviceLink/SDLLightControlData.h b/SmartDeviceLink/SDLLightControlData.h
index 19152c61c..49d2fe692 100644
--- a/SmartDeviceLink/SDLLightControlData.h
+++ b/SmartDeviceLink/SDLLightControlData.h
@@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
@param lightState An array of LightNames and their current or desired status
@return An instance of the SDLLightControlData class
*/
-- (instancetype)initWithLightStateArray:(NSArray<SDLLightState *> *)lightState;
+- (instancetype)initWithLightStates:(NSArray<SDLLightState *> *)lightState;
/**
* @abstract An array of LightNames and their current or desired status.
diff --git a/SmartDeviceLink/SDLLightControlData.m b/SmartDeviceLink/SDLLightControlData.m
index 0190d4bb5..ca8bdba76 100644
--- a/SmartDeviceLink/SDLLightControlData.m
+++ b/SmartDeviceLink/SDLLightControlData.m
@@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SDLLightControlData
--(instancetype)initWithLightStateArray:(NSArray<SDLLightState *> *)lightState {
+-(instancetype)initWithLightStates:(NSArray<SDLLightState *> *)lightState {
self = [self init];
if(!self) {
return nil;
diff --git a/SmartDeviceLink/SDLLightName.h b/SmartDeviceLink/SDLLightName.h
index 895d09bf6..09a954f74 100644
--- a/SmartDeviceLink/SDLLightName.h
+++ b/SmartDeviceLink/SDLLightName.h
@@ -90,14 +90,14 @@ extern SDLLightName const SDLLightNameRearLeftTailLight;
extern SDLLightName const SDLLightNameRearRightTailLight;
/**
- * @abstract Represents the Light with name REAR_LEFT_BREAK_LIGHT
+ * @abstract Represents the Light with name REAR_LEFT_BRAKE_LIGHT
*/
-extern SDLLightName const SDLLightNameRearLeftBreakLight;
+extern SDLLightName const SDLLightNameRearLeftBrakeLight;
/**
- * @abstract Represents the Light with name REAR_RIGHT_BREAK_LIGHT
+ * @abstract Represents the Light with name REAR_RIGHT_BRAKE_LIGHT
*/
-extern SDLLightName const SDLLightNameRearRightBreakLight;
+extern SDLLightName const SDLLightNameRearRightBrakeLight;
/**
* @abstract Represents the Light with name REAR_LEFT_TURN_LIGHT
diff --git a/SmartDeviceLink/SDLLightName.m b/SmartDeviceLink/SDLLightName.m
index 7263deaa0..f236bea07 100644
--- a/SmartDeviceLink/SDLLightName.m
+++ b/SmartDeviceLink/SDLLightName.m
@@ -19,8 +19,8 @@ SDLLightName const SDLLightNameRearLeftFogLight = @"REAR_LEFT_FOG_LIGHT";
SDLLightName const SDLLightNameRearRightFogLight = @"REAR_RIGHT_FOG_LIGHT";
SDLLightName const SDLLightNameRearLeftTailLight = @"REAR_LEFT_TAIL_LIGHT";
SDLLightName const SDLLightNameRearRightTailLight = @"REAR_RIGHT_TAIL_LIGHT";
-SDLLightName const SDLLightNameRearLeftBreakLight = @"REAR_LEFT_BREAK_LIGHT";
-SDLLightName const SDLLightNameRearRightBreakLight = @"REAR_RIGHT_BREAK_LIGHT";
+SDLLightName const SDLLightNameRearLeftBrakeLight = @"REAR_LEFT_BRAKE_LIGHT";
+SDLLightName const SDLLightNameRearRightBrakeLight = @"REAR_RIGHT_BRAKE_LIGHT";
SDLLightName const SDLLightNameRearLeftTurnLight = @"REAR_LEFT_TURN_LIGHT";
SDLLightName const SDLLightNameRearRightTurnLight = @"REAR_RIGHT_TURN_LIGHT";
SDLLightName const SDLLightNameRearRegistrationPlateLight = @"REAR_REGISTRATION_PLATE_LIGHT";
diff --git a/SmartDeviceLink/SDLLightState.h b/SmartDeviceLink/SDLLightState.h
index cbec342d6..c44ebf48e 100644
--- a/SmartDeviceLink/SDLLightState.h
+++ b/SmartDeviceLink/SDLLightState.h
@@ -1,11 +1,12 @@
// SDLLightState.h
//
+#import <UIKit/UIKit.h>
#import "SDLRPCMessage.h"
#import "SDLLightName.h"
#import "SDLLightStatus.h"
-@class SDLSRGBColor;
+@class SDLRGBColor;
NS_ASSUME_NONNULL_BEGIN
@@ -26,10 +27,21 @@ NS_ASSUME_NONNULL_BEGIN
@param id The name of a light or a group of lights
@param status Reflects the status of Light.
@param density Reflects the density of Light.
- @param sRGBColor Reflects the color of Light.
+ @param color Reflects the color of Light.
@return An instance of the SDLLightState class
*/
-- (instancetype)initWithId:(SDLLightName)id status:(SDLLightStatus)status density:(double)density sRGBColor:(SDLSRGBColor *)sRGBColor;
+- (instancetype)initWithId:(SDLLightName)id status:(SDLLightStatus)status density:(double)density color:(SDLRGBColor *)color;
+
+/**
+ Constructs a newly allocated SDLLightState object with given parameters
+
+ @param id The name of a light or a group of lights
+ @param lightStatus Reflects the status of Light.
+ @param lightDensity Reflects the density of Light.
+ @param lightColor Reflects the color of Light.
+ @return An instance of the SDLLightState class
+ */
+- (instancetype)initWithId:(SDLLightName)id lightStatus:(SDLLightStatus)lightStatus lightDensity:(double)lightDensity lightColor:(UIColor *)lightColor;
/**
* @abstract The name of a light or a group of lights
@@ -57,7 +69,7 @@ NS_ASSUME_NONNULL_BEGIN
*
* Optional, SDLLightStatus
*/
-@property (nullable, strong, nonatomic) SDLSRGBColor *sRGBColor;
+@property (nullable, strong, nonatomic) SDLRGBColor *color;
@end
diff --git a/SmartDeviceLink/SDLLightState.m b/SmartDeviceLink/SDLLightState.m
index 0f74487d7..24e1909e6 100644
--- a/SmartDeviceLink/SDLLightState.m
+++ b/SmartDeviceLink/SDLLightState.m
@@ -4,7 +4,7 @@
#import "SDLLightState.h"
#import "SDLNames.h"
#import "NSMutableDictionary+Store.h"
-#import "SDLSRGBColor.h"
+#import "SDLRGBColor.h"
NS_ASSUME_NONNULL_BEGIN
@@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
-- (instancetype)initWithId:(SDLLightName)id status:(SDLLightStatus)status density:(double)density sRGBColor:(SDLSRGBColor *)sRGBColor {
+- (instancetype)initWithId:(SDLLightName)id status:(SDLLightStatus)status density:(double)density color:(SDLRGBColor *)color {
self = [self init];
if(!self) {
return nil;
@@ -29,7 +29,20 @@ NS_ASSUME_NONNULL_BEGIN
self.id = id;
self.status = status;
self.density = @(density);
- self.sRGBColor = sRGBColor;
+ self.color = color;
+
+ return self;
+}
+
+- (instancetype)initWithId:(SDLLightName)id lightStatus:(SDLLightStatus)lightStatus lightDensity:(double)lightDensity lightColor:(UIColor *)lightColor {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+ self.id = id;
+ self.status = lightStatus;
+ self.density = @(lightDensity);
+ self.color = [[SDLRGBColor alloc] initWithColor:lightColor];
return self;
}
@@ -58,12 +71,12 @@ NS_ASSUME_NONNULL_BEGIN
return [store sdl_objectForName:SDLNameDensity];
}
-- (void)setSRGBColor:(nullable SDLSRGBColor *)sRGBColor {
- [store sdl_setObject:sRGBColor forName:SDLNameSRGBColor];
+- (void)setColor:(nullable SDLRGBColor *)color {
+ [store sdl_setObject:color forName:SDLNameColor];
}
-- (nullable SDLSRGBColor *)sRGBColor {
- return [store sdl_objectForName:SDLNameSRGBColor];
+- (nullable SDLRGBColor *)color {
+ return [store sdl_objectForName:SDLNameColor ofClass:[SDLRGBColor class]];
}
@end
diff --git a/SmartDeviceLink/SDLListFilesOperation.m b/SmartDeviceLink/SDLListFilesOperation.m
index 0cfd85460..ca45ac928 100644
--- a/SmartDeviceLink/SDLListFilesOperation.m
+++ b/SmartDeviceLink/SDLListFilesOperation.m
@@ -47,19 +47,20 @@ NS_ASSUME_NONNULL_BEGIN
SDLListFiles *listFiles = [[SDLListFiles alloc] init];
__weak typeof(self) weakSelf = self;
- [self.connectionManager sendConnectionManagerRequest:listFiles
- withResponseHandler:^(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *response, NSError *error) {
- SDLListFilesResponse *listFilesResponse = (SDLListFilesResponse *)response;
- BOOL success = [listFilesResponse.success boolValue];
- NSUInteger bytesAvailable = [listFilesResponse.spaceAvailable unsignedIntegerValue];
- NSArray<NSString *> *fileNames = [NSArray arrayWithArray:listFilesResponse.filenames];
-
- if (weakSelf.completionHandler != nil) {
- weakSelf.completionHandler(success, bytesAvailable, fileNames, error);
- }
-
- [weakSelf finishOperation];
- }];
+ [self.connectionManager sendConnectionManagerRequest:listFiles withResponseHandler:^(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *response, NSError *error) {
+ SDLListFilesResponse *listFilesResponse = (SDLListFilesResponse *)response;
+ BOOL success = [listFilesResponse.success boolValue];
+ NSArray<NSString *> *fileNames = [NSArray arrayWithArray:listFilesResponse.filenames];
+
+ // If spaceAvailable is nil, set it to the max value
+ NSUInteger bytesAvailable = listFilesResponse.spaceAvailable != nil ? listFilesResponse.spaceAvailable.unsignedIntegerValue : 2000000000;
+
+ if (weakSelf.completionHandler != nil) {
+ weakSelf.completionHandler(success, bytesAvailable, fileNames, error);
+ }
+
+ [weakSelf finishOperation];
+ }];
}
diff --git a/SmartDeviceLink/SDLListFilesResponse.h b/SmartDeviceLink/SDLListFilesResponse.h
index b269b11c4..b5ddef16e 100644
--- a/SmartDeviceLink/SDLListFilesResponse.h
+++ b/SmartDeviceLink/SDLListFilesResponse.h
@@ -22,7 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
Provides the total local space available on the module for the registered app.
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *spaceAvailable;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *spaceAvailable;
@end
diff --git a/SmartDeviceLink/SDLListFilesResponse.m b/SmartDeviceLink/SDLListFilesResponse.m
index f78d83acb..376e81702 100644
--- a/SmartDeviceLink/SDLListFilesResponse.m
+++ b/SmartDeviceLink/SDLListFilesResponse.m
@@ -25,11 +25,11 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLNameFilenames];
}
-- (void)setSpaceAvailable:(NSNumber<SDLInt> *)spaceAvailable {
+- (void)setSpaceAvailable:(nullable NSNumber<SDLInt> *)spaceAvailable {
[parameters sdl_setObject:spaceAvailable forName:SDLNameSpaceAvailable];
}
-- (NSNumber<SDLInt> *)spaceAvailable {
+- (nullable NSNumber<SDLInt> *)spaceAvailable {
return [parameters sdl_objectForName:SDLNameSpaceAvailable];
}
diff --git a/SmartDeviceLink/SDLLockScreenConfiguration.h b/SmartDeviceLink/SDLLockScreenConfiguration.h
index cf1287cc3..80575567a 100644
--- a/SmartDeviceLink/SDLLockScreenConfiguration.h
+++ b/SmartDeviceLink/SDLLockScreenConfiguration.h
@@ -14,7 +14,13 @@ NS_ASSUME_NONNULL_BEGIN
@interface SDLLockScreenConfiguration : NSObject <NSCopying>
/**
- * Whether or not the lock screen should be shown in the "lock screen optional" state. Defaults to 'NO'.
+ * Whether or not the lock screen should be shown in the "lock screen optional" state. Defaults to false.
+ *
+ * @discussion In order for the "lock screen optional" state to occur, the following must be true:
+ * 1. The app should have received at least 1 driver distraction notification (i.e. a `OnDriverDistraction` notification) from SDL Core. Older versions of Core did not send a notification immediately on connection.
+ * 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).
*/
@property (assign, nonatomic) BOOL showInOptionalState;
diff --git a/SmartDeviceLink/SDLLockScreenManager.m b/SmartDeviceLink/SDLLockScreenManager.m
index c15c5318c..a8c8c3758 100644
--- a/SmartDeviceLink/SDLLockScreenManager.m
+++ b/SmartDeviceLink/SDLLockScreenManager.m
@@ -137,7 +137,7 @@ NS_ASSUME_NONNULL_BEGIN
} else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOptional]) {
if (self.config.showInOptionalState && !self.presenter.presented && self.canPresent) {
[self.presenter present];
- } else if (self.presenter.presented) {
+ } else if (!self.config.showInOptionalState && self.presenter.presented) {
[self.presenter dismiss];
}
} else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOff]) {
diff --git a/SmartDeviceLink/SDLManager.m b/SmartDeviceLink/SDLManager.m
index 61d135c9a..fa7c9e8e0 100644
--- a/SmartDeviceLink/SDLManager.m
+++ b/SmartDeviceLink/SDLManager.m
@@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark Lifecycle
- (instancetype)init {
- return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" appId:@"001"] lockScreen:[SDLLockScreenConfiguration enabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration]] delegate:nil];
+ return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" fullAppId:@"001"] lockScreen:[SDLLockScreenConfiguration enabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration]] delegate:nil];
}
- (instancetype)initWithConfiguration:(SDLConfiguration *)configuration delegate:(nullable id<SDLManagerDelegate>)delegate {
diff --git a/SmartDeviceLink/SDLMenuManager.m b/SmartDeviceLink/SDLMenuManager.m
index 82a6ea2b3..bbd61252b 100644
--- a/SmartDeviceLink/SDLMenuManager.m
+++ b/SmartDeviceLink/SDLMenuManager.m
@@ -117,16 +117,28 @@ UInt32 const MenuCellIdMin = 1;
self.waitingOnHMIUpdate = NO;
- // Check for duplicate titles
NSMutableSet *titleCheckSet = [NSMutableSet set];
+ NSMutableSet<NSString *> *allMenuVoiceCommands = [NSMutableSet set];
+ NSUInteger voiceCommandCount = 0;
for (SDLMenuCell *cell in menuCells) {
[titleCheckSet addObject:cell.title];
+ if (cell.voiceCommands == nil) { continue; }
+ [allMenuVoiceCommands addObjectsFromArray:cell.voiceCommands];
+ voiceCommandCount += cell.voiceCommands.count;
}
+
+ // Check for duplicate titles
if (titleCheckSet.count != menuCells.count) {
SDLLogE(@"Not all cell titles are unique. The menu will not be set.");
return;
}
+ // Check for duplicate voice recognition commands
+ if (allMenuVoiceCommands.count != voiceCommandCount) {
+ SDLLogE(@"Attempted to create a menu with duplicate voice commands. Voice commands must be unique. The menu will not be set.");
+ return;
+ }
+
// Set the ids
self.lastMenuId = MenuCellIdMin;
[self sdl_updateIdsOnMenuCells:menuCells parentId:ParentIdNotFound];
diff --git a/SmartDeviceLink/SDLNames.h b/SmartDeviceLink/SDLNames.h
index d9c690e2b..6df9c402e 100644
--- a/SmartDeviceLink/SDLNames.h
+++ b/SmartDeviceLink/SDLNames.h
@@ -72,6 +72,7 @@ extern SDLName const SDLNameButtonEventMode;
extern SDLName const SDLNameButtonName;
extern SDLName const SDLNameButtonPress;
extern SDLName const SDLNameButtonPressMode;
+extern SDLName const SDLNameColor;
extern SDLName const SDLNameCoolingEnabled;
extern SDLName const SDLNameCoolingEnabledAvailable;
extern SDLName const SDLNameCoolingLevel;
@@ -195,6 +196,7 @@ extern SDLName const SDLNameFuelLevel;
extern SDLName const SDLNameFuelLevelState;
extern SDLName const SDLNameFuelMaintenanceMode;
extern SDLName const SDLNameFuelRange;
+extern SDLName const SDLNameFullAppID;
extern SDLName const SDLNameGenericResponse;
extern SDLName const SDLNameGetDTCs;
extern SDLName const SDLNameGetInteriorVehicleData;
@@ -529,8 +531,7 @@ extern SDLName const SDLNameSpaceAvailable;
extern SDLName const SDLNameSpeak;
extern SDLName const SDLNameSpeechCapabilities;
extern SDLName const SDLNameSpeed;
-extern SDLName const SDLNameSRGBColor;
-extern SDLName const SDLNameSRGBColorSpaceAvailable;
+extern SDLName const SDLNameRGBColorSpaceAvailable;
extern SDLName const SDLNameStartTime;
extern SDLName const SDLNameState;
extern SDLName const SDLNameStateAvailable;
diff --git a/SmartDeviceLink/SDLNames.m b/SmartDeviceLink/SDLNames.m
index fb2ba7de8..58527c3cd 100644
--- a/SmartDeviceLink/SDLNames.m
+++ b/SmartDeviceLink/SDLNames.m
@@ -91,6 +91,7 @@ SDLName const SDLNameClimateControlData = @"climateControlData";
SDLName const SDLNameClimateControlCapabilities = @"climateControlCapabilities";
SDLName const SDLNameClusterModes = @"clusterModes";
SDLName const SDLNameClusterModeStatus = @"clusterModeStatus";
+SDLName const SDLNameColor = @"color";
SDLName const SDLNameCommandIcon = @"cmdIcon";
SDLName const SDLNameCommandId = @"cmdID";
SDLName const SDLNameCompassDirection = @"compassDirection";
@@ -191,6 +192,7 @@ SDLName const SDLNameFuelLevel = @"fuelLevel";
SDLName const SDLNameFuelLevelState = @"fuelLevel_State";
SDLName const SDLNameFuelMaintenanceMode = @"fuelMaintenanceMode";
SDLName const SDLNameFuelRange = @"fuelRange";
+SDLName const SDLNameFullAppID = @"fullAppID";
SDLName const SDLNameGenericResponse = @"GenericResponse";
SDLName const SDLNameGetDTCs = @"GetDTCs";
SDLName const SDLNameGetInteriorVehicleData = @"GetInteriorVehicleData";
@@ -523,8 +525,7 @@ SDLName const SDLNameSpaceAvailable = @"spaceAvailable";
SDLName const SDLNameSpeak = @"Speak";
SDLName const SDLNameSpeechCapabilities = @"speechCapabilities";
SDLName const SDLNameSpeed = @"speed";
-SDLName const SDLNameSRGBColor = @"sRGBColor";
-SDLName const SDLNameSRGBColorSpaceAvailable = @"sRGBColorSpaceAvailable";
+SDLName const SDLNameRGBColorSpaceAvailable = @"rgbColorSpaceAvailable";
SDLName const SDLNameStartTime = @"startTime";
SDLName const SDLNameState = @"state";
SDLName const SDLNameStateAvailable = @"stateAvailable";
diff --git a/SmartDeviceLink/SDLProxy.m b/SmartDeviceLink/SDLProxy.m
index f7f272c79..5a837b298 100644
--- a/SmartDeviceLink/SDLProxy.m
+++ b/SmartDeviceLink/SDLProxy.m
@@ -6,7 +6,6 @@
#import <UIKit/UIKit.h>
#import <objc/runtime.h>
-#import "SDLTransportType.h"
#import "SDLAudioStreamingState.h"
#import "SDLLogMacros.h"
#import "SDLEncodedSyncPData.h"
@@ -18,6 +17,8 @@
#import "SDLLanguage.h"
#import "SDLLayoutMode.h"
#import "SDLLockScreenStatusManager.h"
+#import "SDLOnButtonEvent.h"
+#import "SDLOnButtonPress.h"
#import "SDLOnHMIStatus.h"
#import "SDLOnSystemRequest.h"
#import "SDLPolicyDataParser.h"
@@ -30,10 +31,13 @@
#import "SDLRequestType.h"
#import "SDLSecondaryTransportManager.h"
#import "SDLStreamingMediaManager.h"
+#import "SDLSubscribeButton.h"
#import "SDLSystemContext.h"
#import "SDLSystemRequest.h"
#import "SDLTCPTransport.h"
#import "SDLTimer.h"
+#import "SDLTransportType.h"
+#import "SDLUnsubscribeButton.h"
#import "SDLVehicleType.h"
NS_ASSUME_NONNULL_BEGIN
@@ -43,7 +47,7 @@ typedef NSString SDLVehicleMake;
typedef void (^URLSessionTaskCompletionHandler)(NSData *data, NSURLResponse *response, NSError *error);
typedef void (^URLSessionDownloadTaskCompletionHandler)(NSURL *location, NSURLResponse *response, NSError *error);
-NSString *const SDLProxyVersion = @"6.0.1";
+NSString *const SDLProxyVersion = @"6.0.2";
const float StartSessionTime = 10.0;
const float NotifyProxyClosedDelay = (float)0.1;
const int PoliciesCorrelationId = 65535;
@@ -272,8 +276,16 @@ static float DefaultConnectionTimeout = 45.0;
}
-#pragma mark - Message sending and recieving
+#pragma mark - Message sending
- (void)sendRPC:(SDLRPCMessage *)message {
+ if ([message.getFunctionName isEqualToString:@"SubscribeButton"]) {
+ BOOL handledRPC = [self sdl_adaptButtonSubscribeMessage:(SDLSubscribeButton *)message];
+ if (handledRPC) { return; }
+ } else if ([message.getFunctionName isEqualToString:@"UnsubscribeButton"]) {
+ BOOL handledRPC = [self sdl_adaptButtonUnsubscribeMessage:(SDLUnsubscribeButton *)message];
+ if (handledRPC) { return; }
+ }
+
@try {
[self.protocol sendRPC:message];
} @catch (NSException *exception) {
@@ -281,6 +293,85 @@ static float DefaultConnectionTimeout = 45.0;
}
}
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (BOOL)sdl_adaptButtonSubscribeMessage:(SDLSubscribeButton *)message {
+ if ([SDLGlobals sharedGlobals].rpcVersion.majorVersion.intValue >= 5) {
+ if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ SDLSubscribeButton *playPauseMessage = [message copy];
+ playPauseMessage.buttonName = SDLButtonNamePlayPause;
+
+ @try {
+ [self.protocol sendRPC:message];
+ [self.protocol sendRPC:playPauseMessage];
+ } @catch (NSException *exception) {
+ SDLLogE(@"Proxy: Failed to send RPC message: %@", message.name);
+ }
+
+ return YES;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ return NO;
+ }
+ } else { // Major version < 5
+ if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ return NO;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ SDLSubscribeButton *okMessage = [message copy];
+ okMessage.buttonName = SDLButtonNameOk;
+
+ @try {
+ [self.protocol sendRPC:okMessage];
+ } @catch (NSException *exception) {
+ SDLLogE(@"Proxy: Failed to send RPC message: %@", message.name);
+ }
+
+ return YES;
+ }
+ }
+
+ return NO;
+}
+
+- (BOOL)sdl_adaptButtonUnsubscribeMessage:(SDLUnsubscribeButton *)message {
+ if ([SDLGlobals sharedGlobals].rpcVersion.majorVersion.intValue >= 5) {
+ if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ SDLUnsubscribeButton *playPauseMessage = [message copy];
+ playPauseMessage.buttonName = SDLButtonNamePlayPause;
+
+ @try {
+ [self.protocol sendRPC:message];
+ [self.protocol sendRPC:playPauseMessage];
+ } @catch (NSException *exception) {
+ SDLLogE(@"Proxy: Failed to send RPC message: %@", message.name);
+ }
+
+ return YES;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ return NO;
+ }
+ } else { // Major version < 5
+ if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ return NO;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ SDLUnsubscribeButton *okMessage = [message copy];
+ okMessage.buttonName = SDLButtonNameOk;
+
+ @try {
+ [self.protocol sendRPC:okMessage];
+ } @catch (NSException *exception) {
+ SDLLogE(@"Proxy: Failed to send RPC message: %@", message.name);
+ }
+
+ return YES;
+ }
+ }
+
+ return NO;
+}
+#pragma clang diagnostic pop
+
+#pragma mark - Message Receiving
+
- (void)handleProtocolMessage:(SDLProtocolMessage *)incomingMessage {
// Convert protocol message to dictionary
NSDictionary<NSString *, id> *rpcMessageAsDictionary = [incomingMessage rpcDictionary];
@@ -304,9 +395,6 @@ static float DefaultConnectionTimeout = 45.0;
NSString *functionClassName = [NSString stringWithFormat:@"SDL%@", functionName];
SDLRPCMessage *newMessage = [[NSClassFromString(functionClassName) alloc] initWithDictionary:[dict mutableCopy]];
- // Log the RPC message
- SDLLogV(@"Message received: %@", newMessage);
-
// Intercept and handle several messages ourselves
if ([functionName isEqualToString:SDLNameOnAppInterfaceUnregistered] || [functionName isEqualToString:SDLNameUnregisterAppInterface]) {
[self handleRPCUnregistered:dict];
@@ -328,10 +416,30 @@ static float DefaultConnectionTimeout = 45.0;
[self handleSystemRequestResponse:newMessage];
}
- // Formulate the name of the method to call and invoke the method on the delegate(s)
- NSString *handlerName = [NSString stringWithFormat:@"on%@:", functionName];
- SEL handlerSelector = NSSelectorFromString(handlerName);
- [self invokeMethodOnDelegates:handlerSelector withObject:newMessage];
+
+ if ([functionName isEqualToString:@"OnButtonPress"]) {
+ SDLOnButtonPress *message = (SDLOnButtonPress *)newMessage;
+ if ([SDLGlobals sharedGlobals].rpcVersion.majorVersion.intValue >= 5) {
+ BOOL handledRPC = [self sdl_handleOnButtonPressPostV5:message];
+ if (handledRPC) { return; }
+ } else { // RPC version of 4 or less (connected to an old head unit)
+ BOOL handledRPC = [self sdl_handleOnButtonPressPreV5:message];
+ if (handledRPC) { return; }
+ }
+ }
+
+ if ([functionName isEqualToString:@"OnButtonEvent"]) {
+ SDLOnButtonEvent *message = (SDLOnButtonEvent *)newMessage;
+ if ([SDLGlobals sharedGlobals].rpcVersion.majorVersion.intValue >= 5) {
+ BOOL handledRPC = [self sdl_handleOnButtonEventPostV5:message];
+ if (handledRPC) { return; }
+ } else {
+ BOOL handledRPC = [self sdl_handleOnButtonEventPreV5:message];
+ if (handledRPC) { return; }
+ }
+ }
+
+ [self sdl_invokeDelegateMethodsWithFunction:functionName message:newMessage];
// When an OnHMIStatus notification comes in, after passing it on (above), generate an "OnLockScreenNotification"
if ([functionName isEqualToString:@"OnHMIStatus"]) {
@@ -344,6 +452,13 @@ static float DefaultConnectionTimeout = 45.0;
}
}
+- (void)sdl_invokeDelegateMethodsWithFunction:(NSString *)functionName message:(SDLRPCMessage *)message {
+ // Formulate the name of the method to call and invoke the method on the delegate(s)
+ NSString *handlerName = [NSString stringWithFormat:@"on%@:", functionName];
+ SEL handlerSelector = NSSelectorFromString(handlerName);
+ [self invokeMethodOnDelegates:handlerSelector withObject:message];
+}
+
#pragma mark - RPC Handlers
@@ -403,6 +518,89 @@ static float DefaultConnectionTimeout = 45.0;
SDLLogV(@"SystemRequestResponse to be discarded");
}
+#pragma mark BackCompatability ButtonName Helpers
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (BOOL)sdl_handleOnButtonPressPreV5:(SDLOnButtonPress *)message {
+ // Drop PlayPause, this shouldn't come in
+ if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ return YES;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ // Send Ok and Play/Pause notifications
+ SDLOnButtonPress *playPausePress = [message copy];
+ playPausePress.buttonName = SDLButtonNamePlayPause;
+
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:playPausePress];
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:message];
+ return YES;
+ }
+
+ return NO;
+}
+
+- (BOOL)sdl_handleOnButtonPressPostV5:(SDLOnButtonPress *)message {
+ if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ // Send PlayPause & OK notifications
+ SDLOnButtonPress *okPress = [message copy];
+ okPress.buttonName = SDLButtonNameOk;
+
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:okPress];
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:message];
+ return YES;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ // Send PlayPause and OK notifications
+ SDLOnButtonPress *playPausePress = [message copy];
+ playPausePress.buttonName = SDLButtonNamePlayPause;
+
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:playPausePress];
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:message];
+ return YES;
+ }
+
+ return NO;
+}
+
+- (BOOL)sdl_handleOnButtonEventPreV5:(SDLOnButtonEvent *)message {
+ // Drop PlayPause, this shouldn't come in
+ if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ return YES;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ // Send Ok and Play/Pause notifications
+ SDLOnButtonEvent *playPauseEvent = [message copy];
+ playPauseEvent.buttonName = SDLButtonNamePlayPause;
+
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:playPauseEvent];
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:message];
+ return YES;
+ }
+
+ return NO;
+}
+
+- (BOOL)sdl_handleOnButtonEventPostV5:(SDLOnButtonEvent *)message {
+ if ([message.buttonName isEqualToEnum:SDLButtonNamePlayPause]) {
+ // Send PlayPause & OK notifications
+ SDLOnButtonEvent *okEvent = [message copy];
+ okEvent.buttonName = SDLButtonNameOk;
+
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:okEvent];
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:message];
+ return YES;
+ } else if ([message.buttonName isEqualToEnum:SDLButtonNameOk]) {
+ // Send PlayPause and OK notifications
+ SDLOnButtonEvent *playPauseEvent = [message copy];
+ playPauseEvent.buttonName = SDLButtonNamePlayPause;
+
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:playPauseEvent];
+ [self sdl_invokeDelegateMethodsWithFunction:message.getFunctionName message:message];
+ return YES;
+ }
+
+ return NO;
+}
+#pragma clang diagnostic pop
+
#pragma mark Handle Post-Invoke of Delegate Methods
- (void)handleAfterHMIStatus:(SDLRPCMessage *)message {
diff --git a/SmartDeviceLink/SDLPutFileResponse.h b/SmartDeviceLink/SDLPutFileResponse.h
index 322ab47d4..0c8772125 100644
--- a/SmartDeviceLink/SDLPutFileResponse.h
+++ b/SmartDeviceLink/SDLPutFileResponse.h
@@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
* Provides the total local space available in SDL Core for the registered app. If the transfer has systemFile enabled, then the value will be set to 0 automatically.
*/
-@property (strong, nonatomic) NSNumber<SDLInt> *spaceAvailable;
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *spaceAvailable;
@end
diff --git a/SmartDeviceLink/SDLPutFileResponse.m b/SmartDeviceLink/SDLPutFileResponse.m
index 2d3de3352..93d0caa5e 100644
--- a/SmartDeviceLink/SDLPutFileResponse.m
+++ b/SmartDeviceLink/SDLPutFileResponse.m
@@ -17,11 +17,11 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
-- (void)setSpaceAvailable:(NSNumber<SDLInt> *)spaceAvailable {
+- (void)setSpaceAvailable:(nullable NSNumber<SDLInt> *)spaceAvailable {
[parameters sdl_setObject:spaceAvailable forName:SDLNameSpaceAvailable];
}
-- (NSNumber<SDLInt> *)spaceAvailable {
+- (nullable NSNumber<SDLInt> *)spaceAvailable {
return [parameters sdl_objectForName:SDLNameSpaceAvailable];
}
diff --git a/SmartDeviceLink/SDLRPCMessage.h b/SmartDeviceLink/SDLRPCMessage.h
index d2c7e02ce..dcc545715 100644
--- a/SmartDeviceLink/SDLRPCMessage.h
+++ b/SmartDeviceLink/SDLRPCMessage.h
@@ -7,7 +7,7 @@
NS_ASSUME_NONNULL_BEGIN
-@interface SDLRPCMessage : SDLRPCStruct {
+@interface SDLRPCMessage : SDLRPCStruct <NSCopying> {
NSMutableDictionary<NSString *, id> *function;
NSMutableDictionary<NSString *, id> *parameters;
NSString *messageType;
diff --git a/SmartDeviceLink/SDLRPCMessage.m b/SmartDeviceLink/SDLRPCMessage.m
index 140762dc2..7ca6b4b56 100644
--- a/SmartDeviceLink/SDLRPCMessage.m
+++ b/SmartDeviceLink/SDLRPCMessage.m
@@ -34,10 +34,13 @@ NS_ASSUME_NONNULL_BEGIN
}
}
if (messageType != nil) {
- function = [[store objectForKey:messageType] mutableCopy];
- parameters = [[function objectForKey:SDLNameParameters] mutableCopy];
+ store[messageType] = [store[messageType] mutableCopy];
+ function = store[messageType];
+
+ function[SDLNameParameters] = [function[SDLNameParameters] mutableCopy];
+ parameters = function[SDLNameParameters];
}
- self.bulkData = [dict objectForKey:SDLNameBulkData];
+ self.bulkData = dict[SDLNameBulkData];
}
return self;
@@ -69,6 +72,12 @@ NS_ASSUME_NONNULL_BEGIN
return description;
}
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLRPCMessage *newMessage = [[self.class allocWithZone:zone] initWithDictionary:self->store];
+
+ return newMessage;
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRPCStruct.m b/SmartDeviceLink/SDLRPCStruct.m
index b6a588823..b0bccaac1 100644
--- a/SmartDeviceLink/SDLRPCStruct.m
+++ b/SmartDeviceLink/SDLRPCStruct.m
@@ -31,10 +31,10 @@ NS_ASSUME_NONNULL_BEGIN
- (NSDictionary<NSString *, id> *)serializeAsDictionary:(Byte)version {
if (version >= 2) {
- NSString *messageType = [[store keyEnumerator] nextObject];
- NSMutableDictionary<NSString *, id> *function = [store objectForKey:messageType];
+ NSString *messageType = store.keyEnumerator.nextObject;
+ NSMutableDictionary<NSString *, id> *function = store[messageType];
if ([function isKindOfClass:NSMutableDictionary.class]) {
- NSMutableDictionary<NSString *, id> *parameters = [function objectForKey:SDLNameParameters];
+ NSMutableDictionary<NSString *, id> *parameters = function[SDLNameParameters];
return [self.class sdl_serializeDictionary:parameters version:version];
} else {
return [self.class sdl_serializeDictionary:store version:version];
@@ -50,34 +50,34 @@ NS_ASSUME_NONNULL_BEGIN
+ (NSDictionary<NSString *, id> *)sdl_serializeDictionary:(NSDictionary *)dict version:(Byte)version {
NSMutableDictionary<NSString *, id> *ret = [NSMutableDictionary dictionaryWithCapacity:dict.count];
- for (NSString *key in [dict keyEnumerator]) {
- NSObject *value = [dict objectForKey:key];
+ for (NSString *key in dict.keyEnumerator) {
+ NSObject *value = dict[key];
if ([value isKindOfClass:SDLRPCStruct.class]) {
- [ret setObject:[(SDLRPCStruct *)value serializeAsDictionary:version] forKey:key];
+ ret[key] = [(SDLRPCStruct *)value serializeAsDictionary:version];
} else if ([value isKindOfClass:NSDictionary.class]) {
- [ret setObject:[self sdl_serializeDictionary:(NSDictionary *)value version:version] forKey:key];
+ ret[key] = [self sdl_serializeDictionary:(NSDictionary *)value version:version];
} else if ([value isKindOfClass:NSArray.class]) {
NSArray<NSObject *> *arrayVal = (NSArray<NSObject *> *)value;
- if (arrayVal.count > 0 && ([[arrayVal objectAtIndex:0] isKindOfClass:SDLRPCStruct.class])) {
+ if (arrayVal.count > 0 && ([arrayVal.firstObject isKindOfClass:SDLRPCStruct.class])) {
NSMutableArray<NSDictionary<NSString *, id> *> *serializedList = [NSMutableArray arrayWithCapacity:arrayVal.count];
for (SDLRPCStruct *serializeable in arrayVal) {
[serializedList addObject:[serializeable serializeAsDictionary:version]];
}
- [ret setObject:serializedList forKey:key];
+ ret[key] = serializedList;
} else {
- [ret setObject:value forKey:key];
+ ret[key] = value;
}
} else {
- [ret setObject:value forKey:key];
+ ret[key] = value;
}
}
return ret;
}
--(id)copyWithZone:(nullable NSZone *)zone {
+- (id)copyWithZone:(nullable NSZone *)zone {
SDLRPCStruct *newStruct = [[[self class] allocWithZone:zone] init];
- newStruct->store = [self->store copy];
+ newStruct->store = [self->store mutableCopy];
return newStruct;
}
diff --git a/SmartDeviceLink/SDLRadioControlData.h b/SmartDeviceLink/SDLRadioControlData.h
index c693778d0..0fe489eb9 100644
--- a/SmartDeviceLink/SDLRadioControlData.h
+++ b/SmartDeviceLink/SDLRadioControlData.h
@@ -36,10 +36,10 @@ NS_ASSUME_NONNULL_BEGIN
@param band Radio band value
@param hdChannel Current HD sub-channel
@param radioEnable whether or not radio is enabled
- @param sisData Station Information Service (SIS) data
+ @param hdRadioEnable whether or not hdradio is enabled
@return An instance of the SDLRadioControlData class
*/
-- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable sisData:(SDLSISData *)sisData;
+- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable hdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable;
/**
* The integer part of the frequency ie for 101.7 this value should be 101
diff --git a/SmartDeviceLink/SDLRadioControlData.m b/SmartDeviceLink/SDLRadioControlData.m
index 19c778cb7..f1af68204 100644
--- a/SmartDeviceLink/SDLRadioControlData.m
+++ b/SmartDeviceLink/SDLRadioControlData.m
@@ -27,7 +27,7 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
-- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable sisData:(SDLSISData *)sisData {
+- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable hdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable {
self = [self init];
if(!self) {
return nil;
@@ -38,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN
self.band = band;
self.hdChannel = hdChannel;
self.radioEnable = radioEnable;
- self.sisData = sisData;
+ self.hdRadioEnable = hdRadioEnable;
return self;
}
diff --git a/SmartDeviceLink/SDLRegisterAppInterface.h b/SmartDeviceLink/SDLRegisterAppInterface.h
index 5171fcd30..a03c438b2 100644
--- a/SmartDeviceLink/SDLRegisterAppInterface.h
+++ b/SmartDeviceLink/SDLRegisterAppInterface.h
@@ -14,90 +14,89 @@
@class SDLTTSChunk;
/**
- * Registers the application's interface with SDL&reg;, declaring properties of
- * the registration, including the messaging interface version, the app name,
- * etc. The mobile application must establish its interface registration with
- * SDL before any other interaction with SDL&reg; can take place. The
- * registration lasts until it is terminated either by the application calling
- * the <i> SDLUnregisterAppInterface</i> method, or by SDL&reg;
- * sending an <i> SDLOnAppInterfaceUnregistered</i> notification, or
- * by loss of the underlying transport connection, or closing of the underlying
- * message transmission protocol RPC session
- * <p>
- * Until the application receives its first <i>SDLOnHMIStatus</i>
- * Notification, its HMI Status is assumed to be: <i>
- * SDLHMILevel</i>=NONE, <i>
- * SDLAudioStreamingState
- * </i>=NOT_AUDIBLE, <i>
- * SDLSystemContext</i>=MAIN
- * <p>
- * All SDL&reg; resources which the application creates or uses (e.g. Choice
- * Sets, Command Menu, etc.) are associated with the application's interface
- * registration. Therefore, when the interface registration ends, the SDL&reg;
- * resources associated with the application are disposed of. As a result, even
- * though the application itself may continue to run on its host platform (e.g.
- * mobile device) after the interface registration terminates, the application
- * will not be able to use the SDL&reg; HMI without first establishing a new
- * interface registration and re-creating its required SDL&reg; resources. That
- * is, SDL&reg; resources created by (or on behalf of) an application do not
- * persist beyond the life-span of the interface registration
- * <p>
- * Resources and settings whose lifespan is tied to the duration of an
- * application's interface registration:<br/>
- * <ul>
- * <li>Choice Sets</li>
- * <li>Command Menus (built by successive calls to <i>SDLAddCommand
- * </i>)</li>
- * <li>Media clock timer display value</li>
- * <li>Media clock timer display value</li>
- * <li>Media clock timer display value</li>
- * </ul>
- * <p>
- * The autoActivateID is used to grant an application the HMILevel and
- * AudioStreamingState it had when it last disconnected
- * <p>
- * <b>Notes: </b>The autoActivateID parameter, and associated behavior, is
- * currently ignored by SDL&reg;
- * <p>
- * When first calling this method (i.e. first time within life cycle of mobile
- * app), an autoActivateID should not be included. After successfully
- * registering an interface, an autoActivateID is returned to the mobile
- * application for it to use in subsequent connections. If the connection
- * between SDL&reg; and the mobile application is lost, such as the vehicle is
- * turned off while the application is running, the autoActivateID can then be
- * passed in another call to RegisterAppInterface to re-acquire <i>
- * SDLHMILevel</i>=FULL
- * <p>
- * If the application intends to stream audio it is important to indicate so via
- * the isMediaApp parameter. When set to true, audio will reliably stream
- * without any configuration required by the user. When not set, audio may
- * stream, depending on what the user might have manually configured as a media
- * source on SDL&reg;
- * <p>
- * There is no time limit for how long the autoActivateID is "valid" (i.e. would
- * confer focus and opt-in)
- * <p>
- * <b>HMILevel is not defined before registering</b><br/>
- * </p>
+ * Registers the application's interface with SDL. The `RegisterAppInterface` RPC declares the properties of the app, including the messaging interface version, the app name, etc. The mobile application must establish its interface registration with SDL before any other interaction with SDL can take place. The registration lasts until it is terminated either by the application calling the `SDLUnregisterAppInterface` method, or by SDL sending an `SDLOnAppInterfaceUnregistered` notification, or by loss of the underlying transport connection, or closing of the underlying message transmission protocol RPC session.
+ *
+ * Until the application receives its first `SDLOnHMIStatus` notification, its `SDLHMILevel` is assumed to be `NONE`, the `SDLAudioStreamingState` is assumed to be `NOT_AUDIBLE`, and the `SDLSystemContext` is assumed to be `MAIN`.
+ *
+ * All SDL resources which the application creates or uses (e.g. choice sets, command menu, etc.) are associated with the application's interface registration. Therefore, when the interface registration ends, the SDL resources associated with the application are disposed of. As a result, even though the application itself may continue to run on its host platform (e.g. mobile device) after the interface registration terminates, the application will not be able to use the SDL HMI without first establishing a new interface registration and re-creating its required SDL resources. That is, SDL resources created by (or on behalf of) an application do not persist beyond the life-span of the interface registration. Resources and settings whose lifespan is tied to the duration of an application's interface registration include: choice sets, command menus, and the media clock timer display value
+ *
+ * If the application intends to stream audio it is important to indicate so via the `isMediaApp` parameter. When set to true, audio will reliably stream without any configuration required by the user. When not set, audio may stream, depending on what the user might have manually configured as a media source on SDL.
*
* @since SDL 1.0
*
- * @see SDLUnregisterAppInterface SDLOnAppInterfaceUnregistered
+ * @see SDLUnregisterAppInterface, SDLOnAppInterfaceUnregistered
*/
NS_ASSUME_NONNULL_BEGIN
@interface SDLRegisterAppInterface : SDLRPCRequest
+/**
+ * Convenience init for registering the application with a lifecycle configuration.
+ *
+ * @param lifecycleConfiguration Configuration options for SDLManager
+ */
- (instancetype)initWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration;
+/**
+ * Convenience init for registering the application.
+ *
+ * @param appName The mobile application's name
+ * @param appId An appId used to validate app with policy table entries
+ * @param languageDesired The language the application intends to use for user interaction
+ * @return A SDLRegisterAppInterface object
+ */
- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired;
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName;
+/**
+ * Convenience init for registering the application.
+ *
+ * @param appName The mobile application's name
+ * @param appId An appId used to validate app with policy table entries
+ * @param languageDesired The language the application intends to use for user interaction
+ * @param isMediaApp Indicates if the application is a media or a non-media application
+ * @param appTypes A list of all applicable app types stating which classifications to be given to the app
+ * @param shortAppName An abbreviated version of the mobile application's name
+ * @return A SDLRegisterAppInterface object
+ */
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName __deprecated_msg(("Use initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme: instead"));
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash __deprecated_msg(("Use initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme: instead"));
+/**
+ * Convenience init for registering the application.
+ *
+ * @param appName The mobile application's name
+ * @param appId An appId used to validate app with policy table entries
+ * @param languageDesired The language the application intends to use for user interaction
+ * @param isMediaApp Indicates if the application is a media or a non-media application
+ * @param appTypes A list of all applicable app types stating which classifications to be given to the app
+ * @param shortAppName An abbreviated version of the mobile application's name
+ * @param ttsName TTS string for VR recognition of the mobile application name
+ * @param vrSynonyms Additional voice recognition commands
+ * @param hmiDisplayLanguageDesired Current app's expected VR+TTS language
+ * @param resumeHash ID used to uniquely identify current state of all app data that can persist through connection cycles
+ * @return A SDLRegisterAppInterface object
+ */
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash __deprecated_msg(("Use initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme: instead"));
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme;
+/**
+ * Convenience init for registering the application with all possible options.
+ *
+ * @param appName The mobile application's name
+ * @param appId An appId used to validate app with policy table entries
+ * @param fullAppId A full UUID appID used to validate app with policy table entries.
+ * @param languageDesired The language the application intends to use for user interaction
+ * @param isMediaApp Indicates if the application is a media or a non-media application
+ * @param appTypes A list of all applicable app types stating which classifications to be given to the app
+ * @param shortAppName An abbreviated version of the mobile application's name
+ * @param ttsName TTS string for VR recognition of the mobile application name
+ * @param vrSynonyms Additional voice recognition commands
+ * @param hmiDisplayLanguageDesired Current app's expected VR+TTS language
+ * @param resumeHash ID used to uniquely identify current state of all app data that can persist through connection cycles
+ * @param dayColorScheme The color scheme to be used on a head unit using a "light" or "day" color scheme.
+ * @param nightColorScheme The color scheme to be used on a head unit using a "dark" or "night" color scheme
+ * @return A SDLRegisterAppInterface object
+ */
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId fullAppId:(nullable NSString *)fullAppId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme;
/**
* The version of the SDL interface
@@ -107,14 +106,12 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic) SDLSyncMsgVersion *syncMsgVersion;
/**
- * The Mobile Application's Name, This name is displayed in the SDL Mobile Applications menu. It also serves as the unique identifier of the application for SmartDeviceLink
+ * The mobile application's name. This name is displayed in the SDL Mobile Applications menu. It also serves as the unique identifier of the application for SmartDeviceLink.
*
- * @discussion
- * <li>Needs to be unique over all applications.</li>
- * <li>May not be empty.</li>
- * <li>May not start with a new line character.</li>
- * <li>May not interfere with any name or synonym of previously registered applications and any predefined blacklist of words (global commands).</li>
- * <li>Needs to be unique over all applications. Applications with the same name will be rejected.</li>
+ * 1. Needs to be unique over all applications. Applications with the same name will be rejected.
+ * 2. May not be empty.
+ * 3. May not start with a new line character.
+ * 4. May not interfere with any name or synonym of previously registered applications and any predefined blacklist of words (global commands).
*
* Required, Max length 100 chars
*/
@@ -124,9 +121,9 @@ NS_ASSUME_NONNULL_BEGIN
* TTS string for VR recognition of the mobile application name.
*
* @discussion Meant to overcome any failing on speech engine in properly pronouncing / understanding app name.
- * <li>Needs to be unique over all applications.</li>
- * <li>May not be empty.</li>
- * <li>May not start with a new line character.</li>
+ * 1. Needs to be unique over all applications.
+ * 2. May not be empty.
+ * 3. May not start with a new line character.
*
* Optional, Array of SDLTTSChunk, Array size 1 - 100
*
@@ -136,7 +133,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *ttsName;
/**
- * A String representing an abbreviated version of the mobile application's name (if necessary) that will be displayed on the media screen
+ * A String representing an abbreviated version of the mobile application's name (if necessary) that will be displayed on the media screen.
*
* @discussion If not provided, the appName is used instead (and will be truncated if too long)
*
@@ -145,9 +142,9 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, strong, nonatomic) NSString *ngnMediaScreenAppName;
/**
- * Defines a additional voice recognition commands
+ * Defines additional voice recognition commands
*
- * @discussion May not interfere with any app name of previously registered applications and any predefined blacklist of words (global commands)
+ * @discussion May not interfere with any app name of previously registered applications and any predefined blacklist of words (global commands).
*
* Optional, Array of Strings, Array length 1 - 100, Max String length 40
*/
@@ -215,11 +212,22 @@ NS_ASSUME_NONNULL_BEGIN
*
* Required, max length 100
*
+ * @see `fullAppID`
+ *
* @since SDL 2.0
*/
@property (strong, nonatomic) NSString *appID;
/**
+ * A full UUID appID used to validate app with policy table entries.
+ *
+ * Optional
+ *
+ * @discussion The `fullAppId` is used to authenticate apps that connect with head units that implement SDL Core v.5.0 and newer. If connecting with older head units, the `fullAppId` can be truncated to create the required `appId` needed to register the app. The `appId` is the first 10 non-dash ("-") characters of the `fullAppID` (e.g. if you have a `fullAppId` of 123e4567-e89b-12d3-a456-426655440000, the `appId` will be 123e4567e8).
+ */
+@property (nullable, strong, nonatomic) NSString *fullAppID;
+
+/**
* Information about the application running
*
* Optional
@@ -227,16 +235,16 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, strong, nonatomic) SDLAppInfo *appInfo;
/**
- The color scheme to be used on a head unit using a "light" or "day" color scheme. The OEM may only support this theme if their head unit only has a light color scheme.
-
- Optional
+ * The color scheme to be used on a head unit using a "light" or "day" color scheme. The OEM may only support this theme if their head unit only has a light color scheme.
+ *
+ * Optional
*/
@property (strong, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
/**
- The color scheme to be used on a head unit using a "dark" or "night" color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.
-
- Optional
+ * The color scheme to be used on a head unit using a "dark" or "night" color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.
+ *
+ * Optional
*/
@property (strong, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
diff --git a/SmartDeviceLink/SDLRegisterAppInterface.m b/SmartDeviceLink/SDLRegisterAppInterface.m
index 5020d142b..915e06231 100644
--- a/SmartDeviceLink/SDLRegisterAppInterface.m
+++ b/SmartDeviceLink/SDLRegisterAppInterface.m
@@ -8,6 +8,7 @@
#import "SDLAppHMIType.h"
#import "SDLAppInfo.h"
#import "SDLDeviceInfo.h"
+#import "SDLGlobals.h"
#import "SDLLanguage.h"
#import "SDLLifecycleConfiguration.h"
#import "SDLNames.h"
@@ -19,6 +20,8 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SDLRegisterAppInterface
+#pragma mark - Lifecycle
+
- (instancetype)init {
if (self = [super initWithName:SDLNameRegisterAppInterface]) {
}
@@ -30,6 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
return [self initWithAppName:lifecycleConfiguration.appName
appId:lifecycleConfiguration.appId
+ fullAppId:lifecycleConfiguration.fullAppId
languageDesired:lifecycleConfiguration.language
isMediaApp:lifecycleConfiguration.isMedia
appTypes:allHMITypes
@@ -47,18 +51,23 @@ NS_ASSUME_NONNULL_BEGIN
if (!self) {
return nil;
}
-
+
self.appName = appName;
self.appID = appId;
+ self.fullAppID = nil;
self.languageDesired = languageDesired;
+
self.hmiDisplayLanguageDesired = languageDesired;
-
- self.syncMsgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:0 patchVersion:0];
+
+ UInt8 majorVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(0, 1)].intValue;
+ UInt8 minorVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(2, 1)].intValue;
+ UInt8 patchVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(4, 1)].intValue;
+ self.syncMsgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:majorVersion minorVersion:minorVersion patchVersion:patchVersion];
self.appInfo = [SDLAppInfo currentAppInfo];
self.deviceInfo = [SDLDeviceInfo currentDevice];
self.correlationID = @1;
self.isMediaApplication = @NO;
-
+
return self;
}
@@ -89,20 +98,19 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
- self = [self initWithAppName:appName appId:appId languageDesired:languageDesired isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName];
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId fullAppId:(nullable NSString *)fullAppId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
+ self = [self initWithAppName:appName appId:appId languageDesired:languageDesired isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName ttsName:ttsName vrSynonyms:vrSynonyms hmiDisplayLanguageDesired:hmiDisplayLanguageDesired resumeHash:resumeHash];
if (!self) { return nil; }
- self.ttsName = [ttsName copy];
- self.vrSynonyms = [vrSynonyms copy];
- self.hmiDisplayLanguageDesired = hmiDisplayLanguageDesired;
- self.hashID = resumeHash;
+ self.fullAppID = fullAppId;
self.dayColorScheme = dayColorScheme;
self.nightColorScheme = nightColorScheme;
return self;
}
+#pragma mark - Getters and Setters
+
- (void)setSyncMsgVersion:(SDLSyncMsgVersion *)syncMsgVersion {
[parameters sdl_setObject:syncMsgVersion forName:SDLNameSyncMessageVersion];
}
@@ -199,6 +207,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLNameAppId];
}
+- (void)setFullAppID:(nullable NSString *)fullAppID {
+ [parameters sdl_setObject:fullAppID forName:SDLNameFullAppID];
+}
+
+- (nullable NSString *)fullAppID {
+ return [parameters sdl_objectForName:SDLNameFullAppID];
+}
+
- (void)setAppInfo:(nullable SDLAppInfo *)appInfo {
[parameters sdl_setObject:appInfo forName:SDLNameAppInfo];
}
diff --git a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m
index 1033f1b6c..f8b3b626b 100644
--- a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m
+++ b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m
@@ -135,7 +135,7 @@ NS_ASSUME_NONNULL_BEGIN
}
- (nullable SDLVehicleType *)vehicleType {
- return [parameters sdl_objectForName:SDLNameVehicleType ofClass:SDLVehicleType.class];
+ return [parameters sdl_objectForName:SDLNameVehicleType ofClass:[SDLVehicleType class]];
}
- (void)setSupportedDiagModes:(nullable NSArray<NSNumber<SDLInt> *> *)supportedDiagModes {
diff --git a/SmartDeviceLink/SDLResponseDispatcher.m b/SmartDeviceLink/SDLResponseDispatcher.m
index e95c3be6c..6851a1575 100644
--- a/SmartDeviceLink/SDLResponseDispatcher.m
+++ b/SmartDeviceLink/SDLResponseDispatcher.m
@@ -8,6 +8,7 @@
#import "SDLResponseDispatcher.h"
+#import "NSMutableArray+Safe.h"
#import "NSMutableDictionary+SafeRemove.h"
#import "SDLAddCommand.h"
#import "SDLAlert.h"
@@ -15,6 +16,7 @@
#import "SDLDeleteCommand.h"
#import "SDLDeleteCommandResponse.h"
#import "SDLError.h"
+#import "SDLGlobals.h"
#import "SDLLogMacros.h"
#import "SDLOnAudioPassThru.h"
#import "SDLOnButtonEvent.h"
@@ -215,10 +217,9 @@ NS_ASSUME_NONNULL_BEGIN
- (void)sdl_runHandlerForButton:(SDLRPCNotificationNotification *)notification {
__kindof SDLRPCNotification *rpcNotification = notification.notification;
-
- SDLRPCButtonNotificationHandler handler = nil;
SDLButtonName name = nil;
NSNumber *customID = nil;
+ SDLRPCButtonNotificationHandler handler = nil;
if ([rpcNotification isMemberOfClass:[SDLOnButtonEvent class]]) {
name = ((SDLOnButtonEvent *)rpcNotification).buttonName;
@@ -226,20 +227,26 @@ NS_ASSUME_NONNULL_BEGIN
} else if ([rpcNotification isMemberOfClass:[SDLOnButtonPress class]]) {
name = ((SDLOnButtonPress *)rpcNotification).buttonName;
customID = ((SDLOnButtonPress *)rpcNotification).customButtonID;
+ } else {
+ return;
}
if ([name isEqualToEnum:SDLButtonNameCustomButton]) {
+ // Custom buttons
handler = self.customButtonHandlerMap[customID];
} else {
+ // Static buttons
handler = self.buttonHandlerMap[name];
}
- if (handler) {
- if ([rpcNotification isMemberOfClass:[SDLOnButtonEvent class]]) {
- handler(nil, rpcNotification);
- } else if ([rpcNotification isMemberOfClass:[SDLOnButtonPress class]]) {
- handler(rpcNotification, nil);
- }
+ if (handler == nil) {
+ return;
+ }
+
+ if ([rpcNotification isMemberOfClass:[SDLOnButtonEvent class]]) {
+ handler(nil, rpcNotification);
+ } else if ([rpcNotification isMemberOfClass:[SDLOnButtonPress class]]) {
+ handler(rpcNotification, nil);
}
}
diff --git a/SmartDeviceLink/SDLSISData.h b/SmartDeviceLink/SDLSISData.h
index c8a40a647..b7d939644 100644
--- a/SmartDeviceLink/SDLSISData.h
+++ b/SmartDeviceLink/SDLSISData.h
@@ -4,7 +4,7 @@
#import "SDLRPCMessage.h"
@class SDLStationIDNumber;
-@class SDLGPSLocation;
+@class SDLGPSData;
/**
* HD radio Station Information Service (SIS) data.
@@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface SDLSISData : SDLRPCStruct
-- (instancetype)initWithStationShortName:(nullable NSString *)stationShortName stationIDNumber:(nullable SDLStationIDNumber *)id stationLongName:(nullable NSString *)stationLongName stationLocation:(nullable SDLGPSLocation *)stationLocation stationMessage:(nullable NSString *)stationMessage;
+- (instancetype)initWithStationShortName:(nullable NSString *)stationShortName stationIDNumber:(nullable SDLStationIDNumber *)id stationLongName:(nullable NSString *)stationLongName stationLocation:(nullable SDLGPSData *)stationLocation stationMessage:(nullable NSString *)stationMessage;
/**
* @abstract Identifies the 4-alpha-character station call sign
@@ -44,9 +44,9 @@ NS_ASSUME_NONNULL_BEGIN
/**
* @abstract Provides the 3-dimensional geographic station location
*
- * Optional, SDLGPSLocation type
+ * Optional, SDLGPSData type
*/
-@property (nullable, strong, nonatomic) SDLGPSLocation *stationLocation;
+@property (nullable, strong, nonatomic) SDLGPSData *stationLocation;
/**
* @abstract May be used to convey textual information of general interest
diff --git a/SmartDeviceLink/SDLSISData.m b/SmartDeviceLink/SDLSISData.m
index 8e3ad9aa6..27681aab9 100644
--- a/SmartDeviceLink/SDLSISData.m
+++ b/SmartDeviceLink/SDLSISData.m
@@ -4,7 +4,7 @@
#import "SDLSISData.h"
#import "SDLStationIDNumber.h"
-#import "SDLGPSLocation.h"
+#import "SDLGPSData.h"
#import "SDLNames.h"
#import "NSMutableDictionary+Store.h"
@@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SDLSISData
-- (instancetype)initWithStationShortName:(nullable NSString *)stationShortName stationIDNumber:(nullable SDLStationIDNumber *)stationIDNumber stationLongName:(nullable NSString *)stationLongName stationLocation:(nullable SDLGPSLocation *)stationLocation stationMessage:(nullable NSString *)stationMessage {
+- (instancetype)initWithStationShortName:(nullable NSString *)stationShortName stationIDNumber:(nullable SDLStationIDNumber *)stationIDNumber stationLongName:(nullable NSString *)stationLongName stationLocation:(nullable SDLGPSData *)stationLocation stationMessage:(nullable NSString *)stationMessage {
self = [self init];
if(!self) {
return nil;
@@ -51,12 +51,12 @@ NS_ASSUME_NONNULL_BEGIN
return [store sdl_objectForName:SDLNameStationLongName];
}
-- (void)setStationLocation:(nullable SDLGPSLocation *)stationLocation {
+- (void)setStationLocation:(nullable SDLGPSData *)stationLocation {
[store sdl_setObject:stationLocation forName:SDLNameStationLocation];
}
-- (nullable SDLGPSLocation *)stationLocation {
- return [store sdl_objectForName:SDLNameStationLocation ofClass:SDLGPSLocation.class];
+- (nullable SDLGPSData *)stationLocation {
+ return [store sdl_objectForName:SDLNameStationLocation ofClass:SDLGPSData.class];
}
- (void)setStationMessage:(nullable NSString *)stationMessage {
diff --git a/SmartDeviceLink/SDLSRGBColor.h b/SmartDeviceLink/SDLSRGBColor.h
deleted file mode 100644
index 96b24c37e..000000000
--- a/SmartDeviceLink/SDLSRGBColor.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// SDLSRGBColor.h
-//
-
-#import "SDLRPCMessage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLSRGBColor : SDLRPCStruct
-
-- (instancetype)initWithRed:(UInt8)red green:(UInt8)green blue:(UInt8)blue;
-
-/**
- * @abstract value of red in integer
- *
- * Required, Integer minValue:0 maxValue:255
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *red;
-
-/**
- * @abstract value of red in integer
- *
- * Required, Integer minValue:0 maxValue:255
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *green;
-
-/**
- * @abstract value of red in integer
- *
- * Required, Integer minValue:0 maxValue:255
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *blue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSRGBColor.m b/SmartDeviceLink/SDLSRGBColor.m
deleted file mode 100644
index 7843a36aa..000000000
--- a/SmartDeviceLink/SDLSRGBColor.m
+++ /dev/null
@@ -1,52 +0,0 @@
-// SDLSRGBColor.m
-//
-
-#import "SDLSRGBColor.h"
-#import "SDLNames.h"
-#import "NSMutableDictionary+Store.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSRGBColor
-
-- (instancetype)initWithRed:(UInt8)red green:(UInt8)green blue:(UInt8)blue {
- self = [self init];
- if(!self) {
- return nil;
- }
-
- self.red = @(red);
- self.green = @(green);
- self.blue = @(blue);
-
- return self;
-}
-
-- (void)setRed:(NSNumber<SDLInt> *)red {
- [store sdl_setObject:red forName:SDLNameRed];
-}
-
-- (NSNumber<SDLInt> *)red {
- return [store sdl_objectForName:SDLNameRed];
-}
-
-- (void)setGreen:(NSNumber<SDLInt> *)green {
- [store sdl_setObject:green forName:SDLNameGreen];
-}
-
-- (NSNumber<SDLInt> *)green {
- return [store sdl_objectForName:SDLNameGreen];
-}
-
-- (void)setBlue:(NSNumber<SDLInt> *)blue {
- [store sdl_setObject:blue forName:SDLNameBlue];
-}
-
-- (NSNumber<SDLInt> *)blue {
- return [store sdl_objectForName:SDLNameBlue];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUploadFileOperation.m b/SmartDeviceLink/SDLUploadFileOperation.m
index 3eea620ba..620d0f833 100644
--- a/SmartDeviceLink/SDLUploadFileOperation.m
+++ b/SmartDeviceLink/SDLUploadFileOperation.m
@@ -66,7 +66,7 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (void)sdl_sendFile:(SDLFile *)file mtuSize:(NSUInteger)mtuSize withCompletion:(SDLFileManagerUploadCompletionHandler)completion {
__block NSError *streamError = nil;
- __block NSUInteger bytesAvailable = 0;
+ __block NSUInteger bytesAvailable = 2000000000;
__block NSInteger highestCorrelationIDReceived = -1;
if (self.isCancelled) {
@@ -128,6 +128,7 @@ NS_ASSUME_NONNULL_BEGIN
__weak typeof(self) weakself = self;
[self.connectionManager sendConnectionManagerRequest:putFile withResponseHandler:^(__kindof SDLRPCRequest *_Nullable request, __kindof SDLRPCResponse *_Nullable response, NSError *_Nullable error) {
typeof(weakself) strongself = weakself;
+ SDLPutFileResponse *putFileResponse = (SDLPutFileResponse *)response;
// Check if the upload process has been cancelled by another packet. If so, stop the upload process.
// TODO: Is this the right way to handle this case? Should we just abort everything in the future? Should we be deleting what we sent? Should we have an automatic retry strategy based on what the error was?
@@ -147,7 +148,9 @@ NS_ASSUME_NONNULL_BEGIN
// If no errors, watch for a response containing the amount of storage left on the SDL Core
if ([self.class sdl_newHighestCorrelationID:request highestCorrelationIDReceived:highestCorrelationIDReceived]) {
highestCorrelationIDReceived = [request.correlationID integerValue];
- bytesAvailable = [(SDLPutFileResponse *)response spaceAvailable].unsignedIntegerValue;
+
+ // If spaceAvailable is nil, set it to the max value
+ bytesAvailable = putFileResponse.spaceAvailable != nil ? putFileResponse.spaceAvailable.unsignedIntegerValue : 2000000000;
}
dispatch_group_leave(putFileGroup);
diff --git a/SmartDeviceLink/SDLV2ProtocolMessage.m b/SmartDeviceLink/SDLV2ProtocolMessage.m
index 291dde6a1..65694651e 100644
--- a/SmartDeviceLink/SDLV2ProtocolMessage.m
+++ b/SmartDeviceLink/SDLV2ProtocolMessage.m
@@ -36,8 +36,8 @@ NS_ASSUME_NONNULL_BEGIN
// Create the inner dictionary with the RPC properties
NSMutableDictionary <NSString *, id> *innerDictionary = [[NSMutableDictionary alloc] init];
NSString *functionName = [[SDLFunctionID sharedInstance] functionNameForId:rpcPayload.functionID];
- [innerDictionary setObject:functionName forKey:SDLNameOperationName];
- [innerDictionary setObject:[NSNumber numberWithUnsignedInt:rpcPayload.correlationID] forKey:SDLNameCorrelationId];
+ innerDictionary[SDLNameOperationName] = functionName;
+ innerDictionary[SDLNameCorrelationId] = @(rpcPayload.correlationID);
// Get the json data from the struct
if (rpcPayload.jsonData) {
diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h
index 1ab1ae83f..3dfd5e2df 100644
--- a/SmartDeviceLink/SmartDeviceLink.h
+++ b/SmartDeviceLink/SmartDeviceLink.h
@@ -165,7 +165,6 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLFuelRange.h"
#import "SDLEqualizerSettings.h"
#import "SDLGPSData.h"
-#import "SDLGPSLocation.h"
#import "SDLHapticRect.h"
#import "SDLHMICapabilities.h"
#import "SDLHMIPermissions.h"
@@ -208,7 +207,6 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSISData.h"
#import "SDLSoftButton.h"
#import "SDLSoftButtonCapabilities.h"
-#import "SDLSRGBColor.h"
#import "SDLStartTime.h"
#import "SDLStationIDNumber.h"
#import "SDLSyncMsgVersion.h"
diff --git a/SmartDeviceLinkSwift/Info.plist b/SmartDeviceLinkSwift/Info.plist
index 5e6057d0c..d446c7275 100644
--- a/SmartDeviceLinkSwift/Info.plist
+++ b/SmartDeviceLinkSwift/Info.plist
@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
- <string>6.0.0</string>
+ <string>6.0.2</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLAsynchronousRPCRequestOperationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLAsynchronousRPCRequestOperationSpec.m
index eed4efa81..7cec8f3e5 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLAsynchronousRPCRequestOperationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLAsynchronousRPCRequestOperationSpec.m
@@ -17,7 +17,7 @@ describe(@"sending asynchronous requests", ^{
__block NSMutableArray<SDLAddCommand *> *sendRequests = nil;
__block NSMutableDictionary<NSNumber<SDLInt> *, TestRequestProgressResponse *> *testProgressResponses;
- __block NSMutableArray<SDLRPCResponse *> *resultResponses = [NSMutableArray array];
+ __block NSMutableArray<SDLRPCResponse *> *resultResponses = nil;
beforeEach(^{
testOperation = nil;
@@ -25,6 +25,7 @@ describe(@"sending asynchronous requests", ^{
sendRequests = [NSMutableArray array];
testProgressResponses = [NSMutableDictionary dictionary];
+ resultResponses = [NSMutableArray array];
testOperationQueue = [[NSOperationQueue alloc] init];
testOperationQueue.name = @"com.sdl.asynchronousRPCOp.testqueue";
@@ -62,6 +63,32 @@ describe(@"sending asynchronous requests", ^{
});
});
+ context(@"when request are cancelled", ^{
+ beforeEach(^{
+ for (int i = 0; i < 3; i++) {
+ SDLAddCommand *addCommand = [[SDLAddCommand alloc] init];
+ addCommand.correlationID = @(i);
+ [sendRequests addObject:addCommand];
+
+ testProgressResponses[addCommand.correlationID] = [[TestRequestProgressResponse alloc] initWithCorrelationId:addCommand.correlationID percentComplete:((float)(i+1)/3.0) error:nil];
+ }
+ });
+
+ it(@"should fail correctly", ^{
+ testOperation = [[SDLAsynchronousRPCRequestOperation alloc] initWithConnectionManager:testConnectionManager requests:[sendRequests copy] progressHandler:^(__kindof SDLRPCRequest * _Nonnull request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error, float percentComplete) {
+ expect(percentComplete).to(beCloseTo(0));
+ expect(response).to(beNil());
+ expect(error).toNot(beNil());
+ expect(error.code).to(equal(-8));
+ } completionHandler:^(BOOL success) {
+ expect(success).to(beFalsy());
+ }];
+
+ [testOperationQueue addOperation:testOperation];
+ [testOperationQueue cancelAllOperations];
+ });
+ });
+
context(@"where not all requests succeed", ^{
__block NSError *testError = [NSError errorWithDomain:@"com.test" code:-3 userInfo:nil];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m
index 601d960f5..c89a969be 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m
@@ -131,12 +131,22 @@ describe(@"an SDLChoiceSet", ^{
expect(testChoiceSet).to(beNil());
});
- it(@"should return nil with equivalent voice command strings", ^{
- // Cell `voiceCommands` cannot be equal
- SDLChoiceCell *equalCellVR = [[SDLChoiceCell alloc] initWithText:@"Text" artwork:nil voiceCommands:@[@"vr"]];
- SDLChoiceCell *equalCellVR2 = [[SDLChoiceCell alloc] initWithText:@"Text2" artwork:nil voiceCommands:@[@"vr"]];
- testChoiceSet = [[SDLChoiceSet alloc] initWithTitle:testTitle delegate:testDelegate choices:@[equalCellVR, equalCellVR2]];
- expect(testChoiceSet).to(beNil());
+ context(@"With bad VR data", ^{
+ it(@"should return nil if not all choice set items have voice commands", ^{
+ // Cell `voiceCommands` cannot be equal
+ SDLChoiceCell *equalCellVR = [[SDLChoiceCell alloc] initWithText:@"Text" artwork:nil voiceCommands:@[@"vr"]];
+ SDLChoiceCell *equalCellVR2 = [[SDLChoiceCell alloc] initWithText:@"Text2" artwork:nil voiceCommands:nil];
+ testChoiceSet = [[SDLChoiceSet alloc] initWithTitle:testTitle delegate:testDelegate choices:@[equalCellVR, equalCellVR2]];
+ expect(testChoiceSet).to(beNil());
+ });
+
+ it(@"should return nil if there are duplicate voice command strings in the choice set", ^{
+ // Cell `voiceCommands` cannot be equal
+ SDLChoiceCell *equalCellVR = [[SDLChoiceCell alloc] initWithText:@"Text" artwork:nil voiceCommands:@[@"Dog"]];
+ SDLChoiceCell *equalCellVR2 = [[SDLChoiceCell alloc] initWithText:@"Text2" artwork:nil voiceCommands:@[@"Parrot", @"Dog"]];
+ testChoiceSet = [[SDLChoiceSet alloc] initWithTitle:testTitle delegate:testDelegate choices:@[equalCellVR, equalCellVR2]];
+ expect(testChoiceSet).to(beNil());
+ });
});
});
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m
index 106f26ebc..cdfef4f4d 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m
@@ -31,7 +31,7 @@ describe(@"a configuration", ^{
someBackgroundColor = [UIColor blueColor];
someImage = [UIImage imageNamed:@"testImagePNG" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
- someLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:someAppName appId:someAppId];
+ someLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:someAppName fullAppId:someAppId];
someLockscreenConfig = [SDLLockScreenConfiguration enabledConfigurationWithAppIcon:someImage backgroundColor:someBackgroundColor];
someLogConfig = [SDLLogConfiguration defaultConfiguration];
someStreamingConfig = [SDLStreamingMediaConfiguration insecureConfiguration];
@@ -86,7 +86,7 @@ describe(@"a configuration", ^{
describe(@"streaming media config", ^{
beforeEach(^{
- someLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:someAppName appId:someAppId];
+ someLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:someAppName fullAppId:someAppId];
someLifecycleConfig.appType = SDLAppHMITypeNavigation;
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m
index 8a5ea9318..68a24e4b6 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m
@@ -23,6 +23,7 @@ typedef NSString SDLFileManagerState;
SDLFileManagerState *const SDLFileManagerStateShutdown = @"Shutdown";
SDLFileManagerState *const SDLFileManagerStateFetchingInitialList = @"FetchingInitialList";
SDLFileManagerState *const SDLFileManagerStateReady = @"Ready";
+SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError";
@interface SDLFileManager ()
@property (strong, nonatomic) NSOperationQueue *transactionQueue;
@@ -123,6 +124,31 @@ describe(@"SDLFileManager", ^{
});
});
+ describe(@"after receiving a ListFiles error", ^{
+ __block SDLListFilesResponse *testListFilesResponse = nil;
+ __block NSSet<NSString *> *testInitialFileNames = nil;
+ __block NSUInteger initialBytesAvailable = 0;
+
+ beforeEach(^{
+ testInitialFileNames = [NSSet setWithArray:@[@"testFile1", @"testFile2", @"testFile3"]];
+ initialBytesAvailable = testFileManager.bytesAvailable;
+
+ testListFilesResponse = [[SDLListFilesResponse alloc] init];
+ testListFilesResponse.success = @NO;
+ testListFilesResponse.spaceAvailable = nil;
+ testListFilesResponse.filenames = nil;
+ [testConnectionManager respondToLastRequestWithResponse:testListFilesResponse];
+ });
+
+ it(@"should handle the error properly", ^{
+ [testConnectionManager respondToLastRequestWithResponse:testListFilesResponse];
+
+ expect(testFileManager.currentState).toEventually(match(SDLFileManagerStateStartupError));
+ expect(testFileManager.remoteFileNames).toEventually(beEmpty());
+ expect(@(testFileManager.bytesAvailable)).toEventually(equal(initialBytesAvailable));
+ });
+ });
+
describe(@"after receiving a ListFiles response", ^{
__block SDLListFilesResponse *testListFilesResponse = nil;
__block NSSet<NSString *> *testInitialFileNames = nil;
@@ -208,6 +234,40 @@ describe(@"SDLFileManager", ^{
expect(testFileManager.remoteFileNames).toNot(contain(someKnownFileName));
});
});
+
+ context(@"when the request returns an error", ^{
+ __block NSUInteger initialSpaceAvailable = 0;
+ __block NSString *someKnownFileName = nil;
+ __block BOOL completionSuccess = NO;
+ __block NSUInteger completionBytesAvailable = 0;
+ __block NSError *completionError = nil;
+
+ beforeEach(^{
+ initialSpaceAvailable = testFileManager.bytesAvailable;
+ someKnownFileName = [testInitialFileNames anyObject];
+ [testFileManager deleteRemoteFileWithName:someKnownFileName completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) {
+ completionSuccess = success;
+ completionBytesAvailable = bytesAvailable;
+ completionError = error;
+ }];
+
+ SDLDeleteFileResponse *deleteResponse = [[SDLDeleteFileResponse alloc] init];
+ deleteResponse.success = @NO;
+ deleteResponse.spaceAvailable = nil;
+
+ [NSThread sleepForTimeInterval:0.1];
+
+ [testConnectionManager respondToLastRequestWithResponse:deleteResponse];;
+ });
+
+ it(@"should handle the error properly", ^{
+ expect(testFileManager.currentState).toEventually(match(SDLFileManagerStateReady));
+ expect(completionSuccess).toEventually(beFalse());
+ expect(completionBytesAvailable).toEventually(equal(2000000000));
+ expect(completionError).toNot(beNil());
+ expect(@(testFileManager.bytesAvailable)).toEventually(equal(@(initialSpaceAvailable)));
+ });
+ });
});
describe(@"uploading a new file", ^{
@@ -285,16 +345,11 @@ describe(@"SDLFileManager", ^{
context(@"when the connection returns failure", ^{
__block SDLPutFileResponse *testResponse = nil;
- __block NSNumber *testResponseBytesAvailable = nil;
- __block NSNumber *testResponseSuccess = nil;
beforeEach(^{
- testResponseBytesAvailable = @750;
- testResponseSuccess = @NO;
-
testResponse = [[SDLPutFileResponse alloc] init];
- testResponse.spaceAvailable = testResponseBytesAvailable;
- testResponse.success = testResponseSuccess;
+ testResponse.spaceAvailable = nil;
+ testResponse.success = @NO;
[testConnectionManager respondToLastRequestWithResponse:testResponse];
});
@@ -307,8 +362,8 @@ describe(@"SDLFileManager", ^{
});
it(@"should call the completion handler with the correct data", ^{
- expect(@(completionBytesAvailable)).to(equal(@0));
- expect(@(completionSuccess)).to(equal(testResponseSuccess));
+ expect(completionBytesAvailable).to(equal(2000000000));
+ expect(@(completionSuccess)).to(equal(@NO));
expect(completionError).toEventuallyNot(beNil());
});
@@ -454,7 +509,7 @@ describe(@"SDLFileManager", ^{
});
it(@"should call the completion handler with the correct data", ^{
- expect(@(completionBytesAvailable)).to(equal(@0));
+ expect(@(completionBytesAvailable)).to(equal(@2000000000));
expect(@(completionSuccess)).to(equal(testResponseSuccess));
expect(completionError).toEventuallyNot(beNil());
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m
index fa08d2e38..100acc9c2 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m
@@ -1,3 +1,10 @@
+//
+// SDLLifecycleConfigurationSpec.m
+// SmartDeviceLinkTests
+//
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
@@ -8,263 +15,234 @@
#import "SDLSpeechCapabilities.h"
#import "SDLTTSChunk.h"
+
+@interface SDLLifecycleConfiguration()
+
++ (NSString *)sdlex_shortAppIdFromFullAppId:(NSString *)fullAppId;
+
+@end
+
+
QuickSpecBegin(SDLLifecycleConfigurationSpec)
-describe(@"a lifecycle configuration", ^{
+describe(@"A lifecycle configuration", ^{
__block SDLLifecycleConfiguration *testConfig = nil;
-
- context(@"that is created with default settings", ^{
- __block NSString *someAppName = nil;
- __block NSString *someAppId = nil;
-
- beforeEach(^{
- someAppName = @"An App Name";
- someAppId = @"00542596432764329684352896423679";
-
- testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:someAppName appId:someAppId];
- });
-
- it(@"should have properly set properties", ^{
- expect(testConfig.appName).to(match(someAppName));
- expect(testConfig.appId).to(match(someAppId));
- expect(@(testConfig.tcpDebugMode)).to(beFalsy());
- expect(testConfig.tcpDebugIPAddress).to(match(@"192.168.0.1"));
- expect(@(testConfig.tcpDebugPort)).to(equal(@12345));
- expect(@([testConfig.appType isEqualToEnum:SDLAppHMITypeDefault])).to(equal(@YES));
- expect(testConfig.additionalAppTypes).to(beNil());
- expect(@(testConfig.isMedia)).to(beFalsy());
- expect(@([testConfig.language isEqualToEnum:SDLLanguageEnUs])).to(equal(@YES));
- expect(@([[testConfig.languagesSupported firstObject] isEqualToEnum:SDLLanguageEnUs])).to(equal(@YES));
- expect(testConfig.shortAppName).to(beNil());
- expect(testConfig.ttsName).to(beNil());
- expect(testConfig.voiceRecognitionCommandNames).to(beNil());
- expect(testConfig.resumeHash).to(beNil());
+ __block NSString *testAppName = @"An App Name";
+ __block NSString *testAppId = @"00542596";
+ __block NSString *testFullAppId = @"-ab--987-adfa651kj-212346h3kjkaju";
+ __block NSString *expectedGeneratedAppId = @"ab987adfa6";
+
+ beforeEach(^{
+ testConfig = nil;
+ });
+
+ context(@"created with a default configuration", ^{
+ context(@"should be successfully initialized", ^{
+ it(@"defaultConfigurationWithAppName:appId:", ^{
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:testAppName appId:testAppId];
+
+ expect(testConfig.appId).to(match(testAppId));
+ expect(testConfig.fullAppId).to(beNil());
+ #pragma clang diagnostic pop
+ });
+
+ it(@"defaultConfigurationWithAppName:fullAppId:", ^{
+ testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:testAppName fullAppId:testFullAppId];
+
+ expect(testConfig.appId).to(match(expectedGeneratedAppId));
+ expect(testConfig.fullAppId).to(match(testFullAppId));
+ });
+
+ afterEach(^{
+ expect(testConfig.appName).to(match(testAppName));
+ expect(testConfig.tcpDebugMode).to(beFalse());
+ expect(testConfig.tcpDebugIPAddress).to(match(@"192.168.0.1"));
+ expect(@(testConfig.tcpDebugPort)).to(equal(@12345));
+ expect(testConfig.appType).to(match(SDLAppHMITypeDefault));
+ expect(testConfig.additionalAppTypes).to(beNil());
+ expect(testConfig.isMedia).to(beFalse());
+ expect(testConfig.language).to(match(SDLLanguageEnUs));
+ expect(testConfig.languagesSupported.firstObject).to(match(SDLLanguageEnUs));
+ expect(testConfig.shortAppName).to(beNil());
+ expect(testConfig.ttsName).to(beNil());
+ expect(testConfig.voiceRecognitionCommandNames).to(beNil());
+ expect(testConfig.resumeHash).to(beNil());
+ });
});
-
- describe(@"after setting properties manually", ^{
- __block NSString *someShortAppName = nil;
- __block SDLTTSChunk *someTTSChunk = nil;
- __block NSArray<SDLTTSChunk *> *someTTSName = nil;
- __block NSArray<NSString *> *someSynonyms = nil;
- __block NSString *someResumeHashString = nil;
-
+
+ context(@"If customized", ^{
+ __block NSString *testShortAppName = nil;
+ __block SDLTTSChunk *testTTSChunk = nil;
+ __block NSArray<SDLTTSChunk *> *testTTSName = nil;
+ __block NSArray<NSString *> *testSynonyms = nil;
+ __block NSString *testResumeHashString = nil;
+
beforeEach(^{
- someTTSChunk = [[SDLTTSChunk alloc] init];
- someTTSChunk.text = @"some tts name";
- someTTSChunk.type = SDLSpeechCapabilitiesText;
-
- someTTSName = @[someTTSChunk];
- someShortAppName = @"Short Name";
- someSynonyms = @[@"Test 1", @"Test 2", @"Test 3", @"Test 4"];
- someResumeHashString = @"testing";
-
+ testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:testAppName fullAppId:testFullAppId];
+ });
+
+ it(@"it should get and set correctly", ^{
+ testShortAppName = @"Short Name";
+ testTTSChunk = [[SDLTTSChunk alloc] initWithText:@"test tts name" type:SDLSpeechCapabilitiesText];
+ testTTSName = @[testTTSChunk];
+ testSynonyms = @[@"Test 1", @"Test 2", @"Test 3", @"Test 4"];
+ testResumeHashString = @"testing";
+
testConfig.appType = SDLAppHMITypeMedia;
testConfig.additionalAppTypes = @[SDLAppHMITypeProjection];
testConfig.language = SDLLanguageArSa;
testConfig.languagesSupported = @[SDLLanguageArSa, SDLLanguageEnAu, SDLLanguageEnUs];
- testConfig.shortAppName = someShortAppName;
- testConfig.ttsName = someTTSName;
- testConfig.voiceRecognitionCommandNames = someSynonyms;
- testConfig.resumeHash = someResumeHashString;
+ testConfig.shortAppName = testShortAppName;
+ testConfig.ttsName = testTTSName;
+ testConfig.voiceRecognitionCommandNames = testSynonyms;
+ testConfig.resumeHash = testResumeHashString;
});
-
- it(@"should have properly set properties", ^{
- expect(testConfig.appName).to(match(someAppName));
- expect(testConfig.appId).to(match(someAppId));
- expect(@(testConfig.tcpDebugMode)).to(beFalsy());
+
+ afterEach(^{
+ expect(testConfig.appName).to(match(testAppName));
+ expect(testConfig.shortAppName).to(match(testShortAppName));
+ expect(testConfig.fullAppId).to(match(testFullAppId));
+ expect(testConfig.appId).to(match(expectedGeneratedAppId));
+ expect(testConfig.tcpDebugMode).to(beFalse());
expect(testConfig.tcpDebugIPAddress).to(match(@"192.168.0.1"));
expect(@(testConfig.tcpDebugPort)).to(equal(@12345));
- expect(@([testConfig.appType isEqualToEnum:SDLAppHMITypeMedia])).to(equal(@YES));
+ expect(testConfig.appType).to(match(SDLAppHMITypeMedia));
expect(testConfig.additionalAppTypes.firstObject).to(match(SDLAppHMITypeProjection));
- expect(@(testConfig.isMedia)).to(beTruthy());
- expect(@([testConfig.language isEqualToEnum:SDLLanguageArSa])).to(equal(@YES));
+ expect(testConfig.isMedia).to(beTrue());
+ expect(testConfig.language).to(match(SDLLanguageArSa));
expect(testConfig.languagesSupported).to(haveCount(@3));
- expect(testConfig.shortAppName).to(match(someShortAppName));
- expect(testConfig.ttsName).to(contain(someTTSChunk));
+ expect(testConfig.ttsName).to(contain(testTTSChunk));
expect(testConfig.ttsName).to(haveCount(@1));
- expect(testConfig.voiceRecognitionCommandNames).to(haveCount(@(someSynonyms.count)));
- expect(testConfig.resumeHash).to(match(someResumeHashString));
+ expect(testConfig.voiceRecognitionCommandNames).to(haveCount(@(testSynonyms.count)));
+ expect(testConfig.resumeHash).to(match(testResumeHashString));
});
});
});
- context(@"that is created with debug settings", ^{
- __block NSString *someAppName = nil;
- __block NSString *someAppId = nil;
- __block NSString *someIPAddress = nil;
- __block UInt16 somePort = 0;
+ context(@"created with a debug configuration", ^{
+ __block NSString *testIPAddress = nil;
+ __block UInt16 testPort = 0;
beforeEach(^{
- someAppName = @"An App Name";
- someAppId = @"00542596432764329684352896423679";
- someIPAddress = @"1.1.1.1";
- somePort = 42;
-
- testConfig = [SDLLifecycleConfiguration debugConfigurationWithAppName:someAppName appId:someAppId ipAddress:someIPAddress port:somePort];
+ testIPAddress = @"1.1.1.1";
+ testPort = 42;
});
-
- it(@"should have properly set properties", ^{
- expect(testConfig.appName).to(match(someAppName));
- expect(testConfig.appId).to(match(someAppId));
- expect(@(testConfig.tcpDebugMode)).to(beTruthy());
- expect(testConfig.tcpDebugIPAddress).to(match(someIPAddress));
- expect(@(testConfig.tcpDebugPort)).to(equal(@(somePort)));
- expect(@([testConfig.appType isEqualToEnum:SDLAppHMITypeDefault])).to(equal(@YES));
- expect(testConfig.additionalAppTypes).to(beNil());
- expect(@([testConfig.language isEqualToEnum:SDLLanguageEnUs])).to(equal(@YES));
- expect(@([[testConfig.languagesSupported firstObject] isEqualToEnum:SDLLanguageEnUs])).to(equal(@YES));
- expect(testConfig.shortAppName).to(beNil());
- expect(testConfig.ttsName).to(beNil());
- expect(testConfig.voiceRecognitionCommandNames).to(beNil());
- expect(testConfig.resumeHash).to(beNil());
+
+ context(@"should be successfully initialized", ^{
+ it(@"debugConfigurationWithAppName:appId:ipAddress:port:", ^{
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testConfig = [SDLLifecycleConfiguration debugConfigurationWithAppName:testAppName appId:testAppId ipAddress:testIPAddress port:testPort];
+
+ expect(testConfig.appId).to(match(testAppId));
+ expect(testConfig.fullAppId).to(beNil());
+ #pragma clang diagnostic pop
+ });
+
+ it(@"debugConfigurationWithAppName:fullAppId:ipAddress:port:", ^{
+ testConfig = [SDLLifecycleConfiguration debugConfigurationWithAppName:testAppName fullAppId:testFullAppId ipAddress:testIPAddress port:testPort];
+
+ expect(testConfig.appId).to(match(expectedGeneratedAppId));
+ expect(testConfig.fullAppId).to(match(testFullAppId));
+ });
+
+ afterEach(^{
+ expect(testConfig.appName).to(match(testAppName));
+ expect(testConfig.tcpDebugMode).to(beTrue());
+ expect(testConfig.tcpDebugIPAddress).to(match(testIPAddress));
+ expect(@(testConfig.tcpDebugPort)).to(equal(@(testPort)));
+ expect(testConfig.appType).to(match(SDLAppHMITypeDefault));
+ expect(testConfig.additionalAppTypes).to(beNil());
+ expect(testConfig.language).to(match(SDLLanguageEnUs));
+ expect(testConfig.languagesSupported.firstObject).to(match(SDLLanguageEnUs));
+ expect(testConfig.shortAppName).to(beNil());
+ expect(testConfig.ttsName).to(beNil());
+ expect(testConfig.voiceRecognitionCommandNames).to(beNil());
+ expect(testConfig.resumeHash).to(beNil());
+ });
});
-
- describe(@"after setting properties manually", ^{
- __block NSString *someShortAppName = nil;
- __block SDLTTSChunk *someTTSChunk = nil;
- __block NSArray<SDLTTSChunk *> *someTTSName = nil;
- __block NSArray<NSString *> *someSynonyms = nil;
- __block NSString *someResumeHashString = nil;
-
+
+ context(@"If customized", ^{
+ __block NSString *testShortAppName = nil;
+ __block SDLTTSChunk *testTTSChunk = nil;
+ __block NSArray<SDLTTSChunk *> *testTTSName = nil;
+ __block NSArray<NSString *> *testSynonyms = nil;
+ __block NSString *testResumeHashString = nil;
+
beforeEach(^{
- someTTSChunk = [[SDLTTSChunk alloc] init];
- someTTSChunk.text = @"some tts name";
- someTTSChunk.type = SDLSpeechCapabilitiesText;
-
- someShortAppName = @"Short Name 2";
- someTTSName = @[someTTSChunk];
- someSynonyms = @[@"Test 1", @"Test 2"];
-
- testConfig.appType = SDLAppHMITypeMedia;
+ testConfig = [SDLLifecycleConfiguration debugConfigurationWithAppName:testAppName fullAppId:testFullAppId ipAddress:testIPAddress port:testPort];
+ });
+
+ it(@"it should get and set correctly", ^{
+ testShortAppName = @"Test Short Name";
+ testTTSChunk = [[SDLTTSChunk alloc] initWithText:@"test tts name" type:SDLSpeechCapabilitiesText];
+ testTTSName = @[testTTSChunk];
+ testSynonyms = @[@"Test 1", @"Test 2", @"Test 3", @"Test 4"];
+ testResumeHashString = @"testing";
+
+ testConfig.appType = SDLAppHMITypeInformation;
+ testConfig.additionalAppTypes = @[SDLAppHMITypeProjection];
testConfig.language = SDLLanguageArSa;
testConfig.languagesSupported = @[SDLLanguageArSa, SDLLanguageEnAu, SDLLanguageEnUs];
- testConfig.shortAppName = someShortAppName;
- testConfig.ttsName = someTTSName;
- testConfig.voiceRecognitionCommandNames = someSynonyms;
- testConfig.resumeHash = someResumeHashString;
+ testConfig.shortAppName = testShortAppName;
+ testConfig.ttsName = testTTSName;
+ testConfig.voiceRecognitionCommandNames = testSynonyms;
+ testConfig.resumeHash = testResumeHashString;
});
-
- it(@"should have properly set properties", ^{
- expect(testConfig.appName).to(match(someAppName));
- expect(testConfig.appId).to(match(someAppId));
- expect(@(testConfig.tcpDebugMode)).to(beTruthy());
- expect(testConfig.tcpDebugIPAddress).to(match(someIPAddress));
- expect(@(testConfig.tcpDebugPort)).to(equal(@(somePort)));
- expect(@([testConfig.appType isEqualToEnum:SDLAppHMITypeMedia])).to(equal(@YES));
- expect(testConfig.additionalAppTypes).to(beNil());
- expect(@(testConfig.isMedia)).to(beTruthy());
- expect(@([testConfig.language isEqualToEnum:SDLLanguageArSa])).to(equal(@YES));
+
+ afterEach(^{
+ expect(testConfig.appName).to(match(testAppName));
+ expect(testConfig.shortAppName).to(match(testShortAppName));
+ expect(testConfig.fullAppId).to(match(testFullAppId));
+ expect(testConfig.appId).to(match(expectedGeneratedAppId));
+ expect(testConfig.tcpDebugMode).to(beTrue());
+ expect(testConfig.tcpDebugIPAddress).to(match(@"1.1.1.1"));
+ expect(@(testConfig.tcpDebugPort)).to(equal(@42));
+ expect(testConfig.appType).to(match(SDLAppHMITypeInformation));
+ expect(testConfig.additionalAppTypes.firstObject).to(match(SDLAppHMITypeProjection));
+ expect(testConfig.isMedia).to(beFalse());
+ expect(testConfig.language).to(match(SDLLanguageArSa));
expect(testConfig.languagesSupported).to(haveCount(@3));
- expect(testConfig.shortAppName).to(match(someShortAppName));
- expect(testConfig.ttsName).to(contain(someTTSChunk));
+ expect(testConfig.ttsName).to(contain(testTTSChunk));
expect(testConfig.ttsName).to(haveCount(@1));
- expect(testConfig.voiceRecognitionCommandNames).to(haveCount(@(someSynonyms.count)));
+ expect(testConfig.voiceRecognitionCommandNames).to(haveCount(@(testSynonyms.count)));
+ expect(testConfig.resumeHash).to(match(testResumeHashString));
});
});
});
-
- context(@"that configuration update properties are set", ^{
- describe(@"after using default init", ^{
- __block SDLLifecycleConfigurationUpdate *update = nil;
-
- beforeEach(^{
- update = [[SDLLifecycleConfigurationUpdate alloc] init];
- });
-
- it(@"should have all properties to nil", ^{
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set app name", ^{
- NSString *test = @"Some Test String";
- update.appName = test;
- expect(update.appName).to(match(test));
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set short app name", ^{
- NSString *test = @"Some Test String";
- update.shortAppName = test;
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(match(test));
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set tts app name", ^{
- NSArray<SDLTTSChunk *> *test = [SDLTTSChunk textChunksFromString:@"Some Test String"];
- update.ttsName = test;
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(equal(test));
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set vr synonyms", ^{
- NSArray<NSString *> *test = @[@"Some Test String"];
- update.voiceRecognitionCommandNames = test;
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(equal(test));
- });
- });
-
- describe(@"after using default init", ^{
- it(@"should have all properties to nil", ^{
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:nil shortAppName:nil ttsName:nil voiceRecognitionCommandNames:nil];
-
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set app name", ^{
- NSString *test = @"Some Test String";
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:test shortAppName:nil ttsName:nil voiceRecognitionCommandNames:nil];
-
- expect(update.appName).to(match(test));
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set short app name", ^{
- NSString *test = @"Some Test String";
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:nil shortAppName:test ttsName:nil voiceRecognitionCommandNames:nil];
-
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(match(test));
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set tts app name", ^{
- NSArray<SDLTTSChunk *> *test = [SDLTTSChunk textChunksFromString:@"Some Test String"];
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:nil shortAppName:nil ttsName:test voiceRecognitionCommandNames:nil];
-
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(equal(test));
- expect(update.voiceRecognitionCommandNames).to(beNil());
- });
-
- it(@"should set vr synonyms", ^{
- NSArray<NSString *> *test = @[@"Some Test String"];
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:nil shortAppName:nil ttsName:nil voiceRecognitionCommandNames:test];
-
- expect(update.appName).to(beNil());
- expect(update.shortAppName).to(beNil());
- expect(update.ttsName).to(beNil());
- expect(update.voiceRecognitionCommandNames).to(equal(test));
- });
- });
+});
+
+describe(@"When generating the `appId` from the `fullAppId`", ^{
+ it(@"should return nil if full app id is nil", ^{
+ NSString *testFullAppId = nil;
+ NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
+ expect(appId).to(beNil());
+ });
+
+ it(@"should return an empty string if the full app id is empty", ^{
+ NSString *testFullAppId = @"";
+ NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
+ expect(appId).to(beEmpty());
+ });
+
+ it(@"should return a string truncated to the first non-dash 10 characters", ^{
+ NSString *testFullAppId = @"34-uipe--k-rtqwedeftg-1";
+ NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
+ expect(appId).to(match(@"34uipekrtq"));
+ });
+
+ it(@"should return a string if the full app id is less than 10 characters", ^{
+ NSString *testFullAppId = @"a";
+ NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
+ expect(appId).to(match(@"a"));
+ });
+
+ it(@"should return an empty string if the full app id only has dash characters", ^{
+ NSString *testFullAppId = @"-";
+ NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
+ expect(appId).to(beEmpty());
});
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
index 0de43bcd9..e03c821ac 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
@@ -8,6 +8,7 @@
#import "SDLConnectionManagerType.h"
#import "SDLError.h"
#import "SDLFileManager.h"
+#import "SDLGlobals.h"
#import "SDLHMILevel.h"
#import "SDLLifecycleConfiguration.h"
#import "SDLLockScreenConfiguration.h"
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
index 3889c37d1..489de7fb0 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
@@ -1,5 +1,6 @@
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
+#import <OCMock/OCMock.h>
#import "SDLFakeViewControllerPresenter.h"
#import "SDLLockScreenConfiguration.h"
@@ -201,6 +202,61 @@ describe(@"a lock screen manager", ^{
});
});
});
+
+ describe(@"A lock screen status of OPTIONAL", ^{
+ __block SDLLockScreenManager *testLockScreenManager = nil;
+ __block SDLLockScreenConfiguration *testLockScreenConfig = nil;
+ __block id mockViewControllerPresenter = nil;
+ __block SDLRPCNotificationNotification *testLockStatusNotification = nil;
+
+ beforeEach(^{
+ mockViewControllerPresenter = OCMClassMock([SDLFakeViewControllerPresenter class]);
+
+ SDLOnLockScreenStatus *testOptionalStatus = [[SDLOnLockScreenStatus alloc] init];
+ testOptionalStatus.lockScreenStatus = SDLLockScreenStatusOptional;
+ testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:nil rpcNotification:testOptionalStatus];
+
+ testLockScreenConfig = [SDLLockScreenConfiguration enabledConfiguration];
+ });
+
+ context(@"showInOptionalState is true", ^{
+ beforeEach(^{
+ testLockScreenConfig.showInOptionalState = true;
+
+ testLockScreenManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:nil presenter:mockViewControllerPresenter];
+
+ [testLockScreenManager start]; // Sets `canPresent` to `true`
+ });
+
+ it(@"should present the lock screen if not already presented", ^{
+ OCMStub([mockViewControllerPresenter lockViewController]).andReturn([OCMArg any]);
+ OCMStub([mockViewControllerPresenter presented]).andReturn(false);
+
+ [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+
+ OCMVerify([mockViewControllerPresenter present]);
+ });
+ });
+
+ context(@"showInOptionalState is false", ^{
+ beforeEach(^{
+ testLockScreenConfig.showInOptionalState = false;
+
+ testLockScreenManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:nil presenter:mockViewControllerPresenter];
+
+ [testLockScreenManager start]; // Sets `canPresent` to `true`
+ });
+
+ it(@"should dismiss the lock screen if already presented", ^{
+ OCMStub([mockViewControllerPresenter lockViewController]).andReturn([OCMArg any]);
+ OCMStub([mockViewControllerPresenter presented]).andReturn(true);
+
+ [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+
+ OCMVerify([mockViewControllerPresenter dismiss]);
+ });
+ });
+ });
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m
index 36f9d5594..9eb966520 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m
@@ -166,10 +166,21 @@ describe(@"menu manager", ^{
testManager.displayCapabilities.graphicSupported = @YES;
});
- it(@"should fail with a duplicate title", ^{
- testManager.menuCells = @[textOnlyCell, textOnlyCell];
+ context(@"duplicate titles", ^{
+ it(@"should fail with a duplicate title", ^{
+ testManager.menuCells = @[textOnlyCell, textOnlyCell];
+ expect(testManager.menuCells).to(beEmpty());
+ });
+ });
- expect(testManager.menuCells).to(beEmpty());
+ context(@"duplicate VR commands", ^{
+ __block SDLMenuCell *textAndVRCell1 = [[SDLMenuCell alloc] initWithTitle:@"Test 1" icon:nil voiceCommands:@[@"Cat", @"Turtle"] handler:^(SDLTriggerSource _Nonnull triggerSource) {}];
+ __block SDLMenuCell *textAndVRCell2 = [[SDLMenuCell alloc] initWithTitle:@"Test 3" icon:nil voiceCommands:@[@"Cat", @"Dog"] handler:^(SDLTriggerSource _Nonnull triggerSource) {}];
+
+ it(@"should fail when menu items have duplicate vr commands", ^{
+ testManager.menuCells = @[textAndVRCell1, textAndVRCell2];
+ expect(testManager.menuCells).to(beEmpty());
+ });
});
it(@"should properly update a text cell", ^{
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
index 857ca6b83..9d5bec9a5 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
@@ -315,6 +315,17 @@ describe(@"the streaming video manager", ^{
expect(streamingLifecycleManager.currentVideoStreamState).to(equal(SDLVideoStreamManagerStateShuttingDown));
});
});
+
+ context(@"and hmi state changes to background after app becomes inactive", ^{
+ beforeEach(^{
+ [streamingLifecycleManager.appStateMachine setToState:SDLAppStateInactive fromOldState:nil callEnterTransition:YES];
+ sendNotificationForHMILevel(SDLHMILevelBackground, SDLVideoStreamingStateNotStreamable);
+ });
+
+ it(@"should close the stream", ^{
+ expect(streamingLifecycleManager.currentVideoStreamState).to(equal(SDLVideoStreamManagerStateShuttingDown));
+ });
+ });
});
});
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLV2ProtocolMessageSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLV2ProtocolMessageSpec.m
index 12ce1e05a..3b73eb172 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLV2ProtocolMessageSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLV2ProtocolMessageSpec.m
@@ -17,41 +17,7 @@
QuickSpecBegin(SDLV2ProtocolMessageSpec)
describe(@"RPCDictionary Tests", ^ {
- it(@"Should return the correct dictionary", ^ {
- SDLServiceType serviceType = SDLServiceTypeRPC;
-
- SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] init];
- id headerMock = OCMPartialMock(testHeader);
- [[[headerMock stub] andReturnValue:[NSValue value:&serviceType withObjCType:@encode(SDLServiceType)]] serviceType];
-
- NSDictionary* dictionary = @{@"A": @1,
- @"B": @2,
- @"C": @3,
- @"D": @4,
- @"E": @5};
- UInt32 correlationID = 99;
- UInt32 functionID = 26;
- Byte rpcType = 0;
-
- SDLRPCPayload* testPayload = [[SDLRPCPayload alloc] init];
- id payloadMock = OCMPartialMock(testPayload);
- [[[payloadMock stub] andReturn:[NSJSONSerialization dataWithJSONObject:dictionary options:0 error:0]] jsonData];
- [[[payloadMock stub] andReturnValue:[NSValue value:&correlationID withObjCType:@encode(UInt32)]] correlationID];
- [[[payloadMock stub] andReturnValue:[NSValue value:&functionID withObjCType:@encode(UInt32)]] functionID];
- [[[payloadMock stub] andReturnValue:[NSValue value:&rpcType withObjCType:@encode(Byte)]] rpcType];
- [[[payloadMock stub] andReturn:[NSData dataWithBytes:"Database" length:strlen("Database")]] binaryData];
-
- id payloadClassMock = OCMClassMock(SDLRPCPayload.class);
- [[[payloadClassMock stub] andReturn:testPayload] rpcPayloadWithData:[OCMArg any]];
-
- SDLV2ProtocolMessage* testMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testHeader andPayload:[[NSMutableData alloc] initWithCapacity:0]];
-
- expect([testMessage rpcDictionary]).to(equal(@{SDLNameRequest:
- @{SDLNameOperationName:SDLNameSlider,
- SDLNameCorrelationId:@99,
- SDLNameParameters:dictionary},
- SDLNameBulkData:[NSData dataWithBytes:"Database" length:strlen("Database")]}));
- });
+
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLightNameSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLightNameSpec.m
index e711273da..d716b9b88 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLightNameSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLightNameSpec.m
@@ -30,8 +30,8 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLLightNameRearRightFogLight).to(equal(@"REAR_RIGHT_FOG_LIGHT"));
expect(SDLLightNameRearLeftTailLight).to(equal(@"REAR_LEFT_TAIL_LIGHT"));
expect(SDLLightNameRearRightTailLight).to(equal(@"REAR_RIGHT_TAIL_LIGHT"));
- expect(SDLLightNameRearLeftBreakLight).to(equal(@"REAR_LEFT_BREAK_LIGHT"));
- expect(SDLLightNameRearRightBreakLight).to(equal(@"REAR_RIGHT_BREAK_LIGHT"));
+ expect(SDLLightNameRearLeftBrakeLight).to(equal(@"REAR_LEFT_BRAKE_LIGHT"));
+ expect(SDLLightNameRearRightBrakeLight).to(equal(@"REAR_RIGHT_BRAKE_LIGHT"));
expect(SDLLightNameRearLeftTurnLight).to(equal(@"REAR_LEFT_TURN_LIGHT"));
expect(SDLLightNameRearRightTurnLight).to(equal(@"REAR_RIGHT_TURN_LIGHT"));
expect(SDLLightNameRearRegistrationPlateLight).to(equal(@"REAR_REGISTRATION_PLATE_LIGHT"));
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
index 36b9aface..786fbf836 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
@@ -24,22 +24,28 @@
QuickSpecBegin(SDLRegisterAppInterfaceSpec)
describe(@"RegisterAppInterface Tests", ^{
+ __block SDLRegisterAppInterface *testRegisterAppInterface = nil;
__block NSString *appName = @"app56";
__block NSString *appId = @"123456789";
+ __block NSString *fullAppId = @"123-e4567-e89b-12d3-a456-426655440000";
+ __block NSString *expectedAppId = @"123e4567e8";
__block NSString *shortAppName = @"whatisanngn";
__block NSString *resumeHash = @"gercd35grw2";
__block NSString *vrSynonyms = @"app56";
__block NSNumber<SDLBool> *isMediaApp = @YES;
- __block SDLAppHMIType appType = SDLAppHMITypeMedia;
+ __block NSArray<SDLAppHMIType> *appTypes = @[SDLAppHMITypeMedia, SDLAppHMITypeNavigation, SDLAppHMITypeInformation];
__block SDLLanguage language = SDLLanguageElGr;
__block SDLLanguage hmiDisplayLanguage = SDLLanguageArSa;
- __block SDLSyncMsgVersion* version = nil;
- __block SDLTTSChunk* chunk = nil;
- __block SDLDeviceInfo* info = nil;
- __block SDLAppInfo* appInfo = nil;
+ __block SDLSyncMsgVersion *version = nil;
+ __block SDLTTSChunk *chunk = nil;
+ __block SDLDeviceInfo *info = nil;
+ __block SDLAppInfo *appInfo = nil;
__block SDLTemplateColorScheme *colorScheme = nil;
+ __block SDLSyncMsgVersion *currentSyncMsgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:0 patchVersion:0];
+
beforeEach(^{
+ testRegisterAppInterface = nil;
version = [[SDLSyncMsgVersion alloc] init];
chunk = [[SDLTTSChunk alloc] init];
info = [[SDLDeviceInfo alloc] init];
@@ -47,187 +53,231 @@ describe(@"RegisterAppInterface Tests", ^{
colorScheme = [[SDLTemplateColorScheme alloc] init];
});
+ it(@"Should set and get correctly", ^ {
+ testRegisterAppInterface = [[SDLRegisterAppInterface alloc] init];
+
+ testRegisterAppInterface.syncMsgVersion = version;
+ testRegisterAppInterface.appName = appName;
+ testRegisterAppInterface.ttsName = @[chunk];
+ testRegisterAppInterface.ngnMediaScreenAppName = shortAppName;
+ testRegisterAppInterface.vrSynonyms = @[vrSynonyms];
+ testRegisterAppInterface.isMediaApplication = isMediaApp;
+ testRegisterAppInterface.languageDesired = language;
+ testRegisterAppInterface.hmiDisplayLanguageDesired = hmiDisplayLanguage;
+ testRegisterAppInterface.appHMIType = appTypes;
+ testRegisterAppInterface.hashID = resumeHash;
+ testRegisterAppInterface.deviceInfo = info;
+ testRegisterAppInterface.fullAppID = fullAppId;
+ testRegisterAppInterface.appID = appId;
+ testRegisterAppInterface.appInfo = appInfo;
+ testRegisterAppInterface.dayColorScheme = colorScheme;
+ testRegisterAppInterface.nightColorScheme = colorScheme;
+
+ expect(testRegisterAppInterface.syncMsgVersion).to(equal(version));
+ expect(testRegisterAppInterface.appName).to(equal(appName));
+ expect(testRegisterAppInterface.ttsName).to(contain(chunk));
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
+ expect(testRegisterAppInterface.vrSynonyms).to(contain(vrSynonyms));
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
+ expect(testRegisterAppInterface.languageDesired).to(equal(language));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(hmiDisplayLanguage));
+ expect(testRegisterAppInterface.appHMIType).to(equal(appTypes));
+ expect(testRegisterAppInterface.hashID).to(equal(resumeHash));
+ expect(testRegisterAppInterface.deviceInfo).to(equal(info));
+ expect(testRegisterAppInterface.fullAppID).to(equal(fullAppId));
+ expect(testRegisterAppInterface.appID).to(equal(appId));
+ expect(testRegisterAppInterface.appInfo).to(equal(appInfo));
+ expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
+ });
+
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSDictionary* dict = @{SDLNameRequest:
+ @{SDLNameParameters:
+ @{SDLNameSyncMessageVersion:version,
+ SDLNameAppName:appName,
+ SDLNameTTSName:[@[chunk] mutableCopy],
+ SDLNameNGNMediaScreenAppName:shortAppName,
+ SDLNameVRSynonyms:@[vrSynonyms],
+ SDLNameIsMediaApplication:isMediaApp,
+ SDLNameLanguageDesired:SDLLanguageNoNo,
+ SDLNameHMIDisplayLanguageDesired:SDLLanguagePtPt,
+ SDLNameAppHMIType:appTypes,
+ SDLNameHashId:resumeHash,
+ SDLNameDeviceInfo:info,
+ SDLNameFullAppID:fullAppId,
+ SDLNameAppId:appId,
+ SDLNameAppInfo:appInfo,
+ SDLNameDayColorScheme: colorScheme,
+ SDLNameNightColorScheme: colorScheme,
+ },
+ SDLNameOperationName:SDLNameRegisterAppInterface}};
+ SDLRegisterAppInterface* testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithDictionary:dict];
+
+ expect(testRegisterAppInterface.syncMsgVersion).to(equal(version));
+ expect(testRegisterAppInterface.appName).to(match(appName));
+ expect(testRegisterAppInterface.ttsName).to(equal([@[chunk] mutableCopy]));
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(match(shortAppName));
+ expect(testRegisterAppInterface.vrSynonyms).to(equal(@[vrSynonyms]));
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
+ expect(testRegisterAppInterface.languageDesired).to(equal(SDLLanguageNoNo));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(SDLLanguagePtPt));
+ expect(testRegisterAppInterface.appHMIType).to(equal(appTypes));
+ expect(testRegisterAppInterface.hashID).to(match(resumeHash));
+ expect(testRegisterAppInterface.deviceInfo).to(equal(info));
+ expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
+ expect(testRegisterAppInterface.appID).to(match(appId));
+ expect(testRegisterAppInterface.appInfo).to(equal(appInfo));
+ expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
+ });
+
describe(@"initializers", ^{
+ it(@"init", ^{
+ testRegisterAppInterface = [[SDLRegisterAppInterface alloc] init];
+
+ expect(testRegisterAppInterface.syncMsgVersion).to(beNil());
+ expect(testRegisterAppInterface.appName).to(beNil());
+ expect(testRegisterAppInterface.ttsName).to(beNil());
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(beNil());
+ expect(testRegisterAppInterface.vrSynonyms).to(beNil());
+ expect(testRegisterAppInterface.isMediaApplication).to(beNil());
+ expect(testRegisterAppInterface.languageDesired).to(beNil());
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(beNil());
+ expect(testRegisterAppInterface.appHMIType).to(beNil());
+ expect(testRegisterAppInterface.hashID).to(beNil());
+ expect(testRegisterAppInterface.deviceInfo).to(beNil());
+ expect(testRegisterAppInterface.appID).to(beNil());
+ expect(testRegisterAppInterface.fullAppID).to(beNil());
+ expect(testRegisterAppInterface.appInfo).to(beNil());
+ expect(testRegisterAppInterface.dayColorScheme).to(beNil());
+ expect(testRegisterAppInterface.nightColorScheme).to(beNil());
+ });
+
it(@"initWithLifecycleConfiguration:", ^{
- SDLLifecycleConfiguration *testConfiguration = [SDLLifecycleConfiguration defaultConfigurationWithAppName:appName appId:appId];
- testConfiguration.resumeHash = resumeHash;
- testConfiguration.appType = appType;
- testConfiguration.language = language;
- testConfiguration.shortAppName = shortAppName;
- testConfiguration.ttsName = @[chunk];
- testConfiguration.voiceRecognitionCommandNames = @[vrSynonyms];
- testConfiguration.dayColorScheme = colorScheme;
- testConfiguration.nightColorScheme = colorScheme;
-
- SDLRegisterAppInterface *testRequest = [[SDLRegisterAppInterface alloc] initWithLifecycleConfiguration:testConfiguration];
- expect(testRequest.syncMsgVersion).toNot(beNil());
- expect(testRequest.appName).to(equal(appName));
- expect(testRequest.ttsName).to(contain(chunk));
- expect(testRequest.ngnMediaScreenAppName).to(equal(shortAppName));
- expect(testRequest.appHMIType).to(contain(appType));
- expect(testRequest.isMediaApplication).to(equal(@YES));
- expect(testRequest.hashID).to(equal(resumeHash));
- expect(testRequest.languageDesired).to(equal(language));
- expect(testRequest.hmiDisplayLanguageDesired).to(equal(language));
- expect(testRequest.vrSynonyms).to(contain(vrSynonyms));
- expect(testRequest.deviceInfo).toNot(beNil());
- expect(testRequest.appInfo).toNot(beNil());
- expect(testRequest.dayColorScheme).to(equal(colorScheme));
- expect(testRequest.nightColorScheme).to(equal(colorScheme));
+ SDLLifecycleConfiguration *testLifecyleConfiguration = [SDLLifecycleConfiguration defaultConfigurationWithAppName:appName fullAppId:fullAppId];
+ testLifecyleConfiguration.resumeHash = resumeHash;
+ testLifecyleConfiguration.appType = SDLAppHMITypeSocial;
+ testLifecyleConfiguration.additionalAppTypes = appTypes;
+ testLifecyleConfiguration.language = language;
+ testLifecyleConfiguration.shortAppName = shortAppName;
+ testLifecyleConfiguration.ttsName = @[chunk];
+ testLifecyleConfiguration.voiceRecognitionCommandNames = @[vrSynonyms];
+ testLifecyleConfiguration.dayColorScheme = colorScheme;
+ testLifecyleConfiguration.nightColorScheme = colorScheme;
+
+ SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithLifecycleConfiguration:testLifecyleConfiguration];
+ expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
+ expect(testRegisterAppInterface.appID).to(match(expectedAppId));
+ expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
+ expect(testRegisterAppInterface.appName).to(equal(appName));
+ expect(testRegisterAppInterface.ttsName).to(contain(chunk));
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeSocial));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeMedia));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeNavigation));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeInformation));
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(@YES));
+ expect(testRegisterAppInterface.hashID).to(match(resumeHash));
+ expect(testRegisterAppInterface.languageDesired).to(match(language));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(match(language));
+ expect(testRegisterAppInterface.vrSynonyms).to(contain(vrSynonyms));
+ expect(testRegisterAppInterface.deviceInfo).toNot(beNil());
+ expect(testRegisterAppInterface.appInfo).toNot(beNil());
+ expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
});
- it(@"initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:", ^{
- SDLRegisterAppInterface *testRequest = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language];
-
- expect(testRequest.syncMsgVersion).to(equal([[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:0 patchVersion:0]));
- expect(testRequest.appName).to(equal(appName));
- expect(testRequest.ttsName).to(beNil());
- expect(testRequest.ngnMediaScreenAppName).to(beNil());
- expect(testRequest.appHMIType).to(beNil());
- expect(testRequest.isMediaApplication).to(equal(@NO));
- expect(testRequest.hashID).to(beNil());
- expect(testRequest.languageDesired).to(equal(language));
- expect(testRequest.hmiDisplayLanguageDesired).to(equal(language));
- expect(testRequest.vrSynonyms).to(beNil());
- expect(testRequest.deviceInfo).toNot(beNil());
- expect(testRequest.appInfo).toNot(beNil());
- expect(testRequest.dayColorScheme).to(beNil());
- expect(testRequest.nightColorScheme).to(beNil());
+ it(@"initWithAppName:appId:languageDesired:", ^{
+ SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language];
+
+ expect(testRegisterAppInterface.fullAppID).to(beNil());
+ expect(testRegisterAppInterface.appID).to(match(appId));
+ expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
+ expect(testRegisterAppInterface.appName).to(equal(appName));
+ expect(testRegisterAppInterface.ttsName).to(beNil());
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(beNil());
+ expect(testRegisterAppInterface.appHMIType).to(beNil());
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(@NO));
+ expect(testRegisterAppInterface.hashID).to(beNil());
+ expect(testRegisterAppInterface.languageDesired).to(equal(language));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(language));
+ expect(testRegisterAppInterface.vrSynonyms).to(beNil());
+ expect(testRegisterAppInterface.deviceInfo).toNot(beNil());
+ expect(testRegisterAppInterface.appInfo).toNot(beNil());
+ expect(testRegisterAppInterface.dayColorScheme).to(beNil());
+ expect(testRegisterAppInterface.nightColorScheme).to(beNil());
});
it(@"initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:", ^{
- SDLRegisterAppInterface *testRequest = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language isMediaApp:isMediaApp appTypes:@[appType] shortAppName:shortAppName];
-
- expect(testRequest.syncMsgVersion).toNot(beNil());
- expect(testRequest.appName).to(equal(appName));
- expect(testRequest.ttsName).to(beNil());
- expect(testRequest.ngnMediaScreenAppName).to(equal(shortAppName));
- expect(testRequest.appHMIType).to(contain(appType));
- expect(testRequest.isMediaApplication).to(equal(isMediaApp));
- expect(testRequest.hashID).to(beNil());
- expect(testRequest.languageDesired).to(equal(language));
- expect(testRequest.hmiDisplayLanguageDesired).to(equal(language));
- expect(testRequest.vrSynonyms).to(beNil());
- expect(testRequest.deviceInfo).toNot(beNil());
- expect(testRequest.appInfo).toNot(beNil());
- expect(testRequest.dayColorScheme).to(beNil());
- expect(testRequest.nightColorScheme).to(beNil());
- });
+ SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName];
- it(@"initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme:", ^{
- SDLRegisterAppInterface *testRequest = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language isMediaApp:isMediaApp appTypes:@[appType] shortAppName:shortAppName ttsName:@[chunk] vrSynonyms:@[vrSynonyms] hmiDisplayLanguageDesired:hmiDisplayLanguage resumeHash:resumeHash dayColorScheme:colorScheme nightColorScheme:colorScheme];
-
- expect(testRequest.syncMsgVersion).toNot(beNil());
- expect(testRequest.appName).to(equal(appName));
- expect(testRequest.ttsName).to(contain(chunk));
- expect(testRequest.ngnMediaScreenAppName).to(equal(shortAppName));
- expect(testRequest.appHMIType).to(contain(appType));
- expect(testRequest.isMediaApplication).to(equal(isMediaApp));
- expect(testRequest.hashID).to(equal(resumeHash));
- expect(testRequest.languageDesired).to(equal(language));
- expect(testRequest.hmiDisplayLanguageDesired).to(equal(hmiDisplayLanguage));
- expect(testRequest.vrSynonyms).to(contain(vrSynonyms));
- expect(testRequest.deviceInfo).toNot(beNil());
- expect(testRequest.appInfo).toNot(beNil());
- expect(testRequest.dayColorScheme).to(equal(colorScheme));
- expect(testRequest.nightColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.fullAppID).to(beNil());
+ expect(testRegisterAppInterface.appID).to(match(appId));
+ expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
+ expect(testRegisterAppInterface.appName).to(equal(appName));
+ expect(testRegisterAppInterface.ttsName).to(beNil());
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeMedia));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeNavigation));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeInformation));
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
+ expect(testRegisterAppInterface.hashID).to(beNil());
+ expect(testRegisterAppInterface.languageDesired).to(equal(language));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(language));
+ expect(testRegisterAppInterface.vrSynonyms).to(beNil());
+ expect(testRegisterAppInterface.deviceInfo).toNot(beNil());
+ expect(testRegisterAppInterface.appInfo).toNot(beNil());
+ expect(testRegisterAppInterface.dayColorScheme).to(beNil());
+ expect(testRegisterAppInterface.nightColorScheme).to(beNil());
});
+ it(@"initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:", ^{
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName ttsName:@[chunk] vrSynonyms:@[vrSynonyms] hmiDisplayLanguageDesired:hmiDisplayLanguage resumeHash:resumeHash];
- it(@"init with a dictionary", ^ {
- NSDictionary* dict = @{SDLNameRequest:
- @{SDLNameParameters:
- @{SDLNameSyncMessageVersion:version,
- SDLNameAppName:@"app56",
- SDLNameTTSName:[@[chunk] mutableCopy],
- SDLNameNGNMediaScreenAppName:@"whatisanngn",
- SDLNameVRSynonyms:[@[@"paraphrase of the original name"] mutableCopy],
- SDLNameIsMediaApplication:@NO,
- SDLNameLanguageDesired:SDLLanguageNoNo,
- SDLNameHMIDisplayLanguageDesired:SDLLanguagePtPt,
- SDLNameAppHMIType:[@[SDLAppHMITypeMessaging, SDLAppHMITypeInformation] copy],
- SDLNameHashId:@"gercd35grw2",
- SDLNameDeviceInfo:info,
- SDLNameAppId:@"123456789",
- SDLNameAppInfo:appInfo,
- SDLNameDayColorScheme: colorScheme,
- SDLNameNightColorScheme: colorScheme,
- },
- SDLNameOperationName:SDLNameRegisterAppInterface}};
- SDLRegisterAppInterface* testRequest = [[SDLRegisterAppInterface alloc] initWithDictionary:dict];
-
- expect(testRequest.syncMsgVersion).to(equal(version));
- expect(testRequest.appName).to(equal(@"app56"));
- expect(testRequest.ttsName).to(equal([@[chunk] mutableCopy]));
- expect(testRequest.ngnMediaScreenAppName).to(equal(@"whatisanngn"));
- expect(testRequest.vrSynonyms).to(equal([@[@"paraphrase of the original name"] mutableCopy]));
- expect(testRequest.isMediaApplication).to(equal(@NO));
- expect(testRequest.languageDesired).to(equal(SDLLanguageNoNo));
- expect(testRequest.hmiDisplayLanguageDesired).to(equal(SDLLanguagePtPt));
- expect(testRequest.appHMIType).to(equal([@[SDLAppHMITypeMessaging, SDLAppHMITypeInformation] copy]));
- expect(testRequest.hashID).to(equal(@"gercd35grw2"));
- expect(testRequest.deviceInfo).to(equal(info));
- expect(testRequest.appID).to(equal(@"123456789"));
- expect(testRequest.appInfo).to(equal(appInfo));
- expect(testRequest.dayColorScheme).to(equal(colorScheme));
- expect(testRequest.nightColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.fullAppID).to(beNil());
+ expect(testRegisterAppInterface.appID).to(match(appId));
+ expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
+ expect(testRegisterAppInterface.appName).to(equal(appName));
+ expect(testRegisterAppInterface.ttsName).to(contain(chunk));
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeMedia));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeNavigation));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeInformation));
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
+ expect(testRegisterAppInterface.hashID).to(match(resumeHash));
+ expect(testRegisterAppInterface.languageDesired).to(equal(language));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(hmiDisplayLanguage));
+ expect(testRegisterAppInterface.vrSynonyms).to(contain(vrSynonyms));
+ expect(testRegisterAppInterface.deviceInfo).toNot(beNil());
+ expect(testRegisterAppInterface.appInfo).toNot(beNil());
+ expect(testRegisterAppInterface.dayColorScheme).to(beNil());
+ expect(testRegisterAppInterface.nightColorScheme).to(beNil());
+ #pragma clang diagnostic pop
});
- it(@"init", ^ {
- SDLRegisterAppInterface* testRequest = [[SDLRegisterAppInterface alloc] init];
-
- expect(testRequest.syncMsgVersion).to(beNil());
- expect(testRequest.appName).to(beNil());
- expect(testRequest.ttsName).to(beNil());
- expect(testRequest.ngnMediaScreenAppName).to(beNil());
- expect(testRequest.vrSynonyms).to(beNil());
- expect(testRequest.isMediaApplication).to(beNil());
- expect(testRequest.languageDesired).to(beNil());
- expect(testRequest.hmiDisplayLanguageDesired).to(beNil());
- expect(testRequest.appHMIType).to(beNil());
- expect(testRequest.hashID).to(beNil());
- expect(testRequest.deviceInfo).to(beNil());
- expect(testRequest.appID).to(beNil());
- expect(testRequest.appInfo).to(beNil());
- expect(testRequest.dayColorScheme).to(beNil());
- expect(testRequest.nightColorScheme).to(beNil());
- });
- });
+ it(@"initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme:", ^{
+ SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId fullAppId:fullAppId languageDesired:language isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName ttsName:@[chunk] vrSynonyms:@[vrSynonyms] hmiDisplayLanguageDesired:hmiDisplayLanguage resumeHash:resumeHash dayColorScheme:colorScheme nightColorScheme:colorScheme];
- describe(@"getters / setters", ^{
- it(@"Should set and get correctly", ^ {
- SDLRegisterAppInterface* testRequest = [[SDLRegisterAppInterface alloc] init];
-
- testRequest.syncMsgVersion = version;
- testRequest.appName = appName;
- testRequest.ttsName = @[chunk];
- testRequest.ngnMediaScreenAppName = shortAppName;
- testRequest.vrSynonyms = @[vrSynonyms];
- testRequest.isMediaApplication = @NO;
- testRequest.languageDesired = language;
- testRequest.hmiDisplayLanguageDesired = hmiDisplayLanguage;
- testRequest.appHMIType = @[SDLAppHMITypeMessaging, SDLAppHMITypeInformation];
- testRequest.hashID = resumeHash;
- testRequest.deviceInfo = info;
- testRequest.appID = @"123456789";
- testRequest.appInfo = appInfo;
- testRequest.dayColorScheme = colorScheme;
- testRequest.nightColorScheme = colorScheme;
-
- expect(testRequest.syncMsgVersion).to(equal(version));
- expect(testRequest.appName).to(equal(appName));
- expect(testRequest.ttsName).to(contain(chunk));
- expect(testRequest.ngnMediaScreenAppName).to(equal(shortAppName));
- expect(testRequest.vrSynonyms).to(contain(vrSynonyms));
- expect(testRequest.isMediaApplication).to(equal(@NO));
- expect(testRequest.languageDesired).to(equal(language));
- expect(testRequest.hmiDisplayLanguageDesired).to(equal(hmiDisplayLanguage));
- expect(testRequest.appHMIType).to(equal([@[SDLAppHMITypeMessaging, SDLAppHMITypeInformation] copy]));
- expect(testRequest.hashID).to(equal(resumeHash));
- expect(testRequest.deviceInfo).to(equal(info));
- expect(testRequest.appID).to(equal(appId));
- expect(testRequest.appInfo).to(equal(appInfo));
- expect(testRequest.dayColorScheme).to(equal(colorScheme));
- expect(testRequest.nightColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
+ expect(testRegisterAppInterface.appID).to(match(appId));
+ expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
+ expect(testRegisterAppInterface.appName).to(equal(appName));
+ expect(testRegisterAppInterface.ttsName).to(contain(chunk));
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeMedia));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeNavigation));
+ expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeInformation));
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
+ expect(testRegisterAppInterface.hashID).to(match(resumeHash));
+ expect(testRegisterAppInterface.languageDesired).to(equal(language));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(hmiDisplayLanguage));
+ expect(testRegisterAppInterface.vrSynonyms).to(contain(vrSynonyms));
+ expect(testRegisterAppInterface.deviceInfo).toNot(beNil());
+ expect(testRegisterAppInterface.appInfo).toNot(beNil());
+ expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
});
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m
index 39ae43e6d..cd5dfe3b1 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m
@@ -34,14 +34,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.channelSetting).to(equal(@45));
});
- it(@"Should set and get correctly", ^ {
- SDLEqualizerSettings* testStruct = [[SDLEqualizerSettings alloc] initWithChannelId:2 channelName:@"channel" channelSetting:45];
-
- expect(testStruct.channelId).to(equal(@2));
- expect(testStruct.channelName).to(equal(@"channel"));
- expect(testStruct.channelSetting).to(equal(@45));
- });
-
it(@"Should get correctly when initialized", ^ {
NSMutableDictionary* dict = [@{SDLNameChannelId:@2,
SDLNameChannelName:@"channel",
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSLocationSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSLocationSpec.m
deleted file mode 100644
index 2df315fe9..000000000
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSLocationSpec.m
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// SDLGPSLocationSpec.m
-// SmartDeviceLinkTests
-//
-
-#import <Foundation/Foundation.h>
-
-#import <Quick/Quick.h>
-#import <Nimble/Nimble.h>
-
-#import "SDLNames.h"
-#import "SDLGPSLocation.h"
-
-
-
-QuickSpecBegin(SDLGPSLocationSpec)
-
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
- SDLGPSLocation* testStruct = [[SDLGPSLocation alloc] init];
-
- testStruct.longitudeDegrees = @(-60);
- testStruct.latitudeDegrees = @60;
- testStruct.altitudeMeters = @5000;
-
- expect(testStruct.longitudeDegrees).to(equal(@(-60)));
- expect(testStruct.latitudeDegrees).to(equal(@60));
- expect(testStruct.altitudeMeters).to(equal(@5000));
-
- });
-
- it(@"Should set and get correctly", ^ {
- SDLGPSLocation* testStruct = [[SDLGPSLocation alloc] initWithLatitudeDegrees:-60 longitudeDegrees:60];
-
- expect(testStruct.latitudeDegrees).to(equal(@(-60)));
- expect(testStruct.longitudeDegrees).to(equal(@60));
- });
-
- it(@"Should set and get correctly", ^ {
- SDLGPSLocation* testStruct = [[SDLGPSLocation alloc] initWithLatitudeDegrees:-60 longitudeDegrees:60 altitudeMeters:@5000];
-
- expect(testStruct.latitudeDegrees).to(equal(@(-60)));
- expect(testStruct.longitudeDegrees).to(equal(@60));
- expect(testStruct.altitudeMeters).to(equal(@5000));
- });
-
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLNameLatitudeDegrees:@(-60),
- SDLNameLongitudeDegrees:@60,
- SDLNameAltitudeMeters:@5000
- } mutableCopy];
-
- SDLGPSLocation* testStruct = [[SDLGPSLocation alloc] initWithDictionary:dict];
-
- expect(testStruct.latitudeDegrees).to(equal(@(-60)));
- expect(testStruct.longitudeDegrees).to(equal(@60));
- expect(testStruct.altitudeMeters).to(equal(@5000));
- });
-
- it(@"Should return nil if not set", ^ {
- SDLGPSLocation* testStruct = [[SDLGPSLocation alloc] init];
-
- expect(testStruct.longitudeDegrees).to(beNil());
- expect(testStruct.latitudeDegrees).to(beNil());
- expect(testStruct.altitudeMeters).to(beNil());
-
- });
-});
-
-QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m
index 55fad3f9c..c3dc54ffa 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m
@@ -19,19 +19,19 @@ describe(@"Getter/Setter Tests", ^ {
testStruct.name = SDLLightNameFogLights;
testStruct.densityAvailable = @YES;
- testStruct.sRGBColorSpaceAvailable = @NO;
+ testStruct.colorAvailable = @NO;
expect(testStruct.name).to(equal(SDLLightNameFogLights));
expect(testStruct.densityAvailable).to(equal(@YES));
- expect(testStruct.sRGBColorSpaceAvailable).to(equal(@NO));
+ expect(testStruct.colorAvailable).to(equal(@NO));
});
it(@"Should set and get correctly", ^ {
- SDLLightCapabilities* testStruct = [[SDLLightCapabilities alloc] initWithName:SDLLightNameFogLights densityAvailable:YES sRGBColorSpaceAvailable:NO statusAvailable:NO];
+ SDLLightCapabilities* testStruct = [[SDLLightCapabilities alloc] initWithName:SDLLightNameFogLights densityAvailable:YES colorAvailable:NO statusAvailable:NO];
expect(testStruct.name).to(equal(SDLLightNameFogLights));
expect(testStruct.densityAvailable).to(equal(@YES));
- expect(testStruct.sRGBColorSpaceAvailable).to(equal(@NO));
+ expect(testStruct.colorAvailable).to(equal(@NO));
expect(testStruct.statusAvailable).to(equal(@NO));
});
@@ -39,14 +39,14 @@ describe(@"Getter/Setter Tests", ^ {
it(@"Should get correctly when initialized", ^ {
NSMutableDictionary* dict = [@{SDLNameName:SDLLightNameFogLights,
SDLNameDensityAvailable:@YES,
- SDLNameSRGBColorSpaceAvailable:@NO
+ SDLNameRGBColorSpaceAvailable:@NO
} mutableCopy];
SDLLightCapabilities* testStruct = [[SDLLightCapabilities alloc] initWithDictionary:dict];
expect(testStruct.name).to(equal(SDLLightNameFogLights));
expect(testStruct.densityAvailable).to(equal(@YES));
- expect(testStruct.sRGBColorSpaceAvailable).to(equal(@NO));
+ expect(testStruct.colorAvailable).to(equal(@NO));
});
it(@"Should return nil if not set", ^ {
@@ -54,7 +54,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.name).to(beNil());
expect(testStruct.densityAvailable).to(beNil());
- expect(testStruct.sRGBColorSpaceAvailable).to(beNil());
+ expect(testStruct.colorAvailable).to(beNil());
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m
index d2b2d6e1b..40f342f05 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m
@@ -26,7 +26,7 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should set and get correctly", ^ {
- SDLLightControlData* testStruct = [[SDLLightControlData alloc] initWithLightStateArray:[@[someLightState] copy]];
+ SDLLightControlData* testStruct = [[SDLLightControlData alloc] initWithLightStates:[@[someLightState] copy]];
expect(testStruct.lightState).to(equal([@[someLightState] copy]));
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m
index 7d3fd57cb..3975cb3ed 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m
@@ -9,13 +9,13 @@
#import "SDLLightState.h"
#import "SDLLightStatus.h"
-#import "SDLSRGBColor.h"
+#import "SDLRGBColor.h"
#import "SDLLightName.h"
#import "SDLNames.h"
QuickSpecBegin(SDLLightStateSpec)
-SDLSRGBColor* somesRGBColor = [[SDLSRGBColor alloc] init];
+SDLRGBColor* someRGBColor = [[SDLRGBColor alloc] init];
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
@@ -24,46 +24,56 @@ describe(@"Getter/Setter Tests", ^ {
testStruct.id = SDLLightNameFogLights;
testStruct.status = SDLLightStatusOn;
testStruct.density = @(0.5);
- testStruct.sRGBColor = somesRGBColor;
+ testStruct.color = someRGBColor;
expect(testStruct.id).to(equal(SDLLightNameFogLights));
expect(testStruct.status).to(equal(SDLLightStatusOn));
expect(testStruct.density).to(equal(@(0.5)));
- expect(testStruct.sRGBColor).to(equal(somesRGBColor));
+ expect(testStruct.color).to(equal(someRGBColor));
});
it(@"Should set and get correctly", ^ {
SDLLightState* testStruct = [[SDLLightState alloc] initWithId:SDLLightNameFogLights status:SDLLightStatusOFF];
+
expect(testStruct.id).to(equal(SDLLightNameFogLights));
expect(testStruct.status).to(equal(SDLLightStatusOFF));
expect(testStruct.density).to(beNil());
- expect(testStruct.sRGBColor).to(beNil());
-
+ expect(testStruct.color).to(beNil());
});
it(@"Should set and get correctly", ^ {
- SDLLightState* testStruct = [[SDLLightState alloc] initWithId:SDLLightNameFogLights status:SDLLightStatusOFF density:0.5 sRGBColor:somesRGBColor];
+ SDLLightState* testStruct = [[SDLLightState alloc] initWithId:SDLLightNameFogLights status:SDLLightStatusOFF density:0.5 color:someRGBColor];
expect(testStruct.id).to(equal(SDLLightNameFogLights));
expect(testStruct.status).to(equal(SDLLightStatusOFF));
expect(testStruct.density).to(equal(@(0.5)));
- expect(testStruct.sRGBColor).to(equal(somesRGBColor));
+ expect(testStruct.color).to(equal(someRGBColor));
+ });
+
+ it(@"Should set and get correctly", ^ {
+ UIColor *testColorBack = [[UIColor alloc] init];
+ SDLRGBColor *testBlack = [[SDLRGBColor alloc] initWithRed:0 green:0 blue:0];
+ SDLLightState* testStruct = [[SDLLightState alloc] initWithId:SDLLightNameFogLights lightStatus:SDLLightStatusOFF lightDensity:0.5 lightColor:testColorBack];
+
+ expect(testStruct.id).to(equal(SDLLightNameFogLights));
+ expect(testStruct.status).to(equal(SDLLightStatusOFF));
+ expect(testStruct.density).to(equal(@(0.5)));
+ expect(testStruct.color).to(equal(testBlack));
});
it(@"Should get correctly when initialized", ^ {
NSMutableDictionary* dict = [@{SDLNameId:SDLLightNameFogLights,
SDLNameStatus:SDLLightStatusOn,
SDLNameDensity:@(0.5),
- SDLNameSRGBColor:somesRGBColor} mutableCopy];
+ SDLNameColor:someRGBColor} mutableCopy];
SDLLightState* testStruct = [[SDLLightState alloc] initWithDictionary:dict];
expect(testStruct.id).to(equal(SDLLightNameFogLights));
expect(testStruct.status).to(equal(SDLLightStatusOn));
expect(testStruct.density).to(equal(@(0.5)));
- expect(testStruct.sRGBColor).to(equal(somesRGBColor));
-
+ expect(testStruct.color).to(equal(someRGBColor));
});
it(@"Should return nil if not set", ^ {
@@ -72,7 +82,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.id).to(beNil());
expect(testStruct.status).to(beNil());
expect(testStruct.density).to(beNil());
- expect(testStruct.sRGBColor).to(beNil());
+ expect(testStruct.color).to(beNil());
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m
index ec56d4513..d974c1b2c 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m
@@ -17,7 +17,6 @@
QuickSpecBegin(SDLRadioControlDataSpec)
__block SDLRDSData* someRdsData = [[SDLRDSData alloc] init];
-__block SDLSISData* someSisData = [[SDLSISData alloc] init];
describe(@"Initialization tests", ^{
@@ -35,7 +34,6 @@ describe(@"Initialization tests", ^{
expect(testStruct.radioEnable).to(beNil());
expect(testStruct.state).to(beNil());
expect(testStruct.hdRadioEnable).to(beNil());
- expect(testStruct.sisData).to(beNil());
});
it(@"should properly initialize initWithDictionary", ^{
@@ -49,8 +47,7 @@ describe(@"Initialization tests", ^{
SDLNameSignalChangeThreshold : @76,
SDLNameRadioEnable : @YES,
SDLNameState : SDLRadioStateNotFound,
- SDLNameHDRadioEnable : @NO,
- SDLNameSISData:someSisData
+ SDLNameHDRadioEnable : @NO
} mutableCopy];
SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithDictionary:dict];
@@ -65,7 +62,6 @@ describe(@"Initialization tests", ^{
expect(testStruct.radioEnable).to(equal(@YES));
expect(testStruct.state).to(equal(SDLRadioStateNotFound));
expect(testStruct.hdRadioEnable).to(equal(@NO));
- expect(testStruct.sisData).to(equal(someSisData));
});
it(@"Should set and get correctly", ^{
@@ -81,8 +77,7 @@ describe(@"Initialization tests", ^{
testStruct.radioEnable = @YES;
testStruct.state = SDLRadioStateNotFound;
testStruct.hdRadioEnable = @YES;
- testStruct.sisData = someSisData;
-
+
expect(testStruct.frequencyInteger).to(equal(@101));
expect(testStruct.frequencyFraction).to(equal(@7));
expect(testStruct.band).to(equal(SDLRadioBandAM));
@@ -94,10 +89,9 @@ describe(@"Initialization tests", ^{
expect(testStruct.radioEnable).to(equal(@YES));
expect(testStruct.state).to(equal(SDLRadioStateNotFound));
expect(testStruct.hdRadioEnable).to(equal(@YES));
- expect(testStruct.sisData).to(equal(someSisData));
});
- it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ {
+ it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES];
@@ -110,7 +104,7 @@ describe(@"Initialization tests", ^{
#pragma clang diagnostic pop
});
- it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ {
+ it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES];
@@ -123,7 +117,7 @@ describe(@"Initialization tests", ^{
#pragma clang diagnostic pop
});
- it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ {
+ it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES];
@@ -137,15 +131,15 @@ describe(@"Initialization tests", ^{
#pragma clang diagnostic pop
});
- it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ {
- SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES sisData:someSisData];
+ it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
+ SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES hdRadioEnable:@YES];
expect(testStruct.frequencyInteger).to(equal(@101));
expect(testStruct.frequencyFraction).to(equal(@7));
expect(testStruct.band).to(equal(SDLRadioBandAM));
expect(testStruct.hdChannel).to(equal(@2));
expect(testStruct.radioEnable).to(equal(@YES));
- expect(testStruct.sisData).to(equal(someSisData));
+ expect(testStruct.hdRadioEnable).to(equal(@YES));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSDLSRGBColorSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSDLSRGBColorSpec.m
deleted file mode 100644
index 6fc596d10..000000000
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSDLSRGBColorSpec.m
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// SDLSDLSRGBColorSpec.m
-// SmartDeviceLinkTests
-//
-
-#import <Foundation/Foundation.h>
-
-#import <Quick/Quick.h>
-#import <Nimble/Nimble.h>
-
-#import "SDLNames.h"
-#import "SDLSRGBColor.h"
-
-
-QuickSpecBegin( SDLSDLSRGBColorSpec)
-
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
- SDLSRGBColor* testStruct = [[SDLSRGBColor alloc] init];
-
- testStruct.red = @123;
- testStruct.green = @23;
- testStruct.blue = @54;
-
- expect(testStruct.red).to(equal(@123));
- expect(testStruct.green).to(equal(@23));
- expect(testStruct.blue).to(equal(@54));
-
- });
-
- it(@"Should set and get correctly", ^ {
- SDLSRGBColor* testStruct = [[SDLSRGBColor alloc] initWithRed:123 green:23 blue:54];
-
- expect(testStruct.red).to(equal(@123));
- expect(testStruct.green).to(equal(@23));
- expect(testStruct.blue).to(equal(@54));
- });
-
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLNameRed:@123,
- SDLNameBlue:@23,
- SDLNameGreen:@54
- } mutableCopy];
-
- SDLSRGBColor* testStruct = [[SDLSRGBColor alloc] initWithDictionary:dict];
-
- expect(testStruct.red).to(equal(@123));
- expect(testStruct.green).to(equal(@54));
- expect(testStruct.blue).to(equal(@23));
- });
-
- it(@"Should return nil if not set", ^ {
- SDLSRGBColor* testStruct = [[SDLSRGBColor alloc] init];
-
- expect(testStruct.red).to(beNil());
- expect(testStruct.green).to(beNil());
- expect(testStruct.blue).to(beNil());
-
- });
-});
-
-QuickSpecEnd
-
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m
index e9ff6afd9..3c20090aa 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m
@@ -11,13 +11,12 @@
#import "SDLNames.h"
#import "SDLSISData.h"
#import "SDLStationIDNumber.h"
-#import "SDLGPSLocation.h"
-
+#import "SDLGPSData.h"
QuickSpecBegin(SDLSISDataSpec)
SDLStationIDNumber *someID = [[SDLStationIDNumber alloc] init];
-SDLGPSLocation *someLocation = [[SDLGPSLocation alloc] init];
+SDLGPSData *someLocation = [[SDLGPSData alloc] init];
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
diff --git a/SmartDeviceLinkTests/SDLLifecycleConfigurationUpdateSpec.m b/SmartDeviceLinkTests/SDLLifecycleConfigurationUpdateSpec.m
new file mode 100644
index 000000000..59786be57
--- /dev/null
+++ b/SmartDeviceLinkTests/SDLLifecycleConfigurationUpdateSpec.m
@@ -0,0 +1,76 @@
+//
+// SDLLifecycleConfigurationUpdateSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 7/25/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLLifecycleConfigurationUpdate.h"
+#import "SDLTTSChunk.h"
+
+QuickSpecBegin(SDLLifecycleConfigurationUpdateSpec)
+
+describe(@"A lifecycle configuration update", ^{
+ __block SDLLifecycleConfigurationUpdate *update = nil;
+
+ describe(@"Created with the default init", ^{
+ beforeEach(^{
+ update = [[SDLLifecycleConfigurationUpdate alloc] init];
+ });
+
+ it(@"should return nil if not set", ^{
+ expect(update.appName).to(beNil());
+ expect(update.shortAppName).to(beNil());
+ expect(update.ttsName).to(beNil());
+ expect(update.voiceRecognitionCommandNames).to(beNil());
+ });
+
+ it(@"should set and get correctly", ^{
+ NSString *testAppName = @"Some Test String";
+ NSString *testShortAppName = @"Short";
+ NSArray<SDLTTSChunk *> *testTTSName = [SDLTTSChunk textChunksFromString:@"Some TTS String"];
+ NSArray<NSString *> *testVRCommandNames = @[@"VR Command One", @"VR Command Two"];
+
+ update.appName = testAppName;
+ update.shortAppName = testShortAppName;
+ update.ttsName = testTTSName;
+ update.voiceRecognitionCommandNames = testVRCommandNames;
+
+ expect(update.appName).to(equal(testAppName));
+ expect(update.shortAppName).to(equal(testShortAppName));
+ expect(update.ttsName).to(equal(testTTSName));
+ expect(update.voiceRecognitionCommandNames).to(equal(testVRCommandNames));
+ });
+ });
+
+ describe(@"Created with the default debug initalizer", ^{
+ it(@"should have set all properties correctly", ^{
+ NSString *testAppName = @"Test App Name";
+ NSString *testShortAppName = @"Short";
+ NSArray<SDLTTSChunk *> *testTTSName = [SDLTTSChunk textChunksFromString:@"Some TTS String"];
+ NSArray<NSString *> *testVRCommandNames = @[@"VR Command One", @"VR Command Two"];
+
+ update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:testAppName shortAppName:testShortAppName ttsName:testTTSName voiceRecognitionCommandNames:testVRCommandNames];
+
+ expect(update.appName).to(equal(testAppName));
+ expect(update.shortAppName).to(equal(testShortAppName));
+ expect(update.ttsName).to(equal(testTTSName));
+ expect(update.voiceRecognitionCommandNames).to(equal(testVRCommandNames));
+ });
+
+ it(@"should have left all properties as nil if no parameters set", ^{
+ update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:nil shortAppName:nil ttsName:nil voiceRecognitionCommandNames:nil];
+
+ expect(update.appName).to(beNil());
+ expect(update.shortAppName).to(beNil());
+ expect(update.ttsName).to(beNil());
+ expect(update.voiceRecognitionCommandNames).to(beNil());
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m b/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m
index 7d203b75d..b09d1b4e5 100644
--- a/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m
+++ b/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m
@@ -13,20 +13,20 @@ describe(@"The SDLGlobals class", ^{
});
describe(@"when just initialized", ^{
- it(@"should properly set protocol version", ^{
+ it(@"should properly set parameters", ^{
expect(testGlobals.protocolVersion).to(equal(@"1.0.0"));
- });
-
- it(@"should properly set the major protocol version", ^{
expect(testGlobals.majorProtocolVersion).to(equal(1));
- });
-
- it(@"should properly set max head unit version", ^{
expect(testGlobals.maxHeadUnitVersion).to(equal(@"0.0.0"));
- });
-
- it(@"should give the v1 MTU size", ^{
expect([testGlobals mtuSizeForServiceType:SDLServiceTypeRPC]).to(equal(SDLV1MTUSize));
+ expect(testGlobals.rpcVersion).to(equal([[SDLSyncMsgVersion alloc] initWithMajorVersion:1 minorVersion:0 patchVersion:0]));
+ });
+ });
+
+ describe(@"setting the RPC version", ^{
+ it(@"should properly set", ^{
+ testGlobals.rpcVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:4 minorVersion:2 patchVersion:3];
+
+ expect(testGlobals.rpcVersion).to(equal([[SDLSyncMsgVersion alloc] initWithMajorVersion:4 minorVersion:2 patchVersion:3]));
});
});