summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2019-03-19 13:24:55 -0400
committerGitHub <noreply@github.com>2019-03-19 13:24:55 -0400
commit8cdf2140dae5388444f699e7b46d96dfd5321494 (patch)
treeb555d2944db15cd81d57360a5ed3b19113018a49
parent48278d6ffa6dfea71f11a3dddb10f773fe56ba47 (diff)
parent5d6e66847e658e426667a70d29c11e4ef0c11999 (diff)
downloadsdl_ios-8cdf2140dae5388444f699e7b46d96dfd5321494.tar.gz
Merge pull request #1175 from smartdevicelink/feature/issue_1166_cloud_app_transport
Cloud App Transport
-rw-r--r--SmartDeviceLink-iOS.podspec6
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj76
-rw-r--r--SmartDeviceLink.podspec6
-rw-r--r--SmartDeviceLink/SDLCloudAppProperties.h94
-rw-r--r--SmartDeviceLink/SDLCloudAppProperties.m104
-rw-r--r--SmartDeviceLink/SDLControlFramePayloadConstants.h1
-rw-r--r--SmartDeviceLink/SDLControlFramePayloadConstants.m9
-rw-r--r--SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h5
-rw-r--r--SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m26
-rw-r--r--SmartDeviceLink/SDLFunctionID.m2
-rw-r--r--SmartDeviceLink/SDLGetCloudAppProperties.h35
-rw-r--r--SmartDeviceLink/SDLGetCloudAppProperties.m46
-rw-r--r--SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h38
-rw-r--r--SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m48
-rw-r--r--SmartDeviceLink/SDLGetVehicleData.h46
-rw-r--r--SmartDeviceLink/SDLGetVehicleData.m13
-rw-r--r--SmartDeviceLink/SDLGetVehicleDataResponse.h4
-rw-r--r--SmartDeviceLink/SDLGetVehicleDataResponse.m8
-rw-r--r--SmartDeviceLink/SDLGlobals.m4
-rw-r--r--SmartDeviceLink/SDLHybridAppPreference.h29
-rw-r--r--SmartDeviceLink/SDLHybridAppPreference.m13
-rw-r--r--SmartDeviceLink/SDLLifecycleManager.h1
-rw-r--r--SmartDeviceLink/SDLLifecycleManager.m9
-rw-r--r--SmartDeviceLink/SDLManager.h5
-rw-r--r--SmartDeviceLink/SDLManager.m4
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.h4
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.m6
-rw-r--r--SmartDeviceLink/SDLNotificationDispatcher.m16
-rw-r--r--SmartDeviceLink/SDLOnVehicleData.h5
-rw-r--r--SmartDeviceLink/SDLOnVehicleData.m8
-rw-r--r--SmartDeviceLink/SDLProtocol.h5
-rw-r--r--SmartDeviceLink/SDLProtocol.m7
-rw-r--r--SmartDeviceLink/SDLProxy.m26
-rw-r--r--SmartDeviceLink/SDLProxyListener.h33
-rw-r--r--SmartDeviceLink/SDLRPCFunctionNames.h2
-rw-r--r--SmartDeviceLink/SDLRPCFunctionNames.m2
-rw-r--r--SmartDeviceLink/SDLRPCParameterNames.h7
-rw-r--r--SmartDeviceLink/SDLRPCParameterNames.m7
-rw-r--r--SmartDeviceLink/SDLRequestType.h6
-rw-r--r--SmartDeviceLink/SDLRequestType.m1
-rw-r--r--SmartDeviceLink/SDLSetCloudAppProperties.h38
-rw-r--r--SmartDeviceLink/SDLSetCloudAppProperties.m48
-rw-r--r--SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h20
-rw-r--r--SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m25
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleData.h42
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleData.m14
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleDataResponse.h7
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleDataResponse.m8
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleData.h44
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleData.m13
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h7
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m8
-rw-r--r--SmartDeviceLink/SDLVehicleDataType.h5
-rw-r--r--SmartDeviceLink/SDLVehicleDataType.m1
-rw-r--r--SmartDeviceLink/SDLVersion.h2
-rw-r--r--SmartDeviceLink/SDLVersion.m8
-rw-r--r--SmartDeviceLink/SmartDeviceLink.h6
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m1
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m4
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLControlFramePayloadConstantsSpec.m40
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m170
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/SDLControlFramePayloadRPCStartServiceAckSpec.m26
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m12
-rw-r--r--SmartDeviceLinkTests/ProxySpecs/SDLSecondaryTransportManagerSpec.m12
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLHybridAppPreferenceSpec.m24
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRequestTypeSpec.m1
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m1
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m48
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m60
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m43
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m58
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m45
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m43
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m59
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m58
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m37
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m5
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m5
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m114
80 files changed, 1844 insertions, 87 deletions
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec
index 670001394..ba787dcf5 100644
--- a/SmartDeviceLink-iOS.podspec
+++ b/SmartDeviceLink-iOS.podspec
@@ -68,6 +68,7 @@ ss.public_header_files = [
'SmartDeviceLink/SDLChoiceSetDelegate.h',
'SmartDeviceLink/SDLClimateControlCapabilities.h',
'SmartDeviceLink/SDLClimateControlData.h',
+'SmartDeviceLink/SDLCloudAppProperties.h',
'SmartDeviceLink/SDLClusterModeStatus.h',
'SmartDeviceLink/SDLCompassDirection.h',
'SmartDeviceLink/SDLComponentVolumeStatus.h',
@@ -122,6 +123,8 @@ ss.public_header_files = [
'SmartDeviceLink/SDLFuelType.h',
'SmartDeviceLink/SDLFunctionID.h',
'SmartDeviceLink/SDLGenericResponse.h',
+'SmartDeviceLink/SDLGetCloudAppProperties.h',
+'SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h',
'SmartDeviceLink/SDLGetAppServiceData.h',
'SmartDeviceLink/SDLGetAppServiceDataResponse.h',
'SmartDeviceLink/SDLGetDTCs.h',
@@ -146,6 +149,7 @@ ss.public_header_files = [
'SmartDeviceLink/SDLHMISettingsControlCapabilities.h',
'SmartDeviceLink/SDLHMISettingsControlData.h',
'SmartDeviceLink/SDLHMIZoneCapabilities.h',
+'SmartDeviceLink/SDLHybridAppPreference.h',
'SmartDeviceLink/SDLIgnitionStableStatus.h',
'SmartDeviceLink/SDLIgnitionStatus.h',
'SmartDeviceLink/SDLImage.h',
@@ -306,6 +310,8 @@ ss.public_header_files = [
'SmartDeviceLink/SDLServiceUpdateReason.h',
'SmartDeviceLink/SDLSetAppIcon.h',
'SmartDeviceLink/SDLSetAppIconResponse.h',
+'SmartDeviceLink/SDLSetCloudAppProperties.h',
+'SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h',
'SmartDeviceLink/SDLSetDisplayLayout.h',
'SmartDeviceLink/SDLSetDisplayLayoutResponse.h',
'SmartDeviceLink/SDLSetGlobalProperties.h',
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index cdf70ea16..fa298034a 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -1273,6 +1273,12 @@
884E702B21FBB151008D53BA /* SDLAppServiceRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 884E702921FBB151008D53BA /* SDLAppServiceRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };
884E702C21FBB151008D53BA /* SDLAppServiceRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E702A21FBB151008D53BA /* SDLAppServiceRecord.m */; };
8850DB601F4475D30053A48D /* TestMultipleFilesConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8850DB5F1F4475D30053A48D /* TestMultipleFilesConnectionManager.m */; };
+ 8854682F2225BDAE00994D8D /* SDLHybridAppPreference.h in Headers */ = {isa = PBXBuildFile; fileRef = 8854682D2225BDAE00994D8D /* SDLHybridAppPreference.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 885468302225BDAE00994D8D /* SDLHybridAppPreference.m in Sources */ = {isa = PBXBuildFile; fileRef = 8854682E2225BDAE00994D8D /* SDLHybridAppPreference.m */; };
+ 885468322225BF2800994D8D /* SDLHybridAppPreferenceSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 885468312225BF2800994D8D /* SDLHybridAppPreferenceSpec.m */; };
+ 885468352225C1F800994D8D /* SDLCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 885468332225C1F800994D8D /* SDLCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 885468362225C1F800994D8D /* SDLCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 885468342225C1F800994D8D /* SDLCloudAppProperties.m */; };
+ 885468382225CBA400994D8D /* SDLCloudAppPropertiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 885468372225CBA400994D8D /* SDLCloudAppPropertiesSpec.m */; };
8855F9E0220C93B700A5C897 /* SDLWeatherDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8855F9DF220C93B700A5C897 /* SDLWeatherDataSpec.m */; };
8855F9E3220CB04000A5C897 /* SDLOnAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8855F9E1220CB04000A5C897 /* SDLOnAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
8855F9E4220CB04000A5C897 /* SDLOnAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8855F9E2220CB04000A5C897 /* SDLOnAppServiceData.m */; };
@@ -1289,6 +1295,7 @@
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 */; };
8877F5F11F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8877F5F01F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m */; };
+ 887BE4D422272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 887BE4D322272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m */; };
88802FE920853AE600E9EBC6 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 5D9FDA971F2A7D3F00A495C8 /* LICENSE */; };
88802FEA20853AE600E9EBC6 /* SDLAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D6F7A3D1BC811FC0070BF37 /* SDLAssets.xcassets */; };
88802FEB20853AE600E9EBC6 /* SDLLockScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D616B481D552F7A00553F6B /* SDLLockScreen.storyboard */; };
@@ -1296,6 +1303,18 @@
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, ); }; };
+ 8881AFAC2225D61900EA870B /* SDLSetCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFAA2225D61900EA870B /* SDLSetCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8881AFAD2225D61900EA870B /* SDLSetCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFAB2225D61900EA870B /* SDLSetCloudAppProperties.m */; };
+ 8881AFAF2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFAE2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m */; };
+ 8881AFB22225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFB02225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8881AFB32225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFB12225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m */; };
+ 8881AFB52225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFB42225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m */; };
+ 8881AFB82225E5EE00EA870B /* SDLGetCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFB62225E5EE00EA870B /* SDLGetCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8881AFB92225E5EE00EA870B /* SDLGetCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFB72225E5EE00EA870B /* SDLGetCloudAppProperties.m */; };
+ 8881AFBB2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFBA2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m */; };
+ 8881AFBE2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFBC2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8881AFBF2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFBD2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m */; };
+ 8881AFC12225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFC02225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m */; };
8880D24722205B1B00964F6A /* SDLNavigationInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 8880D24522205B1B00964F6A /* SDLNavigationInstruction.h */; settings = {ATTRIBUTES = (Public, ); }; };
8880D24822205B1B00964F6A /* SDLNavigationInstruction.m in Sources */ = {isa = PBXBuildFile; fileRef = 8880D24622205B1B00964F6A /* SDLNavigationInstruction.m */; };
8886EB982111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8886EB972111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m */; };
@@ -2879,6 +2898,12 @@
884E702A21FBB151008D53BA /* SDLAppServiceRecord.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceRecord.m; 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>"; };
+ 8854682D2225BDAE00994D8D /* SDLHybridAppPreference.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLHybridAppPreference.h; sourceTree = "<group>"; };
+ 8854682E2225BDAE00994D8D /* SDLHybridAppPreference.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLHybridAppPreference.m; sourceTree = "<group>"; };
+ 885468312225BF2800994D8D /* SDLHybridAppPreferenceSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLHybridAppPreferenceSpec.m; sourceTree = "<group>"; };
+ 885468332225C1F800994D8D /* SDLCloudAppProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCloudAppProperties.h; sourceTree = "<group>"; };
+ 885468342225C1F800994D8D /* SDLCloudAppProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloudAppProperties.m; sourceTree = "<group>"; };
+ 885468372225CBA400994D8D /* SDLCloudAppPropertiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloudAppPropertiesSpec.m; sourceTree = "<group>"; };
8855F9DF220C93B700A5C897 /* SDLWeatherDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherDataSpec.m; sourceTree = "<group>"; };
8855F9E1220CB04000A5C897 /* SDLOnAppServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLOnAppServiceData.h; sourceTree = "<group>"; };
8855F9E2220CB04000A5C897 /* SDLOnAppServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnAppServiceData.m; sourceTree = "<group>"; };
@@ -2895,7 +2920,20 @@
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>"; };
+ 887BE4D322272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadConstantsSpec.m; sourceTree = "<group>"; };
88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SmartDeviceLinkSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8881AFAA2225D61900EA870B /* SDLSetCloudAppProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSetCloudAppProperties.h; sourceTree = "<group>"; };
+ 8881AFAB2225D61900EA870B /* SDLSetCloudAppProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppProperties.m; sourceTree = "<group>"; };
+ 8881AFAE2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppPropertiesSpec.m; sourceTree = "<group>"; };
+ 8881AFB02225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSetCloudAppPropertiesResponse.h; sourceTree = "<group>"; };
+ 8881AFB12225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppPropertiesResponse.m; sourceTree = "<group>"; };
+ 8881AFB42225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppPropertiesResponseSpec.m; sourceTree = "<group>"; };
+ 8881AFB62225E5EE00EA870B /* SDLGetCloudAppProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetCloudAppProperties.h; sourceTree = "<group>"; };
+ 8881AFB72225E5EE00EA870B /* SDLGetCloudAppProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppProperties.m; sourceTree = "<group>"; };
+ 8881AFBA2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppPropertiesSpec.m; sourceTree = "<group>"; };
+ 8881AFBC2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetCloudAppPropertiesResponse.h; sourceTree = "<group>"; };
+ 8881AFBD2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppPropertiesResponse.m; sourceTree = "<group>"; };
+ 8881AFC02225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppPropertiesResponseSpec.m; sourceTree = "<group>"; };
8880D24522205B1B00964F6A /* SDLNavigationInstruction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLNavigationInstruction.h; sourceTree = "<group>"; };
8880D24622205B1B00964F6A /* SDLNavigationInstruction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationInstruction.m; sourceTree = "<group>"; };
8886EB972111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFileManagerConfigurationSpec.m; sourceTree = "<group>"; };
@@ -3196,6 +3234,7 @@
162E81F71A9BDE8A00906325 /* SDLGlobalProperySpec.m */,
162E81F81A9BDE8A00906325 /* SDLHMILevelSpec.m */,
162E81F91A9BDE8A00906325 /* SDLHMIZoneCapabilitiesSpec.m */,
+ 885468312225BF2800994D8D /* SDLHybridAppPreferenceSpec.m */,
162E81FA1A9BDE8A00906325 /* SDLIgnitionStableStatusSpec.m */,
162E81FB1A9BDE8A00906325 /* SDLIgnitionStatusSpec.m */,
162E81FC1A9BDE8A00906325 /* SDLImageFieldNameSpec.m */,
@@ -3322,6 +3361,7 @@
5D8B17551AC9E399006A6E1C /* SDLDialNumberSpec.m */,
162E82491A9BDE8A00906325 /* SDLEncodedSyncPDataSpec.m */,
162E824A1A9BDE8A00906325 /* SDLEndAudioPassThruSpec.m */,
+ 8881AFBA2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m */,
88A5E7F9220B60EC00495E8A /* SDLGetAppServiceDataSpec.m */,
8855F9EB220CBFB700A5C897 /* SDLGetFileSpec.m */,
162E824B1A9BDE8A00906325 /* SDLGetDTCsSpec.m */,
@@ -3342,6 +3382,7 @@
162E82541A9BDE8A00906325 /* SDLScrollableMessageSpec.m */,
5DCF76FB1ACDDB4200BB647B /* SDLSendLocationSpec.m */,
162E82551A9BDE8A00906325 /* SDLSetAppIconSpec.m */,
+ 8881AFAE2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m */,
162E82561A9BDE8A00906325 /* SDLSetDisplayLayoutSpec.m */,
162E82571A9BDE8A00906325 /* SDLSetGlobalPropertiesSpec.m */,
162E82581A9BDE8A00906325 /* SDLSetMediaClockTimerSpec.m */,
@@ -3384,6 +3425,7 @@
162E82711A9BDE8A00906325 /* SDLEncodedSyncPDataResponseSpec.m */,
162E82721A9BDE8A00906325 /* SDLEndAudioPassThruResponseSpec.m */,
162E82731A9BDE8A00906325 /* SDLGenericResponseSpec.m */,
+ 8881AFC02225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m */,
88AF11D8220B66FD00A59985 /* SDLGetAppServiceDataResponseSpec.m */,
162E82741A9BDE8A00906325 /* SDLGetDTCsResponseSpec.m */,
88C282C9220CD17200D02F90 /* SDLGetFileResponseSpec.m */,
@@ -3403,6 +3445,7 @@
162E827D1A9BDE8A00906325 /* SDLScrollableMessageResponseSpec.m */,
5DCF76FD1ACDDB5A00BB647B /* SDLSendLocationResponseSpec.m */,
162E827E1A9BDE8A00906325 /* SDLSetAppIconResponseSpec.m */,
+ 8881AFB42225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m */,
162E827F1A9BDE8A00906325 /* SDLSetDisplayLayoutResponseSpec.m */,
162E82801A9BDE8A00906325 /* SDLSetGlobalPropertiesResponseSpec.m */,
1EE8C4601F38865B00FDC2CF /* SDLSetInteriorVehicleDataResponseSpec.m */,
@@ -3445,6 +3488,7 @@
162E82941A9BDE8A00906325 /* SDLChoiceSpec.m */,
1EE8C43F1F348D3200FDC2CF /* SDLClimateControlCapabilitiesSpec.m */,
1EE8C4431F34A1B900FDC2CF /* SDLClimateControlDataSpec.m */,
+ 885468372225CBA400994D8D /* SDLCloudAppPropertiesSpec.m */,
162E82951A9BDE8A00906325 /* SDLClusterModeStatusSpec.m */,
DA9F7EB31DCC086400ACAE48 /* SDLDateTimeSpec.m */,
162E82961A9BDE8A00906325 /* SDLDeviceInfoSpec.m */,
@@ -3584,6 +3628,7 @@
1680B10A1A9CD7AD00DBD79E /* SDLProtocolMessageSpec.m */,
1680B10C1A9CD7AD00DBD79E /* SDLV1ProtocolMessageSpec.m */,
1680B10D1A9CD7AD00DBD79E /* SDLV2ProtocolMessageSpec.m */,
+ 887BE4D322272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m */,
);
path = MessageSpecs;
sourceTree = "<group>";
@@ -4061,6 +4106,8 @@
5D61FAB21A84238A00846EE7 /* SDLEncodedSyncPData.m */,
5D61FAB61A84238A00846EE7 /* SDLEndAudioPassThru.h */,
5D61FAB71A84238A00846EE7 /* SDLEndAudioPassThru.m */,
+ 8881AFB62225E5EE00EA870B /* SDLGetCloudAppProperties.h */,
+ 8881AFB72225E5EE00EA870B /* SDLGetCloudAppProperties.m */,
88A5E7F5220B5BBC00495E8A /* SDLGetAppServiceData.h */,
88A5E7F6220B5BBC00495E8A /* SDLGetAppServiceData.m */,
5D61FAC41A84238A00846EE7 /* SDLGetDTCs.h */,
@@ -4101,6 +4148,8 @@
5DCF76F41ACDBAD300BB647B /* SDLSendLocation.m */,
5D61FB921A84238B00846EE7 /* SDLSetAppIcon.h */,
5D61FB931A84238B00846EE7 /* SDLSetAppIcon.m */,
+ 8881AFAA2225D61900EA870B /* SDLSetCloudAppProperties.h */,
+ 8881AFAB2225D61900EA870B /* SDLSetCloudAppProperties.m */,
5D61FB961A84238B00846EE7 /* SDLSetDisplayLayout.h */,
5D61FB971A84238B00846EE7 /* SDLSetDisplayLayout.m */,
5D61FB9A1A84238B00846EE7 /* SDLSetGlobalProperties.h */,
@@ -4176,6 +4225,8 @@
5D61FAB91A84238A00846EE7 /* SDLEndAudioPassThruResponse.m */,
5D61FAC21A84238A00846EE7 /* SDLGenericResponse.h */,
5D61FAC31A84238A00846EE7 /* SDLGenericResponse.m */,
+ 8881AFBC2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h */,
+ 8881AFBD2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m */,
88A5E7FB220B642200495E8A /* SDLGetAppServiceDataResponse.h */,
88A5E7FC220B642200495E8A /* SDLGetAppServiceDataResponse.m */,
5D61FAC61A84238A00846EE7 /* SDLGetDTCsResponse.h */,
@@ -4216,6 +4267,8 @@
5DCF76F81ACDD7CD00BB647B /* SDLSendLocationResponse.m */,
5D61FB941A84238B00846EE7 /* SDLSetAppIconResponse.h */,
5D61FB951A84238B00846EE7 /* SDLSetAppIconResponse.m */,
+ 8881AFB02225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h */,
+ 8881AFB12225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m */,
5D61FB981A84238B00846EE7 /* SDLSetDisplayLayoutResponse.h */,
5D61FB991A84238B00846EE7 /* SDLSetDisplayLayoutResponse.m */,
5D61FB9C1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.h */,
@@ -4291,6 +4344,8 @@
1E5AD0371F1F4E390029B8AF /* SDLClimateControlCapabilities.m */,
1E5AD06A1F208BAB0029B8AF /* SDLClimateControlData.h */,
1E5AD06B1F208BAB0029B8AF /* SDLClimateControlData.m */,
+ 885468332225C1F800994D8D /* SDLCloudAppProperties.h */,
+ 885468342225C1F800994D8D /* SDLCloudAppProperties.m */,
5D61FA761A84238A00846EE7 /* SDLClusterModeStatus.h */,
5D61FA771A84238A00846EE7 /* SDLClusterModeStatus.m */,
DA9F7E611DCBFAC800ACAE48 /* SDLDateTime.h */,
@@ -4524,6 +4579,8 @@
5D61FAD51A84238A00846EE7 /* SDLHMILevel.m */,
5D61FAD81A84238A00846EE7 /* SDLHMIZoneCapabilities.h */,
5D61FAD91A84238A00846EE7 /* SDLHMIZoneCapabilities.m */,
+ 8854682D2225BDAE00994D8D /* SDLHybridAppPreference.h */,
+ 8854682E2225BDAE00994D8D /* SDLHybridAppPreference.m */,
5D61FADC1A84238A00846EE7 /* SDLIgnitionStableStatus.h */,
5D61FADD1A84238A00846EE7 /* SDLIgnitionStableStatus.m */,
5D61FADE1A84238A00846EE7 /* SDLIgnitionStatus.h */,
@@ -6000,6 +6057,7 @@
1EB59CAB202D96A200343A61 /* SDLMassageCushion.h in Headers */,
1EB59C9F202D925500343A61 /* SDLMassageZone.h in Headers */,
1EB59CA3202D92F600343A61 /* SDLMassageMode.h in Headers */,
+ 8881AFB22225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h in Headers */,
1EB59CAF202D97AC00343A61 /* SDLMassageCushionFirmness.h in Headers */,
1EAA470B2032BAE5000FE74B /* SDLOnRCStatus.h in Headers */,
2BF2F84F20ED004000A26EF2 /* SDLAudioStreamingIndicator.h in Headers */,
@@ -6077,6 +6135,7 @@
5D1665C81CF8CA3D00CC4CA1 /* SDLPermissionFilter.h in Headers */,
E9C32B911AB20BA200F283AF /* SDLIAPSession.h in Headers */,
5D61FCD71A84238C00846EE7 /* SDLInteractionMode.h in Headers */,
+ 8881AFBE2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h in Headers */,
5D61FC391A84238C00846EE7 /* SDLAlertManeuver.h in Headers */,
5D61FC861A84238C00846EE7 /* SDLDeviceStatus.h in Headers */,
DA0C46AF1DCD41E30001F2A8 /* SDLMacros.h in Headers */,
@@ -6093,6 +6152,7 @@
5D9FDA991F2A7D3F00A495C8 /* emhashmap.h in Headers */,
5D61FDB71A84238C00846EE7 /* SDLSyncPData.h in Headers */,
5D61FD011A84238C00846EE7 /* SDLOnAudioPassThru.h in Headers */,
+ 8854682F2225BDAE00994D8D /* SDLHybridAppPreference.h in Headers */,
5D9FDA901F2A7D3400A495C8 /* bson_array.h in Headers */,
5D61FDCB1A84238C00846EE7 /* SDLTextFieldName.h in Headers */,
5D61FD8B1A84238C00846EE7 /* SDLSetMediaClockTimer.h in Headers */,
@@ -6146,6 +6206,7 @@
DA318C1F1DD0F06C00C035AC /* NSMutableDictionary+Store.h in Headers */,
5D61FD7F1A84238C00846EE7 /* SDLSetAppIcon.h in Headers */,
5D61FDD11A84238C00846EE7 /* SDLTouchCoord.h in Headers */,
+ 8881AFAC2225D61900EA870B /* SDLSetCloudAppProperties.h in Headers */,
5D61FC7E1A84238C00846EE7 /* SDLDeleteSubMenu.h in Headers */,
1EE48E901F2F0EE700B98D08 /* SDLTemperatureUnit.h in Headers */,
5D61FC451A84238C00846EE7 /* SDLAudioPassThruCapabilities.h in Headers */,
@@ -6157,6 +6218,7 @@
DAA41D551DF66B2000BC7337 /* SDLH264VideoEncoder.h in Headers */,
8B7B319A1F2F7B5700BDC38D /* SDLVideoStreamingCodec.h in Headers */,
5D61FCAF1A84238C00846EE7 /* SDLGenericResponse.h in Headers */,
+ 885468352225C1F800994D8D /* SDLCloudAppProperties.h in Headers */,
5D61FC4F1A84238C00846EE7 /* SDLBodyInformation.h in Headers */,
5D61FDAB1A84238C00846EE7 /* SDLStartTime.h in Headers */,
5D61FD071A84238C00846EE7 /* SDLOnCommand.h in Headers */,
@@ -6309,6 +6371,7 @@
5D61FE0F1A84238C00846EE7 /* SDLVrHelpItem.h in Headers */,
5D60088A1BE3ED540094A505 /* SDLStateMachine.h in Headers */,
5D61FC721A84238C00846EE7 /* SDLDeleteCommand.h in Headers */,
+ 8881AFB82225E5EE00EA870B /* SDLGetCloudAppProperties.h in Headers */,
5D61FC821A84238C00846EE7 /* SDLDeviceInfo.h in Headers */,
5DD60D98221C5D7D00A82A4F /* SDLVersion.h in Headers */,
5D61FCA91A84238C00846EE7 /* SDLFileType.h in Headers */,
@@ -6749,6 +6812,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 885468362225C1F800994D8D /* SDLCloudAppProperties.m in Sources */,
1E4920B31F6A6463008F2CC3 /* SDLOnInteriorVehicleData.m in Sources */,
1E4920B21F6A6455008F2CC3 /* SDLGetInteriorVehicleDataResponse.m in Sources */,
1EB59CB8202D9C8100343A61 /* SDLSeatMemoryAction.m in Sources */,
@@ -6832,6 +6896,7 @@
5D61FCC81A84238C00846EE7 /* SDLIAPTransport.m in Sources */,
5D61FE101A84238C00846EE7 /* SDLVrHelpItem.m in Sources */,
5D07C0322044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.m in Sources */,
+ 8881AFBF2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m in Sources */,
1E5AD0691F2080B50029B8AF /* SDLRadioControlData.m in Sources */,
888F86FE221DEE200052FE4C /* SDLAsynchronousRPCOperation.m in Sources */,
5D61FCC01A84238C00846EE7 /* SDLHexUtility.m in Sources */,
@@ -6961,6 +7026,7 @@
5D61FD961A84238C00846EE7 /* SDLShowResponse.m in Sources */,
5D61FD981A84238C00846EE7 /* SDLSingleTireStatus.m in Sources */,
1EB59CA8202D946500343A61 /* SDLMassageModeData.m in Sources */,
+ 8881AFB32225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m in Sources */,
5D9FDA931F2A7D3400A495C8 /* bson_util.c in Sources */,
5D61FD511A84238C00846EE7 /* SDLProxy.m in Sources */,
5D61FD461A84238C00846EE7 /* SDLProtocolHeader.m in Sources */,
@@ -7018,6 +7084,7 @@
5D61FDAA1A84238C00846EE7 /* SDLSpeechCapabilities.m in Sources */,
1E5AD0951F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m in Sources */,
5D61FDB41A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.m in Sources */,
+ 885468302225BDAE00994D8D /* SDLHybridAppPreference.m in Sources */,
5D61FD121A84238C00846EE7 /* SDLOnKeyboardInput.m in Sources */,
DA9F7E9A1DCC052C00ACAE48 /* SDLLocationCoordinate.m in Sources */,
5D61FCCA1A84238C00846EE7 /* SDLIgnitionStableStatus.m in Sources */,
@@ -7083,6 +7150,7 @@
DA9F7E641DCBFAC800ACAE48 /* SDLDateTime.m in Sources */,
5D61FD581A84238C00846EE7 /* SDLPutFileResponse.m in Sources */,
5D61FCB21A84238C00846EE7 /* SDLGetDTCs.m in Sources */,
+ 8881AFB92225E5EE00EA870B /* SDLGetCloudAppProperties.m in Sources */,
5D61FD441A84238C00846EE7 /* SDLProtocol.m in Sources */,
5DF40B23208E761A00DD6FDA /* SDLVoiceCommandManager.m in Sources */,
5D61FC341A84238C00846EE7 /* SDLAddSubMenuResponse.m in Sources */,
@@ -7151,6 +7219,7 @@
5D60088B1BE3ED540094A505 /* SDLStateMachine.m in Sources */,
8877F5EF1F34A72200DC128A /* SDLSendHapticDataResponse.m in Sources */,
5D61FD181A84238C00846EE7 /* SDLOnPermissionsChange.m in Sources */,
+ 8881AFAD2225D61900EA870B /* SDLSetCloudAppProperties.m in Sources */,
1EB59CAC202D96A200343A61 /* SDLMassageCushion.m in Sources */,
5D61FD3E1A84238C00846EE7 /* SDLPrimaryAudioSource.m in Sources */,
88A7A3C7220CCEA100A9E435 /* SDLGetFileResponse.m in Sources */,
@@ -7324,6 +7393,7 @@
162E83281A9BDE8B00906325 /* SDLDeleteCommandSpec.m in Sources */,
88A81F6C2200FD4A00A691A9 /* SDLAppServiceRecordSpec.m in Sources */,
162E83531A9BDE8B00906325 /* SDLDiagnosticMessageResponseSpec.m in Sources */,
+ 8881AFB52225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m in Sources */,
162E83671A9BDE8B00906325 /* SDLSliderResponseSpec.m in Sources */,
8877F5F11F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m in Sources */,
162E836C1A9BDE8B00906325 /* SDLSystemRequestResponseSpec.m in Sources */,
@@ -7345,6 +7415,7 @@
162E83591A9BDE8B00906325 /* SDLListFilesResponseSpec.m in Sources */,
162E832A1A9BDE8B00906325 /* SDLDeleteInteractionChoiceSetSpec.m in Sources */,
EE460E0A2066B6E40006EDD3 /* SDLControlFramePayloadRegisterSecondaryTransportNakSpec.m in Sources */,
+ 8881AFBB2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m in Sources */,
88C282CA220CD17200D02F90 /* SDLGetFileResponseSpec.m in Sources */,
88AF11D9220B66FD00A59985 /* SDLGetAppServiceDataResponseSpec.m in Sources */,
162E839D1A9BDE8B00906325 /* SDLRPCResponseSpec.m in Sources */,
@@ -7433,6 +7504,7 @@
162E836A1A9BDE8B00906325 /* SDLSubscribeVehicleDataResponseSpec.m in Sources */,
5D43465B1E6F154400B639C6 /* SDLLogConfigurationSpec.m in Sources */,
1EAA475E2035B177000FE74B /* SDLDisplayModeSpec.m in Sources */,
+ 8881AFAF2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m in Sources */,
162E83761A9BDE8B00906325 /* SDLChoiceSpec.m in Sources */,
162E83571A9BDE8B00906325 /* SDLGetDTCsResponseSpec.m in Sources */,
5D4346471E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m in Sources */,
@@ -7585,6 +7657,8 @@
162E82D41A9BDE8A00906325 /* SDLCharacterSetSpec.m in Sources */,
162E830F1A9BDE8B00906325 /* SDLOnAppInterfaceUnregisteredSpec.m in Sources */,
162E83971A9BDE8B00906325 /* SDLVehicleTypeSpec.m in Sources */,
+ 887BE4D422272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m in Sources */,
+ 885468382225CBA400994D8D /* SDLCloudAppPropertiesSpec.m in Sources */,
88A795D5210678E000056542 /* SDLStaticIconNameSpec.m in Sources */,
1680B1131A9CD7AD00DBD79E /* SDLProtocolHeaderSpec.m in Sources */,
8855F9EC220CBFB700A5C897 /* SDLGetFileSpec.m in Sources */,
@@ -7631,6 +7705,7 @@
162E83861A9BDE8B00906325 /* SDLParameterPermissionsSpec.m in Sources */,
162E831B1A9BDE8B00906325 /* SDLOnPermissionsChangeSpec.m in Sources */,
162E83711A9BDE8B00906325 /* SDLAirbagStatusSpec.m in Sources */,
+ 885468322225BF2800994D8D /* SDLHybridAppPreferenceSpec.m in Sources */,
1EE8C44A1F3846D300FDC2CF /* SDLRadioControlDataSpec.m in Sources */,
1EE8C4501F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m in Sources */,
1EAA47662035B8D3000FE74B /* SDLLightControlDataSpec.m in Sources */,
@@ -7644,6 +7719,7 @@
162E82D81A9BDE8A00906325 /* SDLDimensionSpec.m in Sources */,
162E83731A9BDE8B00906325 /* SDLBeltStatusSpec.m in Sources */,
162E83551A9BDE8B00906325 /* SDLEndAudioPassThruResponseSpec.m in Sources */,
+ 8881AFC12225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m in Sources */,
162E83251A9BDE8B00906325 /* SDLAlertSpec.m in Sources */,
2BF2F85220ED068200A26EF2 /* SDLAudioStreamingIndicatorSpec.m in Sources */,
5D6035D2202CD46200A429C9 /* SDLSpecUtilities.m in Sources */,
diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec
index 53af8c0de..bcc25538b 100644
--- a/SmartDeviceLink.podspec
+++ b/SmartDeviceLink.podspec
@@ -68,6 +68,7 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLChoiceSetDelegate.h',
'SmartDeviceLink/SDLClimateControlCapabilities.h',
'SmartDeviceLink/SDLClimateControlData.h',
+'SmartDeviceLink/SDLCloudAppProperties.h',
'SmartDeviceLink/SDLClusterModeStatus.h',
'SmartDeviceLink/SDLCompassDirection.h',
'SmartDeviceLink/SDLComponentVolumeStatus.h',
@@ -125,6 +126,8 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLGetAppServiceData.h',
'SmartDeviceLink/SDLGetAppServiceDataResponse.h',
'SmartDeviceLink/SDLGetDTCs.h',
+'SmartDeviceLink/SDLGetCloudAppProperties.h',
+'SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h',
'SmartDeviceLink/SDLGetDTCsResponse.h',
'SmartDeviceLink/SDLGetFile.h',
'SmartDeviceLink/SDLGetFileResponse.h',
@@ -146,6 +149,7 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLHMISettingsControlCapabilities.h',
'SmartDeviceLink/SDLHMISettingsControlData.h',
'SmartDeviceLink/SDLHMIZoneCapabilities.h',
+'SmartDeviceLink/SDLHybridAppPreference.h',
'SmartDeviceLink/SDLIgnitionStableStatus.h',
'SmartDeviceLink/SDLIgnitionStatus.h',
'SmartDeviceLink/SDLImage.h',
@@ -306,6 +310,8 @@ sdefault.public_header_files = [
'SmartDeviceLink/SDLServiceUpdateReason.h',
'SmartDeviceLink/SDLSetAppIcon.h',
'SmartDeviceLink/SDLSetAppIconResponse.h',
+'SmartDeviceLink/SDLSetCloudAppProperties.h',
+'SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h',
'SmartDeviceLink/SDLSetDisplayLayout.h',
'SmartDeviceLink/SDLSetDisplayLayoutResponse.h',
'SmartDeviceLink/SDLSetGlobalProperties.h',
diff --git a/SmartDeviceLink/SDLCloudAppProperties.h b/SmartDeviceLink/SDLCloudAppProperties.h
new file mode 100644
index 000000000..2bd33d94d
--- /dev/null
+++ b/SmartDeviceLink/SDLCloudAppProperties.h
@@ -0,0 +1,94 @@
+//
+// SDLCloudAppProperties.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCStruct.h"
+
+#import "SDLHybridAppPreference.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*
+ * The cloud application properties.
+ */
+@interface SDLCloudAppProperties : SDLRPCStruct
+
+/**
+ * Convenience init for required parameters.
+ *
+ * @param appID The id of the cloud app
+ * @return A SDLCloudAppProperties object
+ */
+- (instancetype)initWithAppID:(NSString *)appID NS_DESIGNATED_INITIALIZER;
+
+/**
+ * Convenience init for all parameters.
+ *
+ * @param appID The id of the cloud app
+ * @param nicknames An array of app names a cloud app is allowed to register with
+ * @param enabled If true, the cloud app will appear in the HMI's app list; if false, the cloud app will not appear in the HMI's app list
+ * @param authToken Used to authenticate websocket connection on app activation
+ * @param cloudTransportType Specifies the connection type Core should use
+ * @param hybridAppPreference Specifies the user preference to use the cloud app version or mobile app version when both are available
+ * @param endpoint The websocket endpoint
+ * @return A SDLCloudAppProperties object
+ */
+- (instancetype)initWithAppID:(NSString *)appID nicknames:(nullable NSArray<NSString *> *)nicknames enabled:(BOOL)enabled authToken:(nullable NSString *)authToken cloudTransportType:(nullable NSString *)cloudTransportType hybridAppPreference:(nullable SDLHybridAppPreference)hybridAppPreference endpoint:(nullable NSString *)endpoint;
+
+/**
+ * An array of app names a cloud app is allowed to register with. If included in a `SetCloudAppProperties` request, this value will overwrite the existing "nicknames" field in the app policies section of the policy table.
+ *
+ * Array of Strings, Optional, String length: minlength="0" maxlength="100", Array size: minsize="0" maxsize="100"
+ */
+@property (nullable, strong, nonatomic) NSArray<NSString *> *nicknames;
+
+/**
+ * The id of the cloud app.
+ *
+ * String, Required, maxlength="100"
+ */
+@property (strong, nonatomic) NSString *appID;
+
+/**
+ * If true, the cloud app will appear in the HMI's app list; if false, the cloud app will not appear in the HMI's app list.
+ *
+ * Boolean, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *enabled;
+
+/**
+ * Used to authenticate websocket connection on app activation.
+ *
+ * String, Optional, maxlength="65535"
+ */
+@property (nullable, strong, nonatomic) NSString *authToken;
+
+/**
+ * Specifies the connection type Core should use. Currently the ones that work in SDL Core are `WS` or `WSS`, but an OEM can implement their own transport adapter to handle different values.
+ *
+ * String, Optional, maxlength="100"
+ */
+@property (nullable, strong, nonatomic) NSString *cloudTransportType;
+
+/**
+ * Specifies the user preference to use the cloud app version or mobile app version when both are available.
+ *
+ * SDLHybridAppPreference, Optional
+ */
+@property (nullable, strong, nonatomic) SDLHybridAppPreference hybridAppPreference;
+
+/**
+ * The websocket endpoint.
+ *
+ * String, Optional, maxlength="65535"
+ */
+@property (nullable, strong, nonatomic) NSString *endpoint;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCloudAppProperties.m b/SmartDeviceLink/SDLCloudAppProperties.m
new file mode 100644
index 000000000..41cc7719c
--- /dev/null
+++ b/SmartDeviceLink/SDLCloudAppProperties.m
@@ -0,0 +1,104 @@
+//
+// SDLCloudAppProperties.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLCloudAppProperties.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLCloudAppProperties
+
+- (instancetype)initWithAppID:(NSString *)appID {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ self.appID = appID;
+
+ return self;
+}
+
+- (instancetype)initWithAppID:(NSString *)appID nicknames:(nullable NSArray<NSString *> *)nicknames enabled:(BOOL)enabled authToken:(nullable NSString *)authToken cloudTransportType:(nullable NSString *)cloudTransportType hybridAppPreference:(nullable SDLHybridAppPreference)hybridAppPreference endpoint:(nullable NSString *)endpoint {
+ self = [self initWithAppID:appID];
+ if (!self) {
+ return nil;
+ }
+
+ self.nicknames = nicknames;
+ self.enabled = @(enabled);
+ self.authToken = authToken;
+ self.cloudTransportType = cloudTransportType;
+ self.hybridAppPreference = hybridAppPreference;
+ self.endpoint = endpoint;
+
+ return self;
+}
+
+- (void)setNicknames:(nullable NSArray<NSString *> *)nicknames {
+ [store sdl_setObject:nicknames forName:SDLRPCParameterNameNicknames];
+}
+
+- (nullable NSArray<NSString *> *)nicknames {
+ return [store sdl_objectForName:SDLRPCParameterNameNicknames];
+}
+
+- (void)setAppID:(NSString *)appID {
+ [store sdl_setObject:appID forName:SDLRPCParameterNameAppId];
+}
+
+- (NSString *)appID {
+ return [store sdl_objectForName:SDLRPCParameterNameAppId];
+}
+
+- (void)setEnabled:(nullable NSNumber<SDLBool> *)enabled {
+ [store sdl_setObject:enabled forName:SDLRPCParameterNameEnabled];
+}
+
+- (nullable NSNumber<SDLBool> *)enabled {
+ return [store sdl_objectForName:SDLRPCParameterNameEnabled];
+}
+
+- (void)setAuthToken:(nullable NSString *)authToken {
+ [store sdl_setObject:authToken forName:SDLRPCParameterNameAuthToken];
+}
+
+- (nullable NSString *)authToken {
+ return [store sdl_objectForName:SDLRPCParameterNameAuthToken];
+}
+
+- (void)setCloudTransportType:(nullable NSString *)cloudTransportType {
+ [store sdl_setObject:cloudTransportType forName:SDLRPCParameterNameCloudTransportType];
+}
+
+- (nullable NSString *)cloudTransportType {
+ return [store sdl_objectForName:SDLRPCParameterNameCloudTransportType];
+}
+
+- (void)setHybridAppPreference:(nullable SDLHybridAppPreference)hybridAppPreference {
+ [store sdl_setObject:hybridAppPreference forName:SDLRPCParameterNameHybridAppPreference];
+}
+
+- (nullable SDLHybridAppPreference)hybridAppPreference {
+ return [store sdl_objectForName:SDLRPCParameterNameHybridAppPreference];
+}
+
+- (void)setEndpoint:(nullable NSString *)endpoint {
+ [store sdl_setObject:endpoint forName:SDLRPCParameterNameEndpoint];
+}
+
+- (nullable NSString *)endpoint {
+ return [store sdl_objectForName:SDLRPCParameterNameEndpoint];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLControlFramePayloadConstants.h b/SmartDeviceLink/SDLControlFramePayloadConstants.h
index 37eb51dfc..e0bd1d5e8 100644
--- a/SmartDeviceLink/SDLControlFramePayloadConstants.h
+++ b/SmartDeviceLink/SDLControlFramePayloadConstants.h
@@ -25,3 +25,4 @@ extern char *const SDLControlFrameAudioServiceTransportsKey;
extern char *const SDLControlFrameVideoServiceTransportsKey;
extern char *const SDLControlFrameTCPIPAddressKey;
extern char *const SDLControlFrameTCPPortKey;
+extern char *const SDLControlFrameAuthTokenKey;
diff --git a/SmartDeviceLink/SDLControlFramePayloadConstants.m b/SmartDeviceLink/SDLControlFramePayloadConstants.m
index 41048765d..c365c78a8 100644
--- a/SmartDeviceLink/SDLControlFramePayloadConstants.m
+++ b/SmartDeviceLink/SDLControlFramePayloadConstants.m
@@ -14,14 +14,15 @@ int64_t const SDLControlFrameInt64NotFound = -1;
char *const SDLControlFrameProtocolVersionKey = "protocolVersion";
char *const SDLControlFrameHashIdKey = "hashId";
char *const SDLControlFrameMTUKey = "mtu";
-char *const SDLControlFrameReasonKey = "reason";
+char *const SDLControlFrameSecondaryTransportsKey = "secondaryTransports";
+char *const SDLControlFrameAudioServiceTransportsKey = "audioServiceTransports";
+char *const SDLControlFrameVideoServiceTransportsKey = "videoServiceTransports";
+char *const SDLControlFrameAuthTokenKey = "authToken";
char *const SDLControlFrameRejectedParams = "rejectedParams";
+char *const SDLControlFrameReasonKey = "reason";
char *const SDLControlFrameVideoProtocolKey = "videoProtocol";
char *const SDLControlFrameVideoCodecKey = "videoCodec";
char *const SDLControlFrameHeightKey = "height";
char *const SDLControlFrameWidthKey = "width";
-char *const SDLControlFrameSecondaryTransportsKey = "secondaryTransports";
-char *const SDLControlFrameAudioServiceTransportsKey = "audioServiceTransports";
-char *const SDLControlFrameVideoServiceTransportsKey = "videoServiceTransports";
char *const SDLControlFrameTCPIPAddressKey = "tcpIpAddress";
char *const SDLControlFrameTCPPortKey = "tcpPort";
diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h b/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h
index ba339bdc2..295204aac 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h
+++ b/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h
@@ -20,6 +20,9 @@ NS_ASSUME_NONNULL_BEGIN
/// Max transport unit to be used for this service
@property (assign, nonatomic, readonly) int64_t mtu;
+/// A token used to authenticate a websocket connection on app activation.
+@property (copy, nonatomic, readonly, nullable) NSString *authToken;
+
/// The negotiated version of the protocol. Must be in the format "Major.Minor.Patch"
@property (copy, nonatomic, readonly, nullable) NSString *protocolVersion;
@@ -32,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
/** List of transports that are allowed to carry video service. The values can be either 1 (primary transport) or 2 (secondary transport) and are listed in preferred order. */
@property (copy, nonatomic, readonly, nullable) NSArray<NSNumber *> *videoServiceTransports;
-- (instancetype)initWithHashId:(int32_t)hashId mtu:(int64_t)mtu protocolVersion:(nullable NSString *)protocolVersion secondaryTransports:(nullable NSArray<NSString *> *)secondaryTransports audioServiceTransports:(nullable NSArray<NSNumber *> *)audioServiceTransports videoServiceTransports:(nullable NSArray<NSNumber *> *)videoServiceTransports;
+- (instancetype)initWithHashId:(int32_t)hashId mtu:(int64_t)mtu authToken:(nullable NSString *)authToken protocolVersion:(nullable NSString *)protocolVersion secondaryTransports:(nullable NSArray<NSString *> *)secondaryTransports audioServiceTransports:(nullable NSArray<NSNumber *> *)audioServiceTransports videoServiceTransports:(nullable NSArray<NSNumber *> *)videoServiceTransports;
@end
diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m b/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m
index 536ecfc86..b9e54d9a3 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m
+++ b/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m
@@ -18,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (assign, nonatomic, readwrite) int32_t hashId;
@property (assign, nonatomic, readwrite) int64_t mtu;
+@property (copy, nonatomic, readwrite, nullable) NSString *authToken;
@property (copy, nonatomic, readwrite, nullable) NSString *protocolVersion;
@property (copy, nonatomic, readwrite, nullable) NSArray<NSString *> *secondaryTransports;
@property (copy, nonatomic, readwrite, nullable) NSArray<NSNumber *> *audioServiceTransports;
@@ -30,6 +31,7 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithHashId:(int32_t)hashId
mtu:(int64_t)mtu
+ authToken:(nullable NSString *)authToken
protocolVersion:(nullable NSString *)protocolVersion
secondaryTransports:(nullable NSArray<NSString *> *)secondaryTransports
audioServiceTransports:(nullable NSArray<NSNumber *> *)audioServiceTransports
@@ -39,6 +41,7 @@ NS_ASSUME_NONNULL_BEGIN
_hashId = hashId;
_mtu = mtu;
+ _authToken = authToken;
_protocolVersion = protocolVersion;
_secondaryTransports = secondaryTransports;
_audioServiceTransports = audioServiceTransports;
@@ -79,6 +82,10 @@ NS_ASSUME_NONNULL_BEGIN
bson_object_put_int64(&payloadObject, SDLControlFrameMTUKey, self.mtu);
}
+ if (self.authToken != nil) {
+ bson_object_put_string(&payloadObject, SDLControlFrameAuthTokenKey, (char *)self.authToken.UTF8String);
+ }
+
if (self.protocolVersion != nil) {
bson_object_put_string(&payloadObject, SDLControlFrameProtocolVersionKey, (char *)self.protocolVersion.UTF8String);
}
@@ -96,7 +103,6 @@ NS_ASSUME_NONNULL_BEGIN
}
[self sdl_addServiceTransports:&payloadObject fromArray:self.audioServiceTransports forKey:SDLControlFrameAudioServiceTransportsKey];
-
[self sdl_addServiceTransports:&payloadObject fromArray:self.videoServiceTransports forKey:SDLControlFrameVideoServiceTransportsKey];
BytePtr bsonData = bson_object_to_bytes(&payloadObject);
@@ -113,9 +119,14 @@ NS_ASSUME_NONNULL_BEGIN
self.hashId = bson_object_get_int32(&payloadObject, SDLControlFrameHashIdKey);
self.mtu = bson_object_get_int64(&payloadObject, SDLControlFrameMTUKey);
- char *utf8String = bson_object_get_string(&payloadObject, SDLControlFrameProtocolVersionKey);
- if (utf8String != NULL) {
- self.protocolVersion = [NSString stringWithUTF8String:utf8String];
+ char *protocolVersionUTF8String = bson_object_get_string(&payloadObject, SDLControlFrameProtocolVersionKey);
+ if (protocolVersionUTF8String != NULL) {
+ self.protocolVersion = [NSString stringWithUTF8String:protocolVersionUTF8String];
+ }
+
+ char *authTokenUTF8String = bson_object_get_string(&payloadObject, SDLControlFrameAuthTokenKey);
+ if (authTokenUTF8String != NULL) {
+ self.authToken = [NSString stringWithUTF8String:authTokenUTF8String];
}
BsonArray *arrayObject = bson_object_get_array(&payloadObject, SDLControlFrameSecondaryTransportsKey);
@@ -123,15 +134,14 @@ NS_ASSUME_NONNULL_BEGIN
NSMutableArray<NSString *> *secondaryTransports = [NSMutableArray array];
size_t index = 0;
- while ((utf8String = bson_array_get_string(arrayObject, index)) != NULL) {
- [secondaryTransports addObject:[NSString stringWithUTF8String:utf8String]];
+ while ((protocolVersionUTF8String = bson_array_get_string(arrayObject, index)) != NULL) {
+ [secondaryTransports addObject:[NSString stringWithUTF8String:protocolVersionUTF8String]];
index++;
}
self.secondaryTransports = [secondaryTransports copy];
}
self.audioServiceTransports = [self sdl_getServiceTransports:&payloadObject forKey:SDLControlFrameAudioServiceTransportsKey];
-
self.videoServiceTransports = [self sdl_getServiceTransports:&payloadObject forKey:SDLControlFrameVideoServiceTransportsKey];
bson_object_deinitialize(&payloadObject);
@@ -179,7 +189,7 @@ NS_ASSUME_NONNULL_BEGIN
}
- (NSString *)description {
- return [NSString stringWithFormat:@"<%@>: Protocol Version: %@, hash id: %d, MTU: %lld, secondary transports: %@, transports for audio service: %@, transports for video service: %@", NSStringFromClass(self.class), self.protocolVersion, self.hashId, self.mtu, self.secondaryTransports, self.audioServiceTransports, self.videoServiceTransports];
+ return [NSString stringWithFormat:@"<%@>: Protocol Version: %@, hash id: %d, MTU: %lld, auth token: %@, secondary transports: %@, transports for audio service: %@, transports for video service: %@", NSStringFromClass(self.class), self.protocolVersion, self.hashId, self.mtu, self.authToken, self.secondaryTransports, self.audioServiceTransports, self.videoServiceTransports];
}
@end
diff --git a/SmartDeviceLink/SDLFunctionID.m b/SmartDeviceLink/SDLFunctionID.m
index 805683a57..d90390132 100644
--- a/SmartDeviceLink/SDLFunctionID.m
+++ b/SmartDeviceLink/SDLFunctionID.m
@@ -82,6 +82,8 @@ NS_ASSUME_NONNULL_BEGIN
@47: SDLRPCFunctionNameUnsubscribeWayPoints,
@48: SDLRPCFunctionNameGetSystemCapability,
@49: SDLRPCFunctionNameSendHapticData,
+ @50: SDLRPCFunctionNameSetCloudAppProperties,
+ @51: SDLRPCFunctionNameGetCloudAppProperties,
@52: SDLRPCFunctionNamePublishAppService,
@53: SDLRPCFunctionNameGetAppServiceData,
@54: SDLRPCFunctionNameGetFile,
diff --git a/SmartDeviceLink/SDLGetCloudAppProperties.h b/SmartDeviceLink/SDLGetCloudAppProperties.h
new file mode 100644
index 000000000..9103b3a91
--- /dev/null
+++ b/SmartDeviceLink/SDLGetCloudAppProperties.h
@@ -0,0 +1,35 @@
+//
+// SDLGetCloudAppProperties.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCRequest.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * RPC used to get the current properties of a cloud application.
+ */
+@interface SDLGetCloudAppProperties : SDLRPCRequest
+
+/**
+ * Convenience init.
+ *
+ * @param appID The id of the cloud app
+ * @return A SDLGetCloudAppProperties object
+ */
+- (instancetype)initWithAppID:(NSString *)appID;
+
+/**
+ * The id of the cloud app.
+ *
+ * String, Required, maxlength="100"
+ */
+@property (strong, nonatomic) NSString *appID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetCloudAppProperties.m b/SmartDeviceLink/SDLGetCloudAppProperties.m
new file mode 100644
index 000000000..5d000d716
--- /dev/null
+++ b/SmartDeviceLink/SDLGetCloudAppProperties.m
@@ -0,0 +1,46 @@
+//
+// SDLGetCloudAppProperties.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLGetCloudAppProperties.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLGetCloudAppProperties
+
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameGetCloudAppProperties]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithAppID:(NSString *)appID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.appID = appID;
+
+ return self;
+}
+
+- (void)setAppID:(NSString *)appID {
+ [parameters sdl_setObject:appID forName:SDLRPCParameterNameAppId];
+}
+
+- (NSString *)appID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameAppId];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h b/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h
new file mode 100644
index 000000000..356bd32e0
--- /dev/null
+++ b/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h
@@ -0,0 +1,38 @@
+//
+// SDLGetCloudAppPropertiesResponse.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCResponse.h"
+
+@class SDLCloudAppProperties;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * The response to GetCloudAppProperties
+ */
+@interface SDLGetCloudAppPropertiesResponse : SDLRPCResponse
+
+/**
+ * Convenience init.
+ *
+ * @param properties The requested cloud application properties
+ * @return A SDLGetCloudAppPropertiesResponse object
+ */
+- (instancetype)initWithProperties:(SDLCloudAppProperties *)properties;
+
+/**
+ * The requested cloud application properties.
+ *
+ * SDLCloudAppProperties, Optional
+ */
+@property (nullable, strong, nonatomic) SDLCloudAppProperties *properties;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m b/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m
new file mode 100644
index 000000000..ae71ab73c
--- /dev/null
+++ b/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m
@@ -0,0 +1,48 @@
+//
+// SDLGetCloudAppPropertiesResponse.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLGetCloudAppPropertiesResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLCloudAppProperties.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLGetCloudAppPropertiesResponse
+
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameGetCloudAppProperties]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithProperties:(SDLCloudAppProperties *)properties {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.properties = properties;
+
+ return self;
+}
+
+- (void)setProperties:(nullable SDLCloudAppProperties *)properties {
+ [parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties];
+}
+
+- (nullable SDLCloudAppProperties *)properties {
+ return [parameters sdl_objectForName:SDLRPCParameterNameProperties ofClass:SDLCloudAppProperties.class];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleData.h b/SmartDeviceLink/SDLGetVehicleData.h
index 82b3f7ce4..b9e0fca30 100644
--- a/SmartDeviceLink/SDLGetVehicleData.h
+++ b/SmartDeviceLink/SDLGetVehicleData.h
@@ -47,7 +47,7 @@ NS_ASSUME_NONNULL_BEGIN
* @param wiperStatus Get wiperStatus data
* @return A SDLGetVehicleData object
*/
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
/**
* Convenience init for getting data for all possible vehicle data items.
@@ -83,7 +83,44 @@ NS_ASSUME_NONNULL_BEGIN
* @param wiperStatus Get wiperStatus data
* @return A SDLGetVehicleData object
*/
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus;
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
+
+/**
+ * Convenience init for getting data for all possible vehicle data items.
+ *
+ * @param accelerationPedalPosition Get accelerationPedalPosition data
+ * @param airbagStatus Get airbagStatus data
+ * @param beltStatus Get beltStatus data
+ * @param bodyInformation Get bodyInformation data
+ * @param cloudAppVehicleID Get cloudAppVehicleID data
+ * @param clusterModeStatus Get clusterModeStatus data
+ * @param deviceStatus Get deviceStatus data
+ * @param driverBraking Get driverBraking data
+ * @param eCallInfo Get eCallInfo data
+ * @param electronicParkBrakeStatus Get electronicParkBrakeStatus data
+ * @param emergencyEvent Get emergencyEvent data
+ * @param engineOilLife Get engineOilLife data
+ * @param engineTorque Get engineTorque data
+ * @param externalTemperature Get externalTemperature data
+ * @param fuelLevel Get fuelLevel data
+ * @param fuelLevelState Get fuelLevelState data
+ * @param fuelRange Get fuelRange data
+ * @param gps Get gps data
+ * @param headLampStatus Get headLampStatus data
+ * @param instantFuelConsumption Get instantFuelConsumption data
+ * @param myKey Get myKey data
+ * @param odometer Get odometer data
+ * @param prndl Get prndl data
+ * @param rpm Get rpm data
+ * @param speed Get speed data
+ * @param steeringWheelAngle Get steeringWheelAngle data
+ * @param tirePressure Get tirePressure data
+ * @param turnSignal Get turnSignal data
+ * @param vin Get vin data
+ * @param wiperStatus Get wiperStatus data
+ * @return A SDLGetVehicleData object
+ */
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus;
/**
* A boolean value. If true, requests GPS data.
@@ -230,6 +267,11 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *turnSignal;
+/**
+ A boolean value. If true, requests the Cloud App Vehicle ID.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *cloudAppVehicleID;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleData.m b/SmartDeviceLink/SDLGetVehicleData.m
index 8ef6a5cd9..9f1fe5de6 100644
--- a/SmartDeviceLink/SDLGetVehicleData.m
+++ b/SmartDeviceLink/SDLGetVehicleData.m
@@ -23,6 +23,10 @@ NS_ASSUME_NONNULL_BEGIN
}
- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus {
+ return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation cloudAppVehicleID:NO clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:electronicParkBrakeStatus emergencyEvent:emergencyEvent engineOilLife:engineOilLife engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:fuelRange gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:turnSignal vin:vin wiperStatus:wiperStatus];
+}
+
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus {
self = [self init];
if (!self) {
return nil;
@@ -32,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
self.airbagStatus = @(airbagStatus);
self.beltStatus = @(beltStatus);
self.bodyInformation = @(bodyInformation);
+ self.cloudAppVehicleID = @(cloudAppVehicleID);
self.clusterModeStatus = @(clusterModeStatus);
self.deviceStatus = @(deviceStatus);
self.driverBraking = @(driverBraking);
@@ -293,6 +298,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal];
}
+- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleDataResponse.h b/SmartDeviceLink/SDLGetVehicleDataResponse.h
index 689a750f2..78801ae55 100644
--- a/SmartDeviceLink/SDLGetVehicleDataResponse.h
+++ b/SmartDeviceLink/SDLGetVehicleDataResponse.h
@@ -181,6 +181,10 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) SDLTurnSignal turnSignal;
+/**
+ The cloud app vehicle ID
+ */
+@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
@end
diff --git a/SmartDeviceLink/SDLGetVehicleDataResponse.m b/SmartDeviceLink/SDLGetVehicleDataResponse.m
index b9e64c0e8..6e3a9c6f0 100644
--- a/SmartDeviceLink/SDLGetVehicleDataResponse.m
+++ b/SmartDeviceLink/SDLGetVehicleDataResponse.m
@@ -262,6 +262,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal];
}
+- (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID {
+ [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSString *)cloudAppVehicleID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGlobals.m b/SmartDeviceLink/SDLGlobals.m
index 25f557206..735139b22 100644
--- a/SmartDeviceLink/SDLGlobals.m
+++ b/SmartDeviceLink/SDLGlobals.m
@@ -16,8 +16,8 @@
NS_ASSUME_NONNULL_BEGIN
// VERSION DEPENDENT CODE
-NSString *const SDLMaxProxyProtocolVersion = @"5.1.0";
-NSString *const SDLMaxProxyRPCVersion = @"5.0.0";
+NSString *const SDLMaxProxyProtocolVersion = @"5.2.0";
+NSString *const SDLMaxProxyRPCVersion = @"5.1.0";
NSUInteger const SDLDefaultMTUSize = UINT32_MAX;
NSUInteger const SDLV1MTUSize = 1024;
diff --git a/SmartDeviceLink/SDLHybridAppPreference.h b/SmartDeviceLink/SDLHybridAppPreference.h
new file mode 100644
index 000000000..e07987e78
--- /dev/null
+++ b/SmartDeviceLink/SDLHybridAppPreference.h
@@ -0,0 +1,29 @@
+//
+// SDLHybridAppPreference.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration for the user's preference of which app type to use when both are available.
+ */
+typedef SDLEnum SDLHybridAppPreference SDL_SWIFT_ENUM;
+
+/*
+ * App preference of mobile.
+ */
+extern SDLHybridAppPreference const SDLHybridAppPreferenceMobile;
+
+/*
+ * App preference of cloud.
+ */
+extern SDLHybridAppPreference const SDLHybridAppPreferenceCloud;
+
+/*
+ * App preference of both. Allows both the mobile and the cloud versions of the app to attempt to connect at the same time, however the first app that is registered is the one that is allowed to stay registered.
+ */
+extern SDLHybridAppPreference const SDLHybridAppPreferenceBoth;
diff --git a/SmartDeviceLink/SDLHybridAppPreference.m b/SmartDeviceLink/SDLHybridAppPreference.m
new file mode 100644
index 000000000..963bc4172
--- /dev/null
+++ b/SmartDeviceLink/SDLHybridAppPreference.m
@@ -0,0 +1,13 @@
+//
+// SDLHybridAppPreference.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLHybridAppPreference.h"
+
+SDLHybridAppPreference const SDLHybridAppPreferenceMobile = @"MOBILE";
+SDLHybridAppPreference const SDLHybridAppPreferenceCloud = @"CLOUD";
+SDLHybridAppPreference const SDLHybridAppPreferenceBoth = @"BOTH";
diff --git a/SmartDeviceLink/SDLLifecycleManager.h b/SmartDeviceLink/SDLLifecycleManager.h
index 16d941e0e..b3a58e35c 100644
--- a/SmartDeviceLink/SDLLifecycleManager.h
+++ b/SmartDeviceLink/SDLLifecycleManager.h
@@ -63,6 +63,7 @@ typedef void (^SDLManagerReadyBlock)(BOOL success, NSError *_Nullable error);
@property (copy, nonatomic, readonly) SDLConfiguration *configuration;
@property (weak, nonatomic, nullable) id<SDLManagerDelegate> delegate;
+@property (strong, nonatomic, readonly, nullable) NSString *authToken;
@property (strong, nonatomic) SDLFileManager *fileManager;
@property (strong, nonatomic) SDLPermissionManager *permissionManager;
diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m
index 59319a3fa..e40159038 100644
--- a/SmartDeviceLink/SDLLifecycleManager.m
+++ b/SmartDeviceLink/SDLLifecycleManager.m
@@ -78,6 +78,7 @@ SDLLifecycleState *const SDLLifecycleStateReady = @"Ready";
// Readonly public properties
@property (copy, nonatomic, readwrite) SDLConfiguration *configuration;
+@property (strong, nonatomic, readwrite, nullable) NSString *authToken;
@property (strong, nonatomic, readwrite) SDLNotificationDispatcher *notificationDispatcher;
@property (strong, nonatomic, readwrite) SDLResponseDispatcher *responseDispatcher;
@property (strong, nonatomic, readwrite) SDLStateMachine *lifecycleStateMachine;
@@ -678,6 +679,14 @@ SDLLifecycleState *const SDLLifecycleStateReady = @"Ready";
}
}
+/**
+ * Gets the authentication token returned by the `StartServiceACK` header
+ *
+ * @return An authentication token
+ */
+- (nullable NSString *)authToken {
+ return self.proxy.protocol.authToken;
+}
#pragma mark SDL notification observers
diff --git a/SmartDeviceLink/SDLManager.h b/SmartDeviceLink/SDLManager.h
index b0a0fbe08..91aece5e5 100644
--- a/SmartDeviceLink/SDLManager.h
+++ b/SmartDeviceLink/SDLManager.h
@@ -85,6 +85,11 @@ typedef void (^SDLManagerReadyBlock)(BOOL success, NSError *_Nullable error);
@property (strong, nonatomic, readonly, nullable) SDLRegisterAppInterfaceResponse *registerResponse;
/**
+ * The auth token, if received. This should be used to log into a user account. Primarily used for cloud apps with companion app stores.
+ */
+@property (strong, nonatomic, readonly, nullable) NSString *authToken;
+
+/**
* The manager's delegate.
*/
@property (weak, nonatomic, nullable) id<SDLManagerDelegate> delegate;
diff --git a/SmartDeviceLink/SDLManager.m b/SmartDeviceLink/SDLManager.m
index c2e5f5c0f..2350a2670 100644
--- a/SmartDeviceLink/SDLManager.m
+++ b/SmartDeviceLink/SDLManager.m
@@ -97,6 +97,10 @@ NS_ASSUME_NONNULL_BEGIN
return self.lifecycleManager.registerResponse;
}
+-(nullable NSString *)authToken {
+ return self.lifecycleManager.authToken;
+}
+
- (nullable id<SDLManagerDelegate>)delegate {
return self.lifecycleManager.delegate;
}
diff --git a/SmartDeviceLink/SDLNotificationConstants.h b/SmartDeviceLink/SDLNotificationConstants.h
index 22ef88aa4..e75437551 100644
--- a/SmartDeviceLink/SDLNotificationConstants.h
+++ b/SmartDeviceLink/SDLNotificationConstants.h
@@ -132,6 +132,7 @@ extern SDLNotificationName const SDLDidReceiveDialNumberResponse;
extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse;
extern SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse;
extern SDLNotificationName const SDLDidReceiveGenericResponse;
+extern SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesResponse;
extern SDLNotificationName const SDLDidReceiveGetAppServiceDataResponse;
extern SDLNotificationName const SDLDidReceiveGetDTCsResponse;
extern SDLNotificationName const SDLDidReceiveGetFileResponse;
@@ -152,6 +153,7 @@ extern SDLNotificationName const SDLDidReceiveScrollableMessageResponse;
extern SDLNotificationName const SDLDidReceiveSendHapticDataResponse;
extern SDLNotificationName const SDLDidReceiveSendLocationResponse;
extern SDLNotificationName const SDLDidReceiveSetAppIconResponse;
+extern SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesResponse;
extern SDLNotificationName const SDLDidReceiveSetDisplayLayoutResponse;
extern SDLNotificationName const SDLDidReceiveSetGlobalPropertiesResponse;
extern SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataResponse;
@@ -190,6 +192,7 @@ extern SDLNotificationName const SDLDidReceiveDialNumberRequest;
extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest;
extern SDLNotificationName const SDLDidReceiveEndAudioPassThruRequest;
extern SDLNotificationName const SDLDidReceiveGetAppServiceDataRequest;
+extern SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesRequest;
extern SDLNotificationName const SDLDidReceiveGetDTCsRequest;
extern SDLNotificationName const SDLDidReceiveGetFileRequest;
extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataRequest;
@@ -209,6 +212,7 @@ extern SDLNotificationName const SDLDidReceiveScrollableMessageRequest;
extern SDLNotificationName const SDLDidReceiveSendHapticDataRequest;
extern SDLNotificationName const SDLDidReceiveSendLocationRequest;
extern SDLNotificationName const SDLDidReceiveSetAppIconRequest;
+extern SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesRequest;
extern SDLNotificationName const SDLDidReceiveSetDisplayLayoutRequest;
extern SDLNotificationName const SDLDidReceiveSetGlobalPropertiesRequest;
extern SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataRequest;
diff --git a/SmartDeviceLink/SDLNotificationConstants.m b/SmartDeviceLink/SDLNotificationConstants.m
index fceead9a2..2f88aeed8 100644
--- a/SmartDeviceLink/SDLNotificationConstants.m
+++ b/SmartDeviceLink/SDLNotificationConstants.m
@@ -40,6 +40,7 @@ SDLNotificationName const SDLDidReceiveDialNumberResponse = @"com.sdl.response.d
SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse = @"com.sdl.response.encodedSyncPData";
SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse = @"com.sdl.response.endAudioPassThru";
SDLNotificationName const SDLDidReceiveGenericResponse = @"com.sdl.response.generic";
+SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesResponse = @"com.sdl.response.getCloudAppProperties";
SDLNotificationName const SDLDidReceiveGetAppServiceDataResponse = @"com.sdl.response.getAppServiceData";
SDLNotificationName const SDLDidReceiveGetDTCsResponse = @"com.sdl.response.getDTCs";
SDLNotificationName const SDLDidReceiveGetFileResponse = @"com.sdl.response.getFile";
@@ -60,6 +61,7 @@ SDLNotificationName const SDLDidReceiveScrollableMessageResponse = @"com.sdl.res
SDLNotificationName const SDLDidReceiveSendHapticDataResponse = @"com.sdl.response.sendHapticData";
SDLNotificationName const SDLDidReceiveSendLocationResponse = @"com.sdl.response.sendLocation";
SDLNotificationName const SDLDidReceiveSetAppIconResponse = @"com.sdl.response.setAppIcon";
+SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesResponse = @"com.sdl.response.setCloudAppProperties";
SDLNotificationName const SDLDidReceiveSetDisplayLayoutResponse = @"com.sdl.response.setDisplayLayout";
SDLNotificationName const SDLDidReceiveSetGlobalPropertiesResponse = @"com.sdl.response.setGlobalProperties";
SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataResponse = @"com.sdl.response.setInteriorVehicleData";
@@ -95,6 +97,7 @@ SDLNotificationName const SDLDidReceiveDialNumberRequest = @"com.sdl.request.dia
SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest = @"com.sdl.request.encodedSyncPData";
SDLNotificationName const SDLDidReceiveEndAudioPassThruRequest = @"com.sdl.request.endAudioPassThru";
SDLNotificationName const SDLDidReceiveGetAppServiceDataRequest = @"com.sdl.request.getAppServiceData";
+SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesRequest = @"com.sdl.request.getCloudAppProperties";
SDLNotificationName const SDLDidReceiveGetDTCsRequest = @"com.sdl.request.getDTCs";
SDLNotificationName const SDLDidReceiveGetFileRequest = @"com.sdl.request.getFile";
SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataRequest = @"com.sdl.request.getInteriorVehicleData";
@@ -114,6 +117,7 @@ SDLNotificationName const SDLDidReceiveScrollableMessageRequest = @"com.sdl.requ
SDLNotificationName const SDLDidReceiveSendHapticDataRequest = @"com.sdl.request.sendHapticData";
SDLNotificationName const SDLDidReceiveSendLocationRequest = @"com.sdl.request.sendLocation";
SDLNotificationName const SDLDidReceiveSetAppIconRequest = @"com.sdl.request.setAppIcon";
+SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesRequest = @"com.sdl.request.setCloudAppProperties";
SDLNotificationName const SDLDidReceiveSetDisplayLayoutRequest = @"com.sdl.request.setDisplayLayout";
SDLNotificationName const SDLDidReceiveSetGlobalPropertiesRequest = @"com.sdl.request.setGlobalProperties";
SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataRequest = @"com.sdl.request.setInteriorVehicleData";
@@ -177,6 +181,7 @@ SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notifica
SDLDidReceiveEncodedSyncPDataResponse,
SDLDidReceiveEndAudioPassThruResponse,
SDLDidReceiveGenericResponse,
+ SDLDidReceiveGetCloudAppPropertiesResponse,
SDLDidReceiveGetAppServiceDataResponse,
SDLDidReceiveGetDTCsResponse,
SDLDidReceiveGetFileResponse,
@@ -197,6 +202,7 @@ SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notifica
SDLDidReceiveSendHapticDataResponse,
SDLDidReceiveSendLocationResponse,
SDLDidReceiveSetAppIconResponse,
+ SDLDidReceiveSetCloudAppPropertiesResponse,
SDLDidReceiveSetDisplayLayoutResponse,
SDLDidReceiveSetGlobalPropertiesResponse,
SDLDidReceiveSetInteriorVehicleDataResponse,
diff --git a/SmartDeviceLink/SDLNotificationDispatcher.m b/SmartDeviceLink/SDLNotificationDispatcher.m
index 1de318ca7..809f3170f 100644
--- a/SmartDeviceLink/SDLNotificationDispatcher.m
+++ b/SmartDeviceLink/SDLNotificationDispatcher.m
@@ -159,6 +159,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCResponseNotification:SDLDidReceiveGenericResponse response:response];
}
+- (void)onGetCloudAppPropertiesResponse:(SDLGetCloudAppPropertiesResponse *)response {
+ [self postRPCResponseNotification:SDLDidReceiveGetCloudAppPropertiesResponse response:response];
+}
+
- (void)onGetAppServiceDataResponse:(SDLGetAppServiceDataResponse *)response {
[self postRPCResponseNotification:SDLDidReceiveGetAppServiceDataResponse response:response];
}
@@ -239,6 +243,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCResponseNotification:SDLDidReceiveSetAppIconResponse response:response];
}
+- (void)onSetCloudAppPropertiesResponse:(SDLSetCloudAppPropertiesResponse *)response {
+ [self postRPCResponseNotification:SDLDidReceiveSetCloudAppPropertiesResponse response:response];
+}
+
- (void)onSetDisplayLayoutResponse:(SDLSetDisplayLayoutResponse *)response {
[self postRPCResponseNotification:SDLDidReceiveSetDisplayLayoutResponse response:response];
}
@@ -373,6 +381,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCRequestNotification:SDLDidReceiveGetAppServiceDataRequest request:request];
}
+- (void)onGetCloudAppProperties:(SDLGetCloudAppProperties *)request {
+ [self postRPCRequestNotification:SDLDidReceiveGetCloudAppPropertiesRequest request:request];
+}
+
- (void)onGetDTCs:(SDLGetDTCs *)request {
[self postRPCRequestNotification:SDLDidReceiveGetDTCsRequest request:request];
}
@@ -449,6 +461,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCRequestNotification:SDLDidReceiveSetAppIconRequest request:request];
}
+- (void)onSetCloudAppProperties:(SDLSetCloudAppProperties *)request {
+ [self postRPCRequestNotification:SDLDidReceiveSetCloudAppPropertiesRequest request:request];
+}
+
- (void)onSetDisplayLayout:(SDLSetDisplayLayout *)request {
[self postRPCRequestNotification:SDLDidReceiveSetDisplayLayoutRequest request:request];
}
diff --git a/SmartDeviceLink/SDLOnVehicleData.h b/SmartDeviceLink/SDLOnVehicleData.h
index f4449c070..463245d30 100644
--- a/SmartDeviceLink/SDLOnVehicleData.h
+++ b/SmartDeviceLink/SDLOnVehicleData.h
@@ -181,6 +181,11 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nullable, strong, nonatomic) SDLTurnSignal turnSignal;
+/**
+ The cloud app vehicle ID
+ */
+@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnVehicleData.m b/SmartDeviceLink/SDLOnVehicleData.m
index 64d1c8595..63ce31db1 100644
--- a/SmartDeviceLink/SDLOnVehicleData.m
+++ b/SmartDeviceLink/SDLOnVehicleData.m
@@ -262,6 +262,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal];
}
+- (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID {
+ [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSString *)cloudAppVehicleID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLProtocol.h b/SmartDeviceLink/SDLProtocol.h
index e4d0e44fc..82777f167 100644
--- a/SmartDeviceLink/SDLProtocol.h
+++ b/SmartDeviceLink/SDLProtocol.h
@@ -56,6 +56,11 @@ extern NSString *const SDLProtocolSecurityErrorDomain;
*/
@property (nonatomic, copy) NSString *appId;
+/**
+ * The auth token, if any, returned with the `StartServiceACK` for the RPC service from the module.
+ */
+@property (strong, nonatomic, readonly, nullable) NSString *authToken;
+
#pragma mark - Sending
/**
diff --git a/SmartDeviceLink/SDLProtocol.m b/SmartDeviceLink/SDLProtocol.m
index a95627222..2e95ccf3c 100644
--- a/SmartDeviceLink/SDLProtocol.m
+++ b/SmartDeviceLink/SDLProtocol.m
@@ -49,6 +49,9 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic) NSMutableDictionary<SDLServiceTypeBox *, SDLProtocolHeader *> *serviceHeaders;
@property (assign, nonatomic) int32_t hashId;
+// Readonly public properties
+@property (strong, nonatomic, readwrite, nullable) NSString *authToken;
+
@end
@@ -482,7 +485,11 @@ NS_ASSUME_NONNULL_BEGIN
if (startServiceACKPayload.hashId != SDLControlFrameInt32NotFound) {
self.hashId = startServiceACKPayload.hashId;
}
+
[SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion = (startServiceACKPayload.protocolVersion != nil) ? [SDLVersion versionWithString:startServiceACKPayload.protocolVersion] : [SDLVersion versionWithMajor:startServiceACK.header.version minor:0 patch:0];
+
+ self.authToken = [SDLGlobals.sharedGlobals.maxHeadUnitProtocolVersion isGreaterThanOrEqualToVersion:[[SDLVersion alloc] initWithMajor:5 minor:2 patch:0]] ? startServiceACKPayload.authToken : nil;
+
// TODO: Hash id?
} break;
default:
diff --git a/SmartDeviceLink/SDLProxy.m b/SmartDeviceLink/SDLProxy.m
index d09f0d694..49788793a 100644
--- a/SmartDeviceLink/SDLProxy.m
+++ b/SmartDeviceLink/SDLProxy.m
@@ -513,7 +513,9 @@ static float DefaultConnectionTimeout = 45.0;
if ([requestType isEqualToEnum:SDLRequestTypeProprietary]) {
[self handleSystemRequestProprietary:systemRequest];
} else if ([requestType isEqualToEnum:SDLRequestTypeLockScreenIconURL]) {
- [self handleSystemRequestLockScreenIconURL:systemRequest];
+ [self sdl_handleSystemRequestLockScreenIconURL:systemRequest];
+ } else if ([requestType isEqualToEnum:SDLRequestTypeIconURL]) {
+ [self sdl_handleSystemRequestIconURL:systemRequest];
} else if ([requestType isEqualToEnum:SDLRequestTypeHTTP]) {
[self sdl_handleSystemRequestHTTP:systemRequest];
} else if ([requestType isEqualToEnum:SDLRequestTypeLaunchApp]) {
@@ -700,7 +702,7 @@ static float DefaultConnectionTimeout = 45.0;
}];
}
-- (void)handleSystemRequestLockScreenIconURL:(SDLOnSystemRequest *)request {
+- (void)sdl_handleSystemRequestLockScreenIconURL:(SDLOnSystemRequest *)request {
__weak typeof(self) weakSelf = self;
[self sdl_sendDataTaskWithURL:[NSURL URLWithString:request.url]
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
@@ -715,6 +717,26 @@ static float DefaultConnectionTimeout = 45.0;
}];
}
+- (void)sdl_handleSystemRequestIconURL:(SDLOnSystemRequest *)request {
+ __weak typeof(self) weakSelf = self;
+ [self sdl_sendDataTaskWithURL:[NSURL URLWithString:request.url]
+ completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (error != nil) {
+ SDLLogW(@"OnSystemRequest (icon url) HTTP download task failed: %@", error.localizedDescription);
+ return;
+ } else if (data.length == 0) {
+ SDLLogW(@"OnSystemRequest (icon url) HTTP download task failed to get the cloud app icon image data");
+ return;
+ }
+
+ SDLSystemRequest *iconURLSystemRequest = [[SDLSystemRequest alloc] initWithType:SDLRequestTypeIconURL fileName:request.url];
+ iconURLSystemRequest.bulkData = data;
+
+ [strongSelf sendRPC:iconURLSystemRequest];
+ }];
+}
+
- (void)sdl_handleSystemRequestHTTP:(SDLOnSystemRequest *)request {
if (request.bulkData.length == 0) {
// TODO: not sure how we want to handle http requests that don't have bulk data (maybe as GET?)
diff --git a/SmartDeviceLink/SDLProxyListener.h b/SmartDeviceLink/SDLProxyListener.h
index c04fe8648..7625d46a2 100644
--- a/SmartDeviceLink/SDLProxyListener.h
+++ b/SmartDeviceLink/SDLProxyListener.h
@@ -34,6 +34,8 @@
@class SDLEndAudioPassThru;
@class SDLEndAudioPassThruResponse;
@class SDLGenericResponse;
+@class SDLGetCloudAppProperties;
+@class SDLGetCloudAppPropertiesResponse;
@class SDLGetAppServiceData;
@class SDLGetAppServiceDataResponse;
@class SDLGetDTCs;
@@ -97,6 +99,8 @@
@class SDLSendLocationResponse;
@class SDLSetAppIcon;
@class SDLSetAppIconResponse;
+@class SDLSetCloudAppProperties;
+@class SDLSetCloudAppPropertiesResponse;
@class SDLSetDisplayLayout;
@class SDLSetDisplayLayoutResponse;
@class SDLSetGlobalProperties;
@@ -285,6 +289,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onGetAppServiceDataResponse:(SDLGetAppServiceDataResponse *)response;
/**
+ * Called when a GetCloudAppPropertiesResponse Response is received from Core
+ *
+ * @param response A SDLGetCloudAppPropertiesResponse object
+ */
+- (void)onGetCloudAppPropertiesResponse:(SDLGetCloudAppPropertiesResponse *)response;
+
+/**
* Called when a Get DTCs Response is received from Core
*
* @param response A SDLGetDTCsResponse object
@@ -425,6 +436,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onSetAppIconResponse:(SDLSetAppIconResponse *)response;
/**
+ * Called when a SetCloudAppPropertiesResponse is received from Core
+ *
+ * @param response A SDLSetCloudAppPropertiesResponse object
+ */
+- (void)onSetCloudAppPropertiesResponse:(SDLSetCloudAppPropertiesResponse *)response;
+
+/**
* Called when a Set Display Layout Response is received from Core
*
* @param response A SDLSetDisplayLayoutResponse object
@@ -544,6 +562,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onUnsubscribeWayPointsResponse:(SDLUnsubscribeWayPointsResponse *)response;
#pragma mark - Requests
+
/**
* Called when a `AddCommand` request is received from Core
*
@@ -657,6 +676,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onGetAppServiceData:(SDLGetAppServiceData *)request;
/**
+ * Called when a `GetCloudAppProperties` request is received from Core
+ *
+ * @param request A SDLGetCloudAppProperties object
+ */
+- (void)onGetCloudAppProperties:(SDLGetCloudAppProperties *)request;
+
+/**
* Called when a `GetDTCs` request is received from Core
*
* @param request A SDLGetDTCs object
@@ -790,6 +816,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)onSetAppIcon:(SDLSetAppIcon *)request;
/**
+ * Called when a `SetCloudAppProperties` request is received from Core
+ *
+ * @param request A SDLSetCloudAppProperties object
+ */
+- (void)onSetCloudAppProperties:(SDLSetCloudAppProperties *)request;
+
+/**
* Called when a `SetDisplayLayout` request is received from Core
*
* @param request A SDLSetDisplayLayout object
diff --git a/SmartDeviceLink/SDLRPCFunctionNames.h b/SmartDeviceLink/SDLRPCFunctionNames.h
index 9fdeda330..52318c3bd 100644
--- a/SmartDeviceLink/SDLRPCFunctionNames.h
+++ b/SmartDeviceLink/SDLRPCFunctionNames.h
@@ -32,6 +32,7 @@ extern SDLRPCFunctionName const SDLRPCFunctionNameGenericResponse;
extern SDLRPCFunctionName const SDLRPCFunctionNameGetAppServiceData;
extern SDLRPCFunctionName const SDLRPCFunctionNameGetDTCs;
extern SDLRPCFunctionName const SDLRPCFunctionNameGetFile;
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetCloudAppProperties;
extern SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleData;
extern SDLRPCFunctionName const SDLRPCFunctionNameGetSystemCapability;
extern SDLRPCFunctionName const SDLRPCFunctionNameGetVehicleData;
@@ -73,6 +74,7 @@ extern SDLRPCFunctionName const SDLRPCFunctionNameScrollableMessage;
extern SDLRPCFunctionName const SDLRPCFunctionNameSendHapticData;
extern SDLRPCFunctionName const SDLRPCFunctionNameSendLocation;
extern SDLRPCFunctionName const SDLRPCFunctionNameSetAppIcon;
+extern SDLRPCFunctionName const SDLRPCFunctionNameSetCloudAppProperties;
extern SDLRPCFunctionName const SDLRPCFunctionNameSetDisplayLayout;
extern SDLRPCFunctionName const SDLRPCFunctionNameSetGlobalProperties;
extern SDLRPCFunctionName const SDLRPCFunctionNameSetInteriorVehicleData;
diff --git a/SmartDeviceLink/SDLRPCFunctionNames.m b/SmartDeviceLink/SDLRPCFunctionNames.m
index 8416ac7a3..c51e98be0 100644
--- a/SmartDeviceLink/SDLRPCFunctionNames.m
+++ b/SmartDeviceLink/SDLRPCFunctionNames.m
@@ -27,6 +27,7 @@ SDLRPCFunctionName const SDLRPCFunctionNameGenericResponse = @"GenericResponse";
SDLRPCFunctionName const SDLRPCFunctionNameGetAppServiceData = @"GetAppServiceData";
SDLRPCFunctionName const SDLRPCFunctionNameGetDTCs = @"GetDTCs";
SDLRPCFunctionName const SDLRPCFunctionNameGetFile = @"GetFile";
+SDLRPCFunctionName const SDLRPCFunctionNameGetCloudAppProperties = @"GetCloudAppProperties";
SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleData = @"GetInteriorVehicleData";
SDLRPCFunctionName const SDLRPCFunctionNameGetSystemCapability = @"GetSystemCapability";
SDLRPCFunctionName const SDLRPCFunctionNameGetVehicleData = @"GetVehicleData";
@@ -68,6 +69,7 @@ SDLRPCFunctionName const SDLRPCFunctionNameScrollableMessage = @"ScrollableMessa
SDLRPCFunctionName const SDLRPCFunctionNameSendHapticData = @"SendHapticData";
SDLRPCFunctionName const SDLRPCFunctionNameSendLocation = @"SendLocation";
SDLRPCFunctionName const SDLRPCFunctionNameSetAppIcon = @"SetAppIcon";
+SDLRPCFunctionName const SDLRPCFunctionNameSetCloudAppProperties = @"SetCloudAppProperties";
SDLRPCFunctionName const SDLRPCFunctionNameSetDisplayLayout = @"SetDisplayLayout";
SDLRPCFunctionName const SDLRPCFunctionNameSetGlobalProperties = @"SetGlobalProperties";
SDLRPCFunctionName const SDLRPCFunctionNameSetInteriorVehicleData = @"SetInteriorVehicleData";
diff --git a/SmartDeviceLink/SDLRPCParameterNames.h b/SmartDeviceLink/SDLRPCParameterNames.h
index 55ce7eaa3..6e346e357 100644
--- a/SmartDeviceLink/SDLRPCParameterNames.h
+++ b/SmartDeviceLink/SDLRPCParameterNames.h
@@ -55,6 +55,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2;
extern SDLRPCParameterName const SDLRPCParameterNameAudioStreamingIndicator;
extern SDLRPCParameterName const SDLRPCParameterNameAudioStreamingState;
extern SDLRPCParameterName const SDLRPCParameterNameAudioType;
+extern SDLRPCParameterName const SDLRPCParameterNameAuthToken;
extern SDLRPCParameterName const SDLRPCParameterNameAutoCompleteText;
extern SDLRPCParameterName const SDLRPCParameterNameAutoModeEnable;
extern SDLRPCParameterName const SDLRPCParameterNameAutoModeEnableAvailable;
@@ -109,6 +110,8 @@ extern SDLRPCParameterName const SDLRPCParameterNameCountryCode;
extern SDLRPCParameterName const SDLRPCParameterNameCountryName;
extern SDLRPCParameterName const SDLRPCParameterNameCRC;
extern SDLRPCParameterName const SDLRPCParameterNameClockText;
+extern SDLRPCParameterName const SDLRPCParameterNameCloudAppVehicleID;
+extern SDLRPCParameterName const SDLRPCParameterNameCloudTransportType;
extern SDLRPCParameterName const SDLRPCParameterNameCurrentForecast;
extern SDLRPCParameterName const SDLRPCParameterNameCurrentForecastSupported;
extern SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature;
@@ -173,6 +176,8 @@ extern SDLRPCParameterName const SDLRPCParameterNameECUName;
extern SDLRPCParameterName const SDLRPCParameterNameElectronicParkBrakeStatus;
extern SDLRPCParameterName const SDLRPCParameterNameEmergencyEvent;
extern SDLRPCParameterName const SDLRPCParameterNameEmergencyEventType;
+extern SDLRPCParameterName const SDLRPCParameterNameEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameEndpoint;
extern SDLRPCParameterName const SDLRPCParameterNameEndTime;
extern SDLRPCParameterName const SDLRPCParameterNameEngineOilLife;
extern SDLRPCParameterName const SDLRPCParameterNameEngineTorque;
@@ -252,6 +257,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameHour;
extern SDLRPCParameterName const SDLRPCParameterNameHourlyForecast;
extern SDLRPCParameterName const SDLRPCParameterNameHours;
extern SDLRPCParameterName const SDLRPCParameterNameHumidity;
+extern SDLRPCParameterName const SDLRPCParameterNameHybridAppPreference;
extern SDLRPCParameterName const SDLRPCParameterNameIconResumed;
extern SDLRPCParameterName const SDLRPCParameterNameId;
extern SDLRPCParameterName const SDLRPCParameterNameIgnitionStableStatus;
@@ -392,6 +398,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistanceScale
extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionETA;
extern SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon;
extern SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName;
+extern SDLRPCParameterName const SDLRPCParameterNameNicknames;
extern SDLRPCParameterName const SDLRPCParameterNameNightColorScheme;
extern SDLRPCParameterName const SDLRPCParameterNameNotification;
extern SDLRPCParameterName const SDLRPCParameterNameNumber;
diff --git a/SmartDeviceLink/SDLRPCParameterNames.m b/SmartDeviceLink/SDLRPCParameterNames.m
index 86d88c588..0aae8440d 100644
--- a/SmartDeviceLink/SDLRPCParameterNames.m
+++ b/SmartDeviceLink/SDLRPCParameterNames.m
@@ -53,6 +53,7 @@ SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2 = @"audio
SDLRPCParameterName const SDLRPCParameterNameAudioStreamingIndicator = @"audioStreamingIndicator";
SDLRPCParameterName const SDLRPCParameterNameAudioStreamingState = @"audioStreamingState";
SDLRPCParameterName const SDLRPCParameterNameAudioType = @"audioType";
+SDLRPCParameterName const SDLRPCParameterNameAuthToken = @"authToken";
SDLRPCParameterName const SDLRPCParameterNameAutoCompleteText = @"autoCompleteText";
SDLRPCParameterName const SDLRPCParameterNameAutoModeEnable = @"autoModeEnable";
SDLRPCParameterName const SDLRPCParameterNameAutoModeEnableAvailable = @"autoModeEnableAvailable";
@@ -107,6 +108,8 @@ SDLRPCParameterName const SDLRPCParameterNameCountryCode = @"countryCode";
SDLRPCParameterName const SDLRPCParameterNameCountryName = @"countryName";
SDLRPCParameterName const SDLRPCParameterNameCRC = @"crc";
SDLRPCParameterName const SDLRPCParameterNameClockText = @"CT";
+SDLRPCParameterName const SDLRPCParameterNameCloudAppVehicleID = @"cloudAppVehicleID";
+SDLRPCParameterName const SDLRPCParameterNameCloudTransportType = @"cloudTransportType";
SDLRPCParameterName const SDLRPCParameterNameCurrentForecast = @"currentForecast";
SDLRPCParameterName const SDLRPCParameterNameCurrentForecastSupported = @"currentForecastSupported";
SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature = @"currentTemperature";
@@ -170,6 +173,8 @@ SDLRPCParameterName const SDLRPCParameterNameECUName = @"ecuName";
SDLRPCParameterName const SDLRPCParameterNameElectronicParkBrakeStatus = @"electronicParkBrakeStatus";
SDLRPCParameterName const SDLRPCParameterNameEmergencyEvent = @"emergencyEvent";
SDLRPCParameterName const SDLRPCParameterNameEmergencyEventType = @"emergencyEventType";
+SDLRPCParameterName const SDLRPCParameterNameEnabled = @"enabled";
+SDLRPCParameterName const SDLRPCParameterNameEndpoint = @"endpoint";
SDLRPCParameterName const SDLRPCParameterNameEndTime = @"endTime";
SDLRPCParameterName const SDLRPCParameterNameEngineOilLife = @"engineOilLife";
SDLRPCParameterName const SDLRPCParameterNameEngineTorque = @"engineTorque";
@@ -250,6 +255,7 @@ SDLRPCParameterName const SDLRPCParameterNameHour = @"hour";
SDLRPCParameterName const SDLRPCParameterNameHourlyForecast = @"hourlyForecast";
SDLRPCParameterName const SDLRPCParameterNameHours = @"hours";
SDLRPCParameterName const SDLRPCParameterNameHumidity = @"humidity";
+SDLRPCParameterName const SDLRPCParameterNameHybridAppPreference = @"hybridAppPreference";
SDLRPCParameterName const SDLRPCParameterNameIconResumed = @"iconResumed";
SDLRPCParameterName const SDLRPCParameterNameId = @"id";
SDLRPCParameterName const SDLRPCParameterNameIgnitionStableStatus = @"ignitionStableStatus";
@@ -386,6 +392,7 @@ SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistanceScale = @"ne
SDLRPCParameterName const SDLRPCParameterNameNextInstructionETA = @"nextInstructionETA";
SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon = @"nextTurnIcon";
SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName = @"ngnMediaScreenAppName";
+SDLRPCParameterName const SDLRPCParameterNameNicknames = @"nicknames";
SDLRPCParameterName const SDLRPCParameterNameNightColorScheme = @"nightColorScheme";
SDLRPCParameterName const SDLRPCParameterNameNotification = @"notification";
SDLRPCParameterName const SDLRPCParameterNameNumber = @"number";
diff --git a/SmartDeviceLink/SDLRequestType.h b/SmartDeviceLink/SDLRequestType.h
index 918ce0218..9f56d7bc3 100644
--- a/SmartDeviceLink/SDLRequestType.h
+++ b/SmartDeviceLink/SDLRequestType.h
@@ -113,3 +113,9 @@ extern SDLRequestType const SDLRequestTypeFOTA;
A request that is OEM specific using the `RequestSubType` in SystemRequest
*/
extern SDLRequestType const SDLRequestTypeOEMSpecific;
+
+/**
+ A request for an icon url
+ */
+extern SDLRequestType const SDLRequestTypeIconURL;
+
diff --git a/SmartDeviceLink/SDLRequestType.m b/SmartDeviceLink/SDLRequestType.m
index d766e04ee..cbc6c7fda 100644
--- a/SmartDeviceLink/SDLRequestType.m
+++ b/SmartDeviceLink/SDLRequestType.m
@@ -25,3 +25,4 @@ SDLRequestType const SDLRequestTypeEmergency = @"EMERGENCY";
SDLRequestType const SDLRequestTypeMedia = @"MEDIA";
SDLRequestType const SDLRequestTypeFOTA = @"FOTA";
SDLRequestType const SDLRequestTypeOEMSpecific = @"OEM_SPECIFIC";
+SDLRequestType const SDLRequestTypeIconURL = @"ICON_URL";
diff --git a/SmartDeviceLink/SDLSetCloudAppProperties.h b/SmartDeviceLink/SDLSetCloudAppProperties.h
new file mode 100644
index 000000000..eadcded16
--- /dev/null
+++ b/SmartDeviceLink/SDLSetCloudAppProperties.h
@@ -0,0 +1,38 @@
+//
+// SDLSetCloudAppProperties.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCRequest.h"
+
+@class SDLCloudAppProperties;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * RPC used to enable/disable a cloud application and set authentication data
+ */
+@interface SDLSetCloudAppProperties : SDLRPCRequest
+
+/**
+ * Convenience init.
+ *
+ * @param properties The new cloud application properties
+ * @return A SDLSetCloudAppProperties object
+ */
+- (instancetype)initWithProperties:(SDLCloudAppProperties *)properties;
+
+/**
+ * The new cloud application properties.
+ *
+ * SDLCloudAppProperties, Required
+ */
+@property (strong, nonatomic) SDLCloudAppProperties *properties;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetCloudAppProperties.m b/SmartDeviceLink/SDLSetCloudAppProperties.m
new file mode 100644
index 000000000..9074ea55f
--- /dev/null
+++ b/SmartDeviceLink/SDLSetCloudAppProperties.m
@@ -0,0 +1,48 @@
+//
+// SDLSetCloudAppProperties.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSetCloudAppProperties.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLCloudAppProperties.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSetCloudAppProperties
+
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameSetCloudAppProperties]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithProperties:(SDLCloudAppProperties *)properties {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.properties = properties;
+
+ return self;
+}
+
+- (void)setProperties:(SDLCloudAppProperties *)properties {
+ [parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties];
+}
+
+- (SDLCloudAppProperties *)properties {
+ return [parameters sdl_objectForName:SDLRPCParameterNameProperties ofClass:SDLCloudAppProperties.class];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h b/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h
new file mode 100644
index 000000000..8e4d39753
--- /dev/null
+++ b/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h
@@ -0,0 +1,20 @@
+//
+// SDLSetCloudAppPropertiesResponse.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCResponse.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * The response to SetCloudAppProperties
+ */
+@interface SDLSetCloudAppPropertiesResponse : SDLRPCResponse
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m b/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m
new file mode 100644
index 000000000..94476a335
--- /dev/null
+++ b/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m
@@ -0,0 +1,25 @@
+//
+// SDLSetCloudAppPropertiesResponse.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSetCloudAppPropertiesResponse.h"
+
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSetCloudAppPropertiesResponse
+
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameSetCloudAppProperties]) {
+ }
+ return self;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleData.h b/SmartDeviceLink/SDLSubscribeVehicleData.h
index 8549e58e3..31d1dce6f 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleData.h
+++ b/SmartDeviceLink/SDLSubscribeVehicleData.h
@@ -83,7 +83,43 @@ NS_ASSUME_NONNULL_BEGIN
* @param wiperStatus Subscribe to wiperStatus
* @return A SDLSubscribeVehicleData object
*/
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus;
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
+
+/**
+ * Convenience init for subscribing to all possible vehicle data items.
+ *
+ * @param accelerationPedalPosition Subscribe to accelerationPedalPosition
+ * @param airbagStatus Subscribe to airbagStatus
+ * @param beltStatus Subscribe to beltStatus
+ * @param bodyInformation Subscribe to bodyInformation
+ * @param cloudAppVehicleID Subscribe to cloudAppVehicleID
+ * @param clusterModeStatus Subscribe to clusterModeStatus
+ * @param deviceStatus Subscribe to deviceStatus
+ * @param driverBraking Subscribe to driverBraking
+ * @param eCallInfo Subscribe to eCallInfo
+ * @param electronicParkBrakeStatus Subscribe to electronicParkBrakeStatus
+ * @param emergencyEvent Subscribe to emergencyEvent
+ * @param engineOilLife Subscribe to engineOilLife
+ * @param engineTorque Subscribe to engineTorque
+ * @param externalTemperature Subscribe to externalTemperature
+ * @param fuelLevel Subscribe to fuelLevel
+ * @param fuelLevelState Subscribe to fuelLevelState
+ * @param fuelRange Subscribe to fuelRange
+ * @param gps Subscribe to gps
+ * @param headLampStatus Subscribe to headLampStatus
+ * @param instantFuelConsumption Subscribe to instantFuelConsumption
+ * @param myKey Subscribe to myKey
+ * @param odometer Subscribe to odometer
+ * @param prndl Subscribe to prndl
+ * @param rpm Subscribe to rpm
+ * @param speed Subscribe to speed
+ * @param steeringWheelAngle Subscribe to steeringWheelAngle
+ * @param tirePressure Subscribe to tirePressure
+ * @param turnSignal Subscribe to turnSignal
+ * @param wiperStatus Subscribe to wiperStatus
+ * @return A SDLSubscribeVehicleData object
+ */
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus;
/**
* A boolean value. If true, subscribes GPS data.
@@ -225,6 +261,10 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) NSNumber<SDLBool> *turnSignal;
+/**
+ * A boolean value. If true, subscribes to the cloud app vehicle ID.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
@end
diff --git a/SmartDeviceLink/SDLSubscribeVehicleData.m b/SmartDeviceLink/SDLSubscribeVehicleData.m
index aed344cc3..16efd85d1 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleData.m
+++ b/SmartDeviceLink/SDLSubscribeVehicleData.m
@@ -23,6 +23,10 @@ NS_ASSUME_NONNULL_BEGIN
}
- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
+ return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation cloudAppVehicleID:NO clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:electronicParkBrakeStatus emergencyEvent:emergencyEvent engineOilLife:engineOilLife engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:fuelRange gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:turnSignal wiperStatus:wiperStatus];
+}
+
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
self = [self init];
if (!self) {
return nil;
@@ -32,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
self.airbagStatus = @(airbagStatus);
self.beltStatus = @(beltStatus);
self.bodyInformation = @(bodyInformation);
+ self.cloudAppVehicleID = @(cloudAppVehicleID);
self.clusterModeStatus = @(clusterModeStatus);
self.deviceStatus = @(deviceStatus);
self.driverBraking = @(driverBraking);
@@ -283,6 +288,15 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable NSNumber<SDLBool> *)turnSignal {
return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal];
}
+
+- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
index 1cc10c6b3..0fbf17c0b 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
+++ b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
@@ -212,6 +212,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) SDLVehicleDataResult *turnSignal;
+/**
+ The result of requesting to subscribe to the cloud app vehicle ID
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
index 3e69ef715..b845d4910 100644
--- a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
+++ b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
@@ -243,6 +243,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:[SDLVehicleDataResult class]];
}
+- (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleData.h b/SmartDeviceLink/SDLUnsubscribeVehicleData.h
index ace3cf584..322b12347 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleData.h
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleData.h
@@ -85,7 +85,43 @@ NS_ASSUME_NONNULL_BEGIN
* @param wiperStatus Unsubscribe to wiperStatus
* @return A SDLUnsubscribeVehicleData object
*/
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus;
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
+
+/**
+ * Convenience init for unsubscribing to all possible vehicle data items.
+ *
+ * @param accelerationPedalPosition Unsubscribe to accelerationPedalPosition
+ * @param airbagStatus Unsubscribe to airbagStatus
+ * @param beltStatus Unsubscribe to beltStatus
+ * @param bodyInformation Unsubscribe to bodyInformation
+ * @param cloudAppVehicleID Unsubscribe to cloudAppVehicleID
+ * @param clusterModeStatus Unsubscribe to clusterModeStatus
+ * @param deviceStatus Unsubscribe to deviceStatus
+ * @param driverBraking Unsubscribe to driverBraking
+ * @param eCallInfo Unsubscribe to eCallInfo
+ * @param electronicParkBrakeStatus Unsubscribe to electronicParkBrakeStatus
+ * @param emergencyEvent Unsubscribe to emergencyEvent
+ * @param engineOilLife Unsubscribe to engineOilLife
+ * @param engineTorque Unsubscribe to engineTorque
+ * @param externalTemperature Unsubscribe to externalTemperature
+ * @param fuelLevel Unsubscribe to fuelLevel
+ * @param fuelLevelState Unsubscribe to fuelLevelState
+ * @param fuelRange Unsubscribe to fuelRange
+ * @param gps Unsubscribe to gps
+ * @param headLampStatus Unsubscribe to headLampStatus
+ * @param instantFuelConsumption Unsubscribe to instantFuelConsumption
+ * @param myKey Unsubscribe to myKey
+ * @param odometer Unsubscribe to odometer
+ * @param prndl Unsubscribe to prndl
+ * @param rpm Unsubscribe to rpm
+ * @param speed Unsubscribe to speed
+ * @param steeringWheelAngle Unsubscribe to steeringWheelAngle
+ * @param tirePressure Unsubscribe to tirePressure
+ * @param turnSignal Unsubscribe to turnSignal
+ * @param wiperStatus Unsubscribe to wiperStatus
+ * @return A SDLUnsubscribeVehicleData object
+ */
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus;
/**
* If true, unsubscribes from GPS
@@ -227,6 +263,12 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) NSNumber<SDLBool> *turnSignal;
+/**
+ A boolean value. If true, unsubscribes to the Cloud App Vehicle ID
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
+
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleData.m b/SmartDeviceLink/SDLUnsubscribeVehicleData.m
index e68161178..8f32bee3c 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleData.m
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleData.m
@@ -23,6 +23,10 @@ NS_ASSUME_NONNULL_BEGIN
}
- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
+ return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation cloudAppVehicleID:NO clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:electronicParkBrakeStatus emergencyEvent:emergencyEvent engineOilLife:engineOilLife engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:fuelRange gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:turnSignal wiperStatus:wiperStatus];
+}
+
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
self = [self init];
if (!self) {
return nil;
@@ -32,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
self.airbagStatus = @(airbagStatus);
self.beltStatus = @(beltStatus);
self.bodyInformation = @(bodyInformation);
+ self.cloudAppVehicleID = @(cloudAppVehicleID);
self.clusterModeStatus = @(clusterModeStatus);
self.deviceStatus = @(deviceStatus);
self.driverBraking = @(driverBraking);
@@ -284,6 +289,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal];
}
+- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
index 0500a1921..32f51cf76 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
@@ -211,6 +211,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) SDLVehicleDataResult *turnSignal;
+/**
+ The result of requesting to unsubscribe to the cloud app vehicle id
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
index 9d440545f..ae299318c 100644
--- a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
+++ b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
@@ -243,6 +243,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class];
}
+- (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLVehicleDataType.h b/SmartDeviceLink/SDLVehicleDataType.h
index 4afe818f8..1da4ad500 100644
--- a/SmartDeviceLink/SDLVehicleDataType.h
+++ b/SmartDeviceLink/SDLVehicleDataType.h
@@ -158,3 +158,8 @@ extern SDLVehicleDataType const SDLVehicleDataTypeElectronicParkBrakeStatus;
Vehicle turn signal data
*/
extern SDLVehicleDataType const SDLVehicleDataTypeTurnSignal;
+
+/**
+ The cloud application vehicle id. Used by cloud apps to identify a head unit
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID;
diff --git a/SmartDeviceLink/SDLVehicleDataType.m b/SmartDeviceLink/SDLVehicleDataType.m
index 4b37a2456..a64497b2a 100644
--- a/SmartDeviceLink/SDLVehicleDataType.m
+++ b/SmartDeviceLink/SDLVehicleDataType.m
@@ -34,4 +34,5 @@ SDLVehicleDataType const SDLVehicleDataTypeAccelerationPedal = @"VEHICLEDATA_ACC
SDLVehicleDataType const SDLVehicleDataTypeSteeringWheel = @"VEHICLEDATA_STEERINGWHEEL";
SDLVehicleDataType const SDLVehicleDataTypeElectronicParkBrakeStatus = @"VEHICLEDATA_ELECTRONICPARKBRAKESTATUS";
SDLVehicleDataType const SDLVehicleDataTypeTurnSignal = @"VEHICLEDATA_TURNSIGNAL";
+SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID = @"VEHICLEDATA_CLOUDAPPVEHICLEID";
diff --git a/SmartDeviceLink/SDLVersion.h b/SmartDeviceLink/SDLVersion.h
index f7b226206..02a4feb68 100644
--- a/SmartDeviceLink/SDLVersion.h
+++ b/SmartDeviceLink/SDLVersion.h
@@ -31,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN
- (BOOL)isLessThanVersion:(SDLVersion *)otherVersion;
- (BOOL)isEqualToVersion:(SDLVersion *)otherVersion;
- (BOOL)isGreaterThanVersion:(SDLVersion *)otherVersion;
+- (BOOL)isGreaterThanOrEqualToVersion:(SDLVersion *)otherVersion;
+- (BOOL)isLessThanOrEqualToVersion:(SDLVersion *)otherVersion;
@end
diff --git a/SmartDeviceLink/SDLVersion.m b/SmartDeviceLink/SDLVersion.m
index 37df25966..0dd4173cb 100644
--- a/SmartDeviceLink/SDLVersion.m
+++ b/SmartDeviceLink/SDLVersion.m
@@ -110,6 +110,14 @@ NS_ASSUME_NONNULL_BEGIN
return ([self compare:otherVersion] == NSOrderedDescending);
}
+- (BOOL)isGreaterThanOrEqualToVersion:(SDLVersion *)otherVersion {
+ return ([self isGreaterThanVersion:otherVersion] || [self isEqualToVersion:otherVersion]);
+}
+
+- (BOOL)isLessThanOrEqualToVersion:(SDLVersion *)otherVersion {
+ return ([self isLessThanVersion:otherVersion] || [self isEqualToVersion:otherVersion]);
+}
+
#pragma mark - NSObject overrides
- (BOOL)isEqual:(id)object {
diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h
index f2ae08687..4ae1a7d37 100644
--- a/SmartDeviceLink/SmartDeviceLink.h
+++ b/SmartDeviceLink/SmartDeviceLink.h
@@ -34,6 +34,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLDialNumber.h"
#import "SDLEncodedSyncPData.h"
#import "SDLEndAudioPassThru.h"
+#import "SDLGetCloudAppProperties.h"
#import "SDLGetAppServiceData.h"
#import "SDLGetDTCs.h"
#import "SDLGetFile.h"
@@ -54,6 +55,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSendHapticData.h"
#import "SDLSendLocation.h"
#import "SDLSetAppIcon.h"
+#import "SDLSetCloudAppProperties.h"
#import "SDLSetDisplayLayout.h"
#import "SDLSetGlobalProperties.h"
#import "SDLSetInteriorVehicleData.h"
@@ -90,6 +92,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLEncodedSyncPDataResponse.h"
#import "SDLEndAudioPassThruResponse.h"
#import "SDLGenericResponse.h"
+#import "SDLGetCloudAppPropertiesResponse.h"
#import "SDLGetAppServiceDataResponse.h"
#import "SDLGetDTCsResponse.h"
#import "SDLGetFileResponse.h"
@@ -110,6 +113,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSendHapticDataResponse.h"
#import "SDLSendLocationResponse.h"
#import "SDLSetAppIconResponse.h"
+#import "SDLSetCloudAppPropertiesResponse.h"
#import "SDLSetDisplayLayoutResponse.h"
#import "SDLSetGlobalPropertiesResponse.h"
#import "SDLSetInteriorVehicleDataResponse.h"
@@ -171,6 +175,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLClusterModeStatus.h"
#import "SDLClimateControlCapabilities.h"
#import "SDLClimateControlData.h"
+#import "SDLCloudAppProperties.h"
#import "SDLDIDResult.h"
#import "SDLDateTime.h"
#import "SDLDeviceInfo.h"
@@ -285,6 +290,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLGlobalProperty.h"
#import "SDLHMILevel.h"
#import "SDLHMIZoneCapabilities.h"
+#import "SDLHybridAppPreference.h"
#import "SDLIgnitionStableStatus.h"
#import "SDLIgnitionStatus.h"
#import "SDLImageFieldName.h"
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
index e2ba51c2d..728dcc99f 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
@@ -135,6 +135,7 @@ describe(@"a lifecycle manager", ^{
expect(testManager.rpcOperationQueue).toNot(beNil());
expect(testManager.rpcOperationQueue.maxConcurrentOperationCount).to(equal(3));
expect(@([testManager conformsToProtocol:@protocol(SDLConnectionManagerType)])).to(equal(@YES));
+ expect(testManager.authToken).to(beNil());
});
itBehavesLike(@"unable to send an RPC", ^{ return @{ @"manager": testManager }; });
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m
index 5e5ed662a..349f66f6d 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m
@@ -92,6 +92,10 @@ describe(@"a version object", ^{
expect([testVersion isLessThanVersion:lowerVersion]).to(equal(NO));
expect([testVersion isLessThanVersion:equalVersion]).to(equal(NO));
expect([testVersion isLessThanVersion:higherVersion]).to(equal(YES));
+ expect([testVersion isGreaterThanOrEqualToVersion:equalVersion]).to(equal(YES));
+ expect([testVersion isGreaterThanOrEqualToVersion:lowerVersion]).to(equal(YES));
+ expect([testVersion isLessThanOrEqualToVersion:equalVersion]).to(equal(YES));
+ expect([testVersion isLessThanVersion:higherVersion]).to(equal(YES));
});
});
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLControlFramePayloadConstantsSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLControlFramePayloadConstantsSpec.m
new file mode 100644
index 000000000..dba3e9a8b
--- /dev/null
+++ b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLControlFramePayloadConstantsSpec.m
@@ -0,0 +1,40 @@
+//
+// SDLControlFramePayloadConstantsSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 2/27/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLControlFramePayloadConstants.h"
+
+QuickSpecBegin(SDLControlFramePayloadConstantsSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect(SDLControlFrameInt32NotFound).to(equal(-1));
+ expect(SDLControlFrameInt64NotFound).to(equal(-1));
+ expect(SDLControlFrameProtocolVersionKey).to(equal(@"protocolVersion"));
+ expect(SDLControlFrameHashIdKey).to(equal(@"hashId"));
+ expect(SDLControlFrameMTUKey).to(equal(@"mtu"));
+ expect(SDLControlFrameSecondaryTransportsKey).to(equal(@"secondaryTransports"));
+ expect(SDLControlFrameAudioServiceTransportsKey).to(equal(@"audioServiceTransports"));
+ expect(SDLControlFrameVideoServiceTransportsKey).to(equal(@"videoServiceTransports"));
+ expect(SDLControlFrameAuthTokenKey).to(equal(@"authToken"));
+ expect(SDLControlFrameRejectedParams).to(equal(@"rejectedParams"));
+ expect(SDLControlFrameReasonKey).to(equal(@"reason"));
+ expect(SDLControlFrameVideoProtocolKey).to(equal(@"videoProtocol"));
+ expect(SDLControlFrameVideoCodecKey).to(equal(@"videoCodec"));
+ expect(SDLControlFrameHeightKey).to(equal(@"height"));
+ expect(SDLControlFrameWidthKey).to(equal(@"width"));
+ expect(SDLControlFrameTCPIPAddressKey).to(equal(@"tcpIpAddress"));
+ expect(SDLControlFrameTCPPortKey).to(equal(@"tcpPort"));
+ });
+});
+
+QuickSpecEnd
+
+
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
index a6cb5f0b0..a087dc86f 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
@@ -11,6 +11,7 @@
#import "SDLTransportType.h"
#import "SDLControlFramePayloadRegisterSecondaryTransportNak.h"
+#import "SDLControlFramePayloadRPCStartServiceAck.h"
#import "SDLGlobals.h"
#import "SDLProtocolHeader.h"
#import "SDLProtocol.h"
@@ -404,23 +405,158 @@ describe(@"HandleBytesFromTransport Tests", ^ {
});
});
-xdescribe(@"HandleProtocolSessionStarted Tests", ^ {
- it(@"Should pass information along to delegate", ^ {
- SDLProtocol* testProtocol = [[SDLProtocol alloc] init];
-
- id delegateMock = OCMProtocolMock(@protocol(SDLProtocolListener));
-
- SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] init];
- testHeader.frameType = SDLFrameTypeControl;
- testHeader.serviceType = SDLServiceTypeRPC;
- testHeader.frameData = SDLFrameInfoStartServiceACK;
- testHeader.sessionID = 0x93;
- testHeader.bytesInPayload = 0;
-
- [testProtocol.protocolDelegateTable addObject:delegateMock];
- [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]];
-
- OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
+describe(@"HandleProtocolSessionStarted tests", ^ {
+ __block SDLProtocol *testProtocol = nil;
+ __block id delegateMock = nil;
+
+ beforeEach(^{
+ testProtocol = [[SDLProtocol alloc] init];
+ delegateMock = OCMProtocolMock(@protocol(SDLProtocolListener));
+ [[SDLGlobals sharedGlobals] init]; // Make sure to reset between tests
+ });
+
+ context(@"For protocol versions 5.0.0 and greater", ^{
+ __block NSString *testAuthToken = nil;
+
+ beforeEach(^{
+ testAuthToken = @"testAuthToken";
+ });
+
+ context(@"If the service type is RPC", ^{
+ it(@"Should store the auth token and the protocol version and pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:testAuthToken protocolVersion:@"5.2.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeRPC;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:testData]];
+
+ OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
+
+ expect(testProtocol.authToken).to(equal(testAuthToken));
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"5.2.0"));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"5.2.0"));
+ });
+
+ it(@"Should store the protocol version, but not get the auth token, and pass the start service along to the delegate if the protocol version is greater than 5.0.0 but less than 5.2.0", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeRPC;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:testData]];
+
+ OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
+
+ expect(testProtocol.authToken).to(beNil());
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"5.1.0"));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"5.1.0"));
+ });
+
+ it(@"Should set the max head unit version using the header version if the protocol version is missing from the payload", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:nil protocolVersion:nil secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeRPC;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:testData]];
+
+ OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
+
+ expect(testProtocol.authToken).to(beNil());
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"5.0.0"));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"5.0.0"));
+ });
+ });
+
+ context(@"If the service type is not RPC", ^{
+ it(@"Should just pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeControl;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:testData]];
+
+ OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
+
+ // Should keep their default values
+ expect(testProtocol.authToken).to(beNil());
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"1.0.0"));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"0.0.0"));
+ });
+ });
+ });
+
+ context(@"For protocol versions below 5.0.0", ^{
+ context(@"If the service type is RPC", ^{
+ it(@"Should store the protocol version and pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:nil protocolVersion:@"3.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeRPC;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:testData]];
+
+ OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
+
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"3.1.0"));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"3.1.0"));
+ });
+ });
+
+ context(@"If the service type is not RPC", ^{
+ it(@"Should just pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:nil protocolVersion:@"4.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:4];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeControl;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:testData]];
+
+ OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
+
+ // Should keep their default values
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"1.0.0"));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"0.0.0"));
+ });
+ });
});
});
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/SDLControlFramePayloadRPCStartServiceAckSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/SDLControlFramePayloadRPCStartServiceAckSpec.m
index 8a198c63e..682d53678 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/SDLControlFramePayloadRPCStartServiceAckSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/SDLControlFramePayloadRPCStartServiceAckSpec.m
@@ -18,13 +18,13 @@ describe(@"Test encoding data", ^{
__block NSArray<NSNumber *> *testAudioServiceTransports = nil;
__block NSArray<NSNumber *> *testVideoServiceTransports = nil;
- context(@"with paramaters", ^{
+ context(@"with parameters", ^{
beforeEach(^{
testHashId = 1457689;
testMTU = 5984649;
testProtocolVersion = @"1.32.32";
- testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU protocolVersion:testProtocolVersion secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU authToken:nil protocolVersion:testProtocolVersion secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
});
it(@"should create the correct data", ^{
@@ -32,7 +32,7 @@ describe(@"Test encoding data", ^{
});
});
- context(@"with secondary transport paramaters", ^{
+ context(@"with secondary transport parameters", ^{
beforeEach(^{
testHashId = 987654;
testMTU = 4096;
@@ -41,7 +41,7 @@ describe(@"Test encoding data", ^{
testAudioServiceTransports = @[@(2)];
testVideoServiceTransports = @[(@2), @(1)];
- testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU authToken:nil protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
});
it(@"should create the correct data", ^{
@@ -54,7 +54,7 @@ describe(@"Test encoding data", ^{
testHashId = SDLControlFrameInt32NotFound;
testMTU = SDLControlFrameInt64NotFound;
- testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU protocolVersion:nil secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU authToken:nil protocolVersion:nil secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
});
it(@"should create no data", ^{
@@ -68,18 +68,20 @@ describe(@"Test decoding data", ^{
__block NSData *testData = nil;
__block int32_t testHashId = 0;
__block int64_t testMTU = 0;
+ __block NSString *testAuthToken = nil;
__block NSString *testProtocolVersion = nil;
__block NSArray<NSString *> *testSecondaryTransports = nil;
__block NSArray<NSNumber *> *testAudioServiceTransports = nil;
__block NSArray<NSNumber *> *testVideoServiceTransports = nil;
- context(@"with paramaters", ^{
+ context(@"with parameters", ^{
beforeEach(^{
testHashId = 1545784;
testMTU = 989786483;
+ testAuthToken = @"testAuthToken";
testProtocolVersion = @"3.89.5";
- SDLControlFramePayloadRPCStartServiceAck *firstPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU protocolVersion:testProtocolVersion secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ SDLControlFramePayloadRPCStartServiceAck *firstPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU authToken:testAuthToken protocolVersion:testProtocolVersion secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
testData = firstPayload.data;
testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithData:testData];
@@ -88,20 +90,25 @@ describe(@"Test decoding data", ^{
it(@"should output the correct params", ^{
expect(testPayload.hashId).to(equal(testHashId));
expect(testPayload.mtu).to(equal(testMTU));
+ expect(testPayload.authToken).to(equal(testAuthToken));
expect(testPayload.protocolVersion).to(equal(testProtocolVersion));
+ expect(testPayload.secondaryTransports).to(beNil());
+ expect(testPayload.audioServiceTransports).to(beNil());
+ expect(testPayload.videoServiceTransports).to(beNil());
});
});
- context(@"with secondary transportparamaters", ^{
+ context(@"with secondary transport parameters", ^{
beforeEach(^{
testHashId = 17999024;
testMTU = 1798250;
+ testAuthToken = @"testAuthToken";
testProtocolVersion = @"6.01.00";
testSecondaryTransports = @[@"TCP_WIFI"];
testAudioServiceTransports = @[@(2), @(1)];
testVideoServiceTransports = @[@(1)];
- SDLControlFramePayloadRPCStartServiceAck *firstPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ SDLControlFramePayloadRPCStartServiceAck *firstPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMTU authToken:testAuthToken protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
testData = firstPayload.data;
testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithData:testData];
@@ -110,6 +117,7 @@ describe(@"Test decoding data", ^{
it(@"should output the correct params", ^{
expect(testPayload.hashId).to(equal(testHashId));
expect(testPayload.mtu).to(equal(testMTU));
+ expect(testPayload.authToken).to(equal(testAuthToken));
expect(testPayload.protocolVersion).to(equal(testProtocolVersion));
expect(testPayload.secondaryTransports).to(equal(testSecondaryTransports));
expect(testPayload.audioServiceTransports).to(equal(testAudioServiceTransports));
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
index e1b32df29..6ae21e4cb 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
@@ -62,6 +62,8 @@ describe(@"GetFunctionName Tests", ^ {
expect([functionID functionNameForId:47]).to(equal(SDLRPCFunctionNameUnsubscribeWayPoints));
expect([functionID functionNameForId:48]).to(equal(SDLRPCFunctionNameGetSystemCapability));
expect([functionID functionNameForId:49]).to(equal(SDLRPCFunctionNameSendHapticData));
+ expect([functionID functionNameForId:50]).to(equal(SDLRPCFunctionNameSetCloudAppProperties));
+ expect([functionID functionNameForId:51]).to(equal(SDLRPCFunctionNameGetCloudAppProperties));
expect([functionID functionNameForId:52]).to(equal(SDLRPCFunctionNamePublishAppService));
expect([functionID functionNameForId:53]).to(equal(SDLRPCFunctionNameGetAppServiceData));
expect([functionID functionNameForId:54]).to(equal(SDLRPCFunctionNameGetFile));
@@ -142,6 +144,12 @@ describe(@"GetFunctionID Tests", ^ {
expect([functionID functionIdForName:SDLRPCFunctionNameUnsubscribeWayPoints]).to(equal(@47));
expect([functionID functionIdForName:SDLRPCFunctionNameGetSystemCapability]).to(equal(@48));
expect([functionID functionIdForName:SDLRPCFunctionNameSendHapticData]).to(equal(@49));
+ expect([functionID functionIdForName:SDLRPCFunctionNameSetCloudAppProperties]).to(equal(@50));
+ expect([functionID functionIdForName:SDLRPCFunctionNameGetCloudAppProperties]).to(equal(@51));
+ expect([functionID functionIdForName:SDLRPCFunctionNamePublishAppService]).to(equal(@52));
+ expect([functionID functionIdForName:SDLRPCFunctionNameGetAppServiceData]).to(equal(@53));
+ expect([functionID functionIdForName:SDLRPCFunctionNameGetFile]).to(equal(@54));
+ expect([functionID functionIdForName:SDLRPCFunctionNamePerformAppServiceInteraction]).to(equal(@55));
expect([functionID functionIdForName:SDLRPCFunctionNameOnHMIStatus]).to(equal(@32768));
expect([functionID functionIdForName:SDLRPCFunctionNameOnAppInterfaceUnregistered]).to(equal(@32769));
expect([functionID functionIdForName:SDLRPCFunctionNameOnButtonEvent]).to(equal(@32770));
@@ -159,7 +167,9 @@ describe(@"GetFunctionID Tests", ^ {
expect([functionID functionIdForName:SDLRPCFunctionNameOnHashChange]).to(equal(@32782));
expect([functionID functionIdForName:SDLRPCFunctionNameOnWayPointChange]).to(equal(@32784));
expect([functionID functionIdForName:SDLRPCFunctionNameOnRCStatus]).to(equal(@32785));
-
+ expect([functionID functionIdForName:SDLRPCFunctionNameOnAppServiceData]).to(equal(@32786));
+ expect([functionID functionIdForName:SDLRPCFunctionNameOnSystemCapabilityUpdated]).to(equal(@32787));
+
//Not listed in Spec
expect([functionID functionIdForName:SDLRPCFunctionNameEncodedSyncPData]).to(equal(@65536));
expect([functionID functionIdForName:SDLRPCFunctionNameSyncPData]).to(equal(@65537));
diff --git a/SmartDeviceLinkTests/ProxySpecs/SDLSecondaryTransportManagerSpec.m b/SmartDeviceLinkTests/ProxySpecs/SDLSecondaryTransportManagerSpec.m
index 81b4196c7..acc14b3c5 100644
--- a/SmartDeviceLinkTests/ProxySpecs/SDLSecondaryTransportManagerSpec.m
+++ b/SmartDeviceLinkTests/ProxySpecs/SDLSecondaryTransportManagerSpec.m
@@ -230,7 +230,7 @@ describe(@"the secondary transport manager ", ^{
testAudioServiceTransports = @[@(2), @(1)];
testVideoServiceTransports = @[@(2)];
- testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu authToken:nil protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
testStartServiceACKMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testStartServiceACKHeader andPayload:testStartServiceACKPayload.data];
});
@@ -259,7 +259,7 @@ describe(@"the secondary transport manager ", ^{
// Note: this is not allowed for now. It should contain only one element.
testSecondaryTransports = @[@"TCP_WIFI", @"IAP_USB_HOST_MODE"];
- testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu authToken:nil protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
testStartServiceACKMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testStartServiceACKHeader andPayload:testStartServiceACKPayload.data];
});
@@ -287,7 +287,7 @@ describe(@"the secondary transport manager ", ^{
testAudioServiceTransports = @[@(2)];
testVideoServiceTransports = @[@(2)];
- testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu authToken:nil protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
testStartServiceACKMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testStartServiceACKHeader andPayload:testStartServiceACKPayload.data];
});
@@ -313,7 +313,7 @@ describe(@"the secondary transport manager ", ^{
context(@"without secondary transport related parameter", ^{
beforeEach(^{
- testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu authToken:nil protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
testStartServiceACKMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testStartServiceACKHeader andPayload:testStartServiceACKPayload.data];
});
@@ -407,7 +407,7 @@ describe(@"the secondary transport manager ", ^{
testTransportEventUpdatePayload = [[SDLControlFramePayloadTransportEventUpdate alloc] initWithTcpIpAddress:testTcpIpAddress tcpPort:testTcpPort];
testTransportEventUpdateMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testTransportEventUpdateHeader andPayload:testTransportEventUpdatePayload.data];
- testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu authToken:nil protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
testStartServiceACKMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testStartServiceACKHeader andPayload:testStartServiceACKPayload.data];
});
@@ -444,7 +444,7 @@ describe(@"the secondary transport manager ", ^{
testTransportEventUpdatePayload = [[SDLControlFramePayloadTransportEventUpdate alloc] initWithTcpIpAddress:testTcpIpAddress tcpPort:testTcpPort];
testTransportEventUpdateMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testTransportEventUpdateHeader andPayload:testTransportEventUpdatePayload.data];
- testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
+ testStartServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:testHashId mtu:testMtu authToken:nil protocolVersion:testProtocolVersion secondaryTransports:testSecondaryTransports audioServiceTransports:testAudioServiceTransports videoServiceTransports:testVideoServiceTransports];
testStartServiceACKMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testStartServiceACKHeader andPayload:testStartServiceACKPayload.data];
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLHybridAppPreferenceSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLHybridAppPreferenceSpec.m
new file mode 100644
index 000000000..29747b324
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLHybridAppPreferenceSpec.m
@@ -0,0 +1,24 @@
+//
+// SDLHybridAppPreferenceSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLHybridAppPreference.h"
+
+QuickSpecBegin(SDLHybridAppPreferenceSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect(SDLHybridAppPreferenceMobile).to(equal(@"MOBILE"));
+ expect(SDLHybridAppPreferenceCloud).to(equal(@"CLOUD"));
+ expect(SDLHybridAppPreferenceBoth).to(equal(@"BOTH"));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRequestTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRequestTypeSpec.m
index 3ee2f7a15..c6c9061f1 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRequestTypeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRequestTypeSpec.m
@@ -35,6 +35,7 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLRequestTypeMedia).to(equal(@"MEDIA"));
expect(SDLRequestTypeFOTA).to(equal(@"FOTA"));
expect(SDLRequestTypeOEMSpecific).to(equal(@"OEM_SPECIFIC"));
+ expect(SDLRequestTypeIconURL).to(equal(@"ICON_URL"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
index 2d9812475..16f87d613 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
@@ -44,6 +44,7 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLVehicleDataTypeSteeringWheel).to(equal(@"VEHICLEDATA_STEERINGWHEEL"));
expect(SDLVehicleDataTypeElectronicParkBrakeStatus).to(equal(@"VEHICLEDATA_ELECTRONICPARKBRAKESTATUS"));
expect(SDLVehicleDataTypeTurnSignal).to(equal(@"VEHICLEDATA_TURNSIGNAL"));
+ expect(SDLVehicleDataTypeCloudAppVehicleID).to(equal(@"VEHICLEDATA_CLOUDAPPVEHICLEID"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
index cf17d7938..d28a9c843 100644
--- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
@@ -15,20 +15,37 @@
QuickSpecBegin(SDLOnVehicleDataSpec)
-SDLGPSData* gps = [[SDLGPSData alloc] init];
-SDLTireStatus* tires = [[SDLTireStatus alloc] init];
-SDLBeltStatus* belt = [[SDLBeltStatus alloc] init];
-SDLBodyInformation* body = [[SDLBodyInformation alloc] init];
-SDLDeviceStatus* device = [[SDLDeviceStatus alloc] init];
-SDLHeadLampStatus* headLamp = [[SDLHeadLampStatus alloc] init];
-SDLECallInfo* eCall = [[SDLECallInfo alloc] init];
-SDLAirbagStatus* airbag = [[SDLAirbagStatus alloc] init];
-SDLEmergencyEvent* event = [[SDLEmergencyEvent alloc] init];
-SDLClusterModeStatus* clusterMode = [[SDLClusterModeStatus alloc] init];
-SDLMyKey* myKey = [[SDLMyKey alloc] init];
-SDLFuelRange* fuelRange = [[SDLFuelRange alloc] init];
-
describe(@"Getter/Setter Tests", ^ {
+ __block SDLGPSData* gps = nil;
+ __block SDLTireStatus* tires = nil;
+ __block SDLBeltStatus* belt = nil;
+ __block SDLBodyInformation* body = nil;
+ __block SDLDeviceStatus* device = nil;
+ __block SDLHeadLampStatus* headLamp = nil;
+ __block SDLECallInfo* eCall = nil;
+ __block SDLAirbagStatus* airbag = nil;
+ __block SDLEmergencyEvent* event = nil;
+ __block SDLClusterModeStatus* clusterMode = nil;
+ __block SDLMyKey* myKey = nil;
+ __block SDLFuelRange* fuelRange = nil;
+ __block NSString* cloudAppVehicleID = nil;
+
+ beforeEach(^{
+ gps = [[SDLGPSData alloc] init];
+ tires = [[SDLTireStatus alloc] init];
+ belt = [[SDLBeltStatus alloc] init];
+ body = [[SDLBodyInformation alloc] init];
+ device = [[SDLDeviceStatus alloc] init];
+ headLamp = [[SDLHeadLampStatus alloc] init];
+ eCall = [[SDLECallInfo alloc] init];
+ airbag = [[SDLAirbagStatus alloc] init];
+ event = [[SDLEmergencyEvent alloc] init];
+ clusterMode = [[SDLClusterModeStatus alloc] init];
+ myKey = [[SDLMyKey alloc] init];
+ fuelRange = [[SDLFuelRange alloc] init];
+ cloudAppVehicleID = @"testCloudAppVehicleID";
+ });
+
it(@"Should set and get correctly", ^ {
SDLOnVehicleData* testNotification = [[SDLOnVehicleData alloc] init];
@@ -36,6 +53,7 @@ describe(@"Getter/Setter Tests", ^ {
testNotification.airbagStatus = airbag;
testNotification.beltStatus = belt;
testNotification.bodyInformation = body;
+ testNotification.cloudAppVehicleID = cloudAppVehicleID;
testNotification.clusterModeStatus = clusterMode;
testNotification.deviceStatus = device;
testNotification.driverBraking = SDLVehicleDataEventStatusYes;
@@ -66,6 +84,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testNotification.airbagStatus).to(equal(airbag));
expect(testNotification.beltStatus).to(equal(belt));
expect(testNotification.bodyInformation).to(equal(body));
+ expect(testNotification.cloudAppVehicleID).to(equal(cloudAppVehicleID));
expect(testNotification.clusterModeStatus).to(equal(clusterMode));
expect(testNotification.deviceStatus).to(equal(device));
expect(testNotification.driverBraking).to(equal(SDLVehicleDataEventStatusYes));
@@ -100,6 +119,7 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameAirbagStatus:airbag,
SDLRPCParameterNameBeltStatus:belt,
SDLRPCParameterNameBodyInformation:body,
+ SDLRPCParameterNameCloudAppVehicleID:cloudAppVehicleID,
SDLRPCParameterNameClusterModeStatus:clusterMode,
SDLRPCParameterNameDeviceStatus:device,
SDLRPCParameterNameDriverBraking:SDLVehicleDataEventStatusYes,
@@ -132,6 +152,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testNotification.airbagStatus).to(equal(airbag));
expect(testNotification.beltStatus).to(equal(belt));
expect(testNotification.bodyInformation).to(equal(body));
+ expect(testNotification.cloudAppVehicleID).to(equal(cloudAppVehicleID));
expect(testNotification.clusterModeStatus).to(equal(clusterMode));
expect(testNotification.deviceStatus).to(equal(device));
expect(testNotification.driverBraking).to(equal(SDLVehicleDataEventStatusYes));
@@ -166,6 +187,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testNotification.airbagStatus).to(beNil());
expect(testNotification.beltStatus).to(beNil());
expect(testNotification.bodyInformation).to(beNil());
+ expect(testNotification.cloudAppVehicleID).to(beNil());
expect(testNotification.clusterModeStatus).to(beNil());
expect(testNotification.deviceStatus).to(beNil());
expect(testNotification.driverBraking).to(beNil());
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m
new file mode 100644
index 000000000..37c1810a2
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m
@@ -0,0 +1,60 @@
+//
+// SDLGetCloudAppPropertiesSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLGetDTCs.h"
+#import "SDLGetCloudAppProperties.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+
+QuickSpecBegin(SDLGetCloudAppPropertiesSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ __block NSString *testAppID = nil;
+
+ beforeEach(^{
+ testAppID = @"testAppID";
+ });
+
+ it(@"Should set and get correctly", ^{
+ SDLGetCloudAppProperties *testRequest = [[SDLGetCloudAppProperties alloc] init];
+ testRequest.appID = testAppID;
+
+ expect(testRequest.appID).to(equal(testAppID));
+ });
+
+ it(@"Should initialize correctly with a dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:@{
+ SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAppId:testAppID
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetCloudAppProperties}};
+ SDLGetCloudAppProperties *testRequest = [[SDLGetCloudAppProperties alloc] initWithDictionary:dict];
+
+ expect(testRequest.appID).to(equal(testAppID));
+ expect(testRequest.getFunctionName).to(equal(SDLRPCFunctionNameGetCloudAppProperties));
+ });
+
+ it(@"Should initialize correctly with the convenience init", ^{
+ SDLGetCloudAppProperties *testRequest = [[SDLGetCloudAppProperties alloc] initWithAppID:testAppID];
+
+ expect(testRequest.appID).to(equal(testAppID));
+ });
+
+ it(@"Should return nil if not set", ^{
+ SDLGetCloudAppProperties *testRequest = [[SDLGetCloudAppProperties alloc] init];
+
+ expect(testRequest.appID).to(beNil());
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
index 4e322452c..4945d87fd 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
@@ -22,6 +22,7 @@ describe(@"Getter/Setter Tests", ^ {
testRequest.airbagStatus = @NO;
testRequest.beltStatus = @NO;
testRequest.bodyInformation = @YES;
+ testRequest.cloudAppVehicleID = @YES;
testRequest.clusterModeStatus = @NO;
testRequest.deviceStatus = @NO;
testRequest.driverBraking = @YES;
@@ -51,6 +52,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.airbagStatus).to(equal(@NO));
expect(testRequest.beltStatus).to(equal(@NO));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
expect(testRequest.clusterModeStatus).to(equal(@NO));
expect(testRequest.deviceStatus).to(equal(@NO));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -84,6 +86,7 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameAirbagStatus:@YES,
SDLRPCParameterNameBeltStatus:@YES,
SDLRPCParameterNameBodyInformation:@YES,
+ SDLRPCParameterNameCloudAppVehicleID:@YES,
SDLRPCParameterNameClusterModeStatus:@YES,
SDLRPCParameterNameDeviceStatus:@YES,
SDLRPCParameterNameDriverBraking:@YES,
@@ -115,6 +118,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -150,6 +154,7 @@ describe(@"initializers", ^{
expect(testRequest.airbagStatus).to(beNil());
expect(testRequest.beltStatus).to(beNil());
expect(testRequest.bodyInformation).to(beNil());
+ expect(testRequest.cloudAppVehicleID).to(beNil());
expect(testRequest.clusterModeStatus).to(beNil());
expect(testRequest.deviceStatus).to(beNil());
expect(testRequest.driverBraking).to(beNil());
@@ -185,6 +190,7 @@ describe(@"initializers", ^{
expect(testRequest.airbagStatus).to(equal(@NO));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@NO));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -213,12 +219,49 @@ describe(@"initializers", ^{
});
context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES vin:YES wiperStatus:YES];
expect(testRequest.accPedalPosition).to(equal(@YES));
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@NO));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+ expect(testRequest.prndl).to(equal(@YES));
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ #pragma clang diagnostic pop
+ });
+ context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
+ SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES vin:YES wiperStatus:YES];
+
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
index 17b7c351e..d559adaa2 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
@@ -43,7 +43,7 @@ describe(@"RegisterAppInterface Tests", ^{
__block SDLAppInfo *appInfo = nil;
__block SDLTemplateColorScheme *colorScheme = nil;
- __block SDLSyncMsgVersion *currentSyncMsgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:0 patchVersion:0];
+ __block SDLSyncMsgVersion *currentSyncMsgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:1 patchVersion:0];
beforeEach(^{
testRegisterAppInterface = nil;
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m
new file mode 100644
index 000000000..974170a3d
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m
@@ -0,0 +1,58 @@
+//
+// SDLSetCloudAppPropertiesSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLCloudAppProperties.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLSetCloudAppProperties.h"
+
+QuickSpecBegin(SDLSetCloudAppPropertiesSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ __block SDLCloudAppProperties *testProperties = nil;
+
+ beforeEach(^{
+ testProperties = [[SDLCloudAppProperties alloc] initWithAppID:@"testAppID"];
+ });
+
+ it(@"Should set and get correctly", ^{
+ SDLSetCloudAppProperties *testRequest = [[SDLSetCloudAppProperties alloc] init];
+ testRequest.properties = testProperties;
+
+ expect(testRequest.properties).to(equal(testProperties));
+ });
+
+ it(@"Should initialize correctly with a dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:@{
+ SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameProperties:testProperties
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetCloudAppProperties}};
+ SDLSetCloudAppProperties *testRequest = [[SDLSetCloudAppProperties alloc] initWithDictionary:dict];
+
+ expect(testRequest.properties).to(equal(testProperties));
+ });
+
+ it(@"Should initialize correctly with the convenience init", ^{
+ SDLSetCloudAppProperties *testRequest = [[SDLSetCloudAppProperties alloc] initWithProperties:testProperties];
+
+ expect(testRequest.properties).to(equal(testProperties));
+ });
+
+ it(@"Should return nil if not set", ^{
+ SDLSetCloudAppProperties *testRequest = [[SDLSetCloudAppProperties alloc] init];
+
+ expect(testRequest.properties).to(beNil());
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
index 9934b20e1..c90c8a45e 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
@@ -22,6 +22,7 @@ describe(@"Getter/Setter Tests", ^ {
testRequest.airbagStatus = @NO;
testRequest.beltStatus = @NO;
testRequest.bodyInformation = @YES;
+ testRequest.cloudAppVehicleID = @YES;
testRequest.clusterModeStatus = @NO;
testRequest.deviceStatus = @NO;
testRequest.driverBraking = @YES;
@@ -51,6 +52,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.airbagStatus).to(equal(@NO));
expect(testRequest.beltStatus).to(equal(@NO));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
expect(testRequest.clusterModeStatus).to(equal(@NO));
expect(testRequest.deviceStatus).to(equal(@NO));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -77,13 +79,14 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.wiperStatus).to(equal(@NO));
});
- it(@"Should get correctly when initialized", ^ {
+ it(@"Should get correctly when initialized with a dictionary", ^ {
NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
@{SDLRPCParameterNameAccelerationPedalPosition:@YES,
SDLRPCParameterNameAirbagStatus:@YES,
SDLRPCParameterNameBeltStatus:@YES,
SDLRPCParameterNameBodyInformation:@YES,
+ SDLRPCParameterNameCloudAppVehicleID:@YES,
SDLRPCParameterNameClusterModeStatus:@YES,
SDLRPCParameterNameDeviceStatus:@YES,
SDLRPCParameterNameDriverBraking:@YES,
@@ -115,6 +118,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -150,6 +154,7 @@ describe(@"initializers", ^{
expect(testRequest.airbagStatus).to(beNil());
expect(testRequest.beltStatus).to(beNil());
expect(testRequest.bodyInformation).to(beNil());
+ expect(testRequest.cloudAppVehicleID).to(beNil());
expect(testRequest.clusterModeStatus).to(beNil());
expect(testRequest.deviceStatus).to(beNil());
expect(testRequest.driverBraking).to(beNil());
@@ -176,13 +181,49 @@ describe(@"initializers", ^{
expect(testRequest.wiperStatus).to(beNil());
});
+ context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
+ SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
+
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+ expect(testRequest.prndl).to(equal(@YES));
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
expect(testRequest.accPedalPosition).to(equal(@YES));
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@NO));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -207,6 +248,7 @@ describe(@"initializers", ^{
expect(testRequest.tirePressure).to(equal(@YES));
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ #pragma clang diagnostic pop
});
context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
@@ -218,6 +260,7 @@ describe(@"initializers", ^{
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@NO));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
index 10b4a1bcf..f538f412e 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
@@ -22,6 +22,7 @@ describe(@"Getter/Setter Tests", ^ {
testRequest.airbagStatus = @YES;
testRequest.beltStatus = @YES;
testRequest.bodyInformation = @YES;
+ testRequest.cloudAppVehicleID = @YES;
testRequest.clusterModeStatus = @YES;
testRequest.deviceStatus = @YES;
testRequest.driverBraking = @YES;
@@ -51,6 +52,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -77,13 +79,14 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.wiperStatus).to(equal(@YES));
});
- it(@"Should get correctly when initialized", ^ {
+ it(@"Should get correctly when initialized with a dictionary", ^ {
NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
@{SDLRPCParameterNameAccelerationPedalPosition:@YES,
SDLRPCParameterNameAirbagStatus:@YES,
SDLRPCParameterNameBeltStatus:@YES,
SDLRPCParameterNameBodyInformation:@YES,
+ SDLRPCParameterNameCloudAppVehicleID:@YES,
SDLRPCParameterNameClusterModeStatus:@YES,
SDLRPCParameterNameDeviceStatus:@YES,
SDLRPCParameterNameDriverBraking:@YES,
@@ -115,6 +118,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -150,6 +154,7 @@ describe(@"initializers", ^{
expect(testRequest.airbagStatus).to(beNil());
expect(testRequest.beltStatus).to(beNil());
expect(testRequest.bodyInformation).to(beNil());
+ expect(testRequest.cloudAppVehicleID).to(beNil());
expect(testRequest.clusterModeStatus).to(beNil());
expect(testRequest.deviceStatus).to(beNil());
expect(testRequest.driverBraking).to(beNil());
@@ -175,14 +180,49 @@ describe(@"initializers", ^{
expect(testRequest.turnSignal).to(beNil());
expect(testRequest.wiperStatus).to(beNil());
});
+ context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:", ^{
+ SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+ expect(testRequest.prndl).to(equal(@YES));
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:", ^{
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
expect(testRequest.accPedalPosition).to(equal(@YES));
expect(testRequest.airbagStatus).to(equal(@YES));
expect(testRequest.beltStatus).to(equal(@YES));
expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@NO));
expect(testRequest.clusterModeStatus).to(equal(@YES));
expect(testRequest.deviceStatus).to(equal(@YES));
expect(testRequest.driverBraking).to(equal(@YES));
@@ -207,6 +247,7 @@ describe(@"initializers", ^{
expect(testRequest.tirePressure).to(equal(@YES));
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ #pragma clang diagnostic pop
});
context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m
new file mode 100644
index 000000000..4da3f7c89
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m
@@ -0,0 +1,59 @@
+//
+// SDLGetCloudAppPropertiesResponseSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLCloudAppProperties.h"
+#import "SDLGetCloudAppPropertiesResponse.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+QuickSpecBegin(SDLGetCloudAppPropertiesResponseSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ __block SDLCloudAppProperties *testProperties = nil;
+
+ beforeEach(^{
+ testProperties = [[SDLCloudAppProperties alloc] initWithAppID:@"testAppID"];
+ });
+
+ it(@"Should set and get correctly", ^{
+ SDLGetCloudAppPropertiesResponse *testResponse = [[SDLGetCloudAppPropertiesResponse alloc] init];
+ testResponse.properties = testProperties;
+
+ expect(testResponse.properties).to(equal(testProperties));
+ });
+
+ it(@"Should initialize correctly with a dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameResponse:@{
+ SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameProperties:testProperties
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetCloudAppProperties}};
+ SDLGetCloudAppPropertiesResponse *testResponse = [[SDLGetCloudAppPropertiesResponse alloc] initWithDictionary:dict];
+
+ expect(testResponse.properties).to(equal(testProperties));
+ expect(testResponse.name).to(equal(SDLRPCFunctionNameSetCloudAppProperties));
+ });
+
+ it(@"Should initialize correctly with the convenience init", ^{
+ SDLGetCloudAppPropertiesResponse *testResponse = [[SDLGetCloudAppPropertiesResponse alloc] initWithProperties:testProperties];
+
+ expect(testResponse.properties).to(equal(testProperties));
+ });
+
+ it(@"Should return nil if not set", ^{
+ SDLGetCloudAppPropertiesResponse *testResponse = [[SDLGetCloudAppPropertiesResponse alloc] init];
+
+ expect(testResponse.properties).to(beNil());
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
index 6eb1bbc3d..9d672c532 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
@@ -15,20 +15,39 @@
QuickSpecBegin(SDLGetVehicleDataResponseSpec)
-SDLGPSData* gps = [[SDLGPSData alloc] init];
-SDLTireStatus* tires = [[SDLTireStatus alloc] init];
-SDLBeltStatus* belt = [[SDLBeltStatus alloc] init];
-SDLBodyInformation* body = [[SDLBodyInformation alloc] init];
-SDLDeviceStatus* device = [[SDLDeviceStatus alloc] init];
-SDLHeadLampStatus* headLamp = [[SDLHeadLampStatus alloc] init];
-SDLECallInfo* eCall = [[SDLECallInfo alloc] init];
-SDLAirbagStatus* airbag = [[SDLAirbagStatus alloc] init];
-SDLEmergencyEvent* event = [[SDLEmergencyEvent alloc] init];
-SDLClusterModeStatus* clusterMode = [[SDLClusterModeStatus alloc] init];
-SDLMyKey* myKey = [[SDLMyKey alloc] init];
-SDLFuelRange* fuelRange = [[SDLFuelRange alloc] init];
-
describe(@"Getter/Setter Tests", ^ {
+ __block SDLGPSData* gps = nil;
+ __block SDLTireStatus* tires = nil;
+ __block SDLBeltStatus* belt = nil;
+ __block SDLBodyInformation* body = nil;
+ __block SDLDeviceStatus* device = nil;
+ __block SDLHeadLampStatus* headLamp = nil;
+ __block SDLECallInfo* eCall = nil;
+ __block SDLAirbagStatus* airbag = nil;
+ __block SDLEmergencyEvent* event = nil;
+ __block SDLClusterModeStatus* clusterMode = nil;
+ __block SDLMyKey* myKey = nil;
+ __block SDLFuelRange* fuelRange = nil;
+ __block NSString* vin = nil;
+ __block NSString* cloudAppVehicleID = nil;
+
+ beforeEach(^{
+ gps = [[SDLGPSData alloc] init];
+ tires = [[SDLTireStatus alloc] init];
+ belt = [[SDLBeltStatus alloc] init];
+ body = [[SDLBodyInformation alloc] init];
+ device = [[SDLDeviceStatus alloc] init];
+ headLamp = [[SDLHeadLampStatus alloc] init];
+ eCall = [[SDLECallInfo alloc] init];
+ airbag = [[SDLAirbagStatus alloc] init];
+ event = [[SDLEmergencyEvent alloc] init];
+ clusterMode = [[SDLClusterModeStatus alloc] init];
+ myKey = [[SDLMyKey alloc] init];
+ fuelRange = [[SDLFuelRange alloc] init];
+ vin = @"6574839201a";
+ cloudAppVehicleID = @"cloudAppVehicleID";
+ });
+
it(@"Should set and get correctly", ^ {
SDLGetVehicleDataResponse* testResponse = [[SDLGetVehicleDataResponse alloc] init];
@@ -36,6 +55,7 @@ describe(@"Getter/Setter Tests", ^ {
testResponse.airbagStatus = airbag;
testResponse.beltStatus = belt;
testResponse.bodyInformation = body;
+ testResponse.cloudAppVehicleID = cloudAppVehicleID;
testResponse.clusterModeStatus = clusterMode;
testResponse.deviceStatus = device;
testResponse.driverBraking = SDLVehicleDataEventStatusNoEvent;
@@ -59,13 +79,14 @@ describe(@"Getter/Setter Tests", ^ {
testResponse.steeringWheelAngle = @-1500;
testResponse.tirePressure = tires;
testResponse.turnSignal = SDLTurnSignalBoth;
- testResponse.vin = @"6574839201";
+ testResponse.vin = vin;
testResponse.wiperStatus = SDLWiperStatusAutomaticHigh;
expect(testResponse.accPedalPosition).to(equal(@0));
expect(testResponse.airbagStatus).to(equal(airbag));
expect(testResponse.beltStatus).to(equal(belt));
expect(testResponse.bodyInformation).to(equal(body));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
expect(testResponse.clusterModeStatus).to(equal(clusterMode));
expect(testResponse.deviceStatus).to(equal(device));
expect(testResponse.driverBraking).to(equal(SDLVehicleDataEventStatusNoEvent));
@@ -89,7 +110,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.steeringWheelAngle).to(equal(@-1500));
expect(testResponse.tirePressure).to(equal(tires));
expect(testResponse.turnSignal).to(equal(SDLTurnSignalBoth));
- expect(testResponse.vin).to(equal(@"6574839201"));
+ expect(testResponse.vin).to(equal(vin));
expect(testResponse.wiperStatus).to(equal(SDLWiperStatusAutomaticHigh));
});
@@ -101,6 +122,7 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameAirbagStatus:airbag,
SDLRPCParameterNameBeltStatus:belt,
SDLRPCParameterNameBodyInformation:body,
+ SDLRPCParameterNameCloudAppVehicleID:cloudAppVehicleID,
SDLRPCParameterNameClusterModeStatus:clusterMode,
SDLRPCParameterNameDeviceStatus:device,
SDLRPCParameterNameDriverBraking:SDLVehicleDataEventStatusNoEvent,
@@ -124,7 +146,7 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameSteeringWheelAngle:@-1500,
SDLRPCParameterNameTirePressure:tires,
SDLRPCParameterNameTurnSignal:SDLTurnSignalOff,
- SDLRPCParameterNameVIN:@"6574839201",
+ SDLRPCParameterNameVIN:vin,
SDLRPCParameterNameWiperStatus:SDLWiperStatusAutomaticHigh},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}} mutableCopy];
SDLGetVehicleDataResponse* testResponse = [[SDLGetVehicleDataResponse alloc] initWithDictionary:dict];
@@ -133,6 +155,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.airbagStatus).to(equal(airbag));
expect(testResponse.beltStatus).to(equal(belt));
expect(testResponse.bodyInformation).to(equal(body));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
expect(testResponse.clusterModeStatus).to(equal(clusterMode));
expect(testResponse.deviceStatus).to(equal(device));
expect(testResponse.driverBraking).to(equal(SDLVehicleDataEventStatusNoEvent));
@@ -156,7 +179,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.steeringWheelAngle).to(equal(@-1500));
expect(testResponse.tirePressure).to(equal(tires));
expect(testResponse.turnSignal).to(equal(SDLTurnSignalOff));
- expect(testResponse.vin).to(equal(@"6574839201"));
+ expect(testResponse.vin).to(equal(vin));
expect(testResponse.wiperStatus).to(equal(SDLWiperStatusAutomaticHigh));
});
@@ -167,6 +190,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.airbagStatus).to(beNil());
expect(testResponse.beltStatus).to(beNil());
expect(testResponse.bodyInformation).to(beNil());
+ expect(testResponse.cloudAppVehicleID).to(beNil());
expect(testResponse.clusterModeStatus).to(beNil());
expect(testResponse.deviceStatus).to(beNil());
expect(testResponse.driverBraking).to(beNil());
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m
new file mode 100644
index 000000000..fdcf9144e
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m
@@ -0,0 +1,37 @@
+//
+// SDLSetCloudAppPropertiesResponseSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLSetCloudAppPropertiesResponse.h"
+
+QuickSpecBegin(SDLSetCloudAppPropertiesResponseSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^{
+ SDLSetCloudAppPropertiesResponse *testResponse = [[SDLSetCloudAppPropertiesResponse alloc] init];
+
+ expect(testResponse).toNot(beNil());
+ });
+
+ it(@"Should get correctly when initialized with a dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameResponse:@{
+ SDLRPCParameterNameParameters:@{},
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetCloudAppProperties}};
+ SDLSetCloudAppPropertiesResponse *testResponse = [[SDLSetCloudAppPropertiesResponse alloc] initWithDictionary:dict];
+
+ expect(testResponse).toNot(beNil());
+ expect(testResponse.name).to(equal(SDLRPCFunctionNameSetCloudAppProperties));
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
index af4d48f50..fa3f163a4 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
@@ -26,6 +26,7 @@ describe(@"Getter/Setter Tests", ^ {
testResponse.airbagStatus = vehicleDataResult;
testResponse.beltStatus = vehicleDataResult;
testResponse.bodyInformation = vehicleDataResult;
+ testResponse.cloudAppVehicleID = vehicleDataResult;
testResponse.clusterModes = vehicleDataResult;
testResponse.deviceStatus = vehicleDataResult;
testResponse.driverBraking = vehicleDataResult;
@@ -55,6 +56,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
expect(testResponse.beltStatus).to(equal(vehicleDataResult));
expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
expect(testResponse.clusterModes).to(equal(vehicleDataResult));
expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
expect(testResponse.driverBraking).to(equal(vehicleDataResult));
@@ -88,6 +90,7 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameAirbagStatus:vehicleDataResult,
SDLRPCParameterNameBeltStatus:vehicleDataResult,
SDLRPCParameterNameBodyInformation:vehicleDataResult,
+ SDLRPCParameterNameCloudAppVehicleID:vehicleDataResult,
SDLRPCParameterNameClusterModes:vehicleDataResult,
SDLRPCParameterNameDeviceStatus:vehicleDataResult,
SDLRPCParameterNameDriverBraking:vehicleDataResult,
@@ -119,6 +122,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
expect(testResponse.beltStatus).to(equal(vehicleDataResult));
expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
expect(testResponse.clusterModes).to(equal(vehicleDataResult));
expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
expect(testResponse.driverBraking).to(equal(vehicleDataResult));
@@ -152,6 +156,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.airbagStatus).to(beNil());
expect(testResponse.beltStatus).to(beNil());
expect(testResponse.bodyInformation).to(beNil());
+ expect(testResponse.cloudAppVehicleID).to(beNil());
expect(testResponse.clusterModes).to(beNil());
expect(testResponse.deviceStatus).to(beNil());
expect(testResponse.driverBraking).to(beNil());
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
index eb88136dd..d9ba58f6b 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
@@ -50,6 +50,7 @@ describe(@"Getter/Setter Tests", ^ {
testResponse.myKey = vehicleDataResult;
testResponse.electronicParkBrakeStatus = vehicleDataResult;
testResponse.turnSignal = vehicleDataResult;
+ testResponse.cloudAppVehicleID = vehicleDataResult;
expect(testResponse.gps).to(equal(vehicleDataResult));
expect(testResponse.speed).to(equal(vehicleDataResult));
@@ -79,6 +80,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.myKey).to(equal(vehicleDataResult));
expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
});
it(@"Should get correctly when initialized", ^ {
@@ -112,6 +114,7 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameMyKey:vehicleDataResult,
SDLRPCParameterNameElectronicParkBrakeStatus:vehicleDataResult,
SDLRPCParameterNameTurnSignal:vehicleDataResult,
+ SDLRPCParameterNameCloudAppVehicleID:vehicleDataResult
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}} mutableCopy];
SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithDictionary:dict];
@@ -144,6 +147,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.myKey).to(equal(vehicleDataResult));
expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
});
it(@"Should return nil if not set", ^ {
@@ -177,6 +181,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.myKey).to(beNil());
expect(testResponse.electronicParkBrakeStatus).to(beNil());
expect(testResponse.turnSignal).to(beNil());
+ expect(testResponse.cloudAppVehicleID).to(beNil());
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m
new file mode 100644
index 000000000..8e933275e
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m
@@ -0,0 +1,114 @@
+//
+// SDLCloudAppPropertiesSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLCloudAppProperties.h"
+#import "SDLHybridAppPreference.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+QuickSpecBegin(SDLCloudAppPropertiesSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ __block NSArray<NSString *> *testNicknames = nil;
+ __block NSString *testAppID = nil;
+ __block BOOL testEnabled = nil;
+ __block NSString *testAuthToken = nil;
+ __block NSString *testCloudTransportType = nil;
+ __block SDLHybridAppPreference testHybridAppPreference = nil;
+ __block NSString *testEndpoint = nil;
+
+ beforeEach(^{
+ testNicknames = @[@"testNickname1", @"testNickname2", @"testNickname3"];
+ testAppID = @"testAppID";
+ testEnabled = false;
+ testAuthToken = @"testAuthToken";
+ testCloudTransportType = @"testCloudTransportType";
+ testHybridAppPreference = SDLHybridAppPreferenceCloud;
+ testEndpoint = @"testEndpoint";
+ });
+
+ it(@"Should set and get correctly", ^{
+ SDLCloudAppProperties *testStruct = [[SDLCloudAppProperties alloc] init];
+ testStruct.nicknames = testNicknames;
+ testStruct.appID = testAppID;
+ testStruct.enabled = @(testEnabled);
+ testStruct.authToken = testAuthToken;
+ testStruct.cloudTransportType = testCloudTransportType;
+ testStruct.hybridAppPreference = testHybridAppPreference;
+ testStruct.endpoint = testEndpoint;
+
+ expect(testStruct.nicknames).to(equal(testNicknames));
+ expect(testStruct.appID).to(equal(testAppID));
+ expect(testStruct.enabled).to(equal(testEnabled));
+ expect(testStruct.authToken).to(equal(testAuthToken));
+ expect(testStruct.cloudTransportType).to(equal(testCloudTransportType));
+ expect(testStruct.hybridAppPreference).to(equal(testHybridAppPreference));
+ expect(testStruct.endpoint).to(equal(testEndpoint));
+ });
+
+ it(@"Should get correctly when initialized with a dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameNicknames:testNicknames,
+ SDLRPCParameterNameAppId:testAppID,
+ SDLRPCParameterNameEnabled:@(testEnabled),
+ SDLRPCParameterNameAuthToken:testAuthToken,
+ SDLRPCParameterNameCloudTransportType:testCloudTransportType,
+ SDLRPCParameterNameHybridAppPreference:testHybridAppPreference,
+ SDLRPCParameterNameEndpoint:testEndpoint
+ };
+ SDLCloudAppProperties *testStruct = [[SDLCloudAppProperties alloc] initWithDictionary:dict];
+
+ expect(testStruct.nicknames).to(equal(testNicknames));
+ expect(testStruct.appID).to(equal(testAppID));
+ expect(testStruct.enabled).to(equal(testEnabled));
+ expect(testStruct.authToken).to(equal(testAuthToken));
+ expect(testStruct.cloudTransportType).to(equal(testCloudTransportType));
+ expect(testStruct.hybridAppPreference).to(equal(testHybridAppPreference));
+ expect(testStruct.endpoint).to(equal(testEndpoint));
+ });
+
+ it(@"Should get correctly when initialized with initWithAppID:", ^{
+ SDLCloudAppProperties *testStruct = [[SDLCloudAppProperties alloc] initWithAppID:testAppID];
+
+ expect(testStruct.appID).to(equal(testAppID));
+ expect(testStruct.nicknames).to(beNil());
+ expect(testStruct.enabled).to(beNil());
+ expect(testStruct.authToken).to(beNil());
+ expect(testStruct.cloudTransportType).to(beNil());
+ expect(testStruct.hybridAppPreference).to(beNil());
+ expect(testStruct.endpoint).to(beNil());
+ });
+
+ it(@"Should get correctly when initialized with initWithAppName:appID:enabled:authToken:cloudTransportType: hybridAppPreference:endpoint:", ^{
+ SDLCloudAppProperties *testStruct = [[SDLCloudAppProperties alloc] initWithAppID:testAppID nicknames:testNicknames enabled:testEnabled authToken:testAuthToken cloudTransportType:testCloudTransportType hybridAppPreference:testHybridAppPreference endpoint:testEndpoint];
+
+ expect(testStruct.nicknames).to(equal(testNicknames));
+ expect(testStruct.appID).to(equal(testAppID));
+ expect(testStruct.enabled).to(equal(testEnabled));
+ expect(testStruct.authToken).to(equal(testAuthToken));
+ expect(testStruct.cloudTransportType).to(equal(testCloudTransportType));
+ expect(testStruct.hybridAppPreference).to(equal(testHybridAppPreference));
+ expect(testStruct.endpoint).to(equal(testEndpoint));
+ });
+
+ it(@"Should return nil if not set", ^{
+ SDLCloudAppProperties *testStruct = [[SDLCloudAppProperties alloc] init];
+
+ expect(testStruct.nicknames).to(beNil());
+ expect(testStruct.appID).to(beNil());
+ expect(testStruct.enabled).to(beNil());
+ expect(testStruct.authToken).to(beNil());
+ expect(testStruct.cloudTransportType).to(beNil());
+ expect(testStruct.hybridAppPreference).to(beNil());
+ expect(testStruct.endpoint).to(beNil());
+ });
+});
+
+QuickSpecEnd