summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2016-11-04 14:45:04 -0400
committerJoel Fischer <joeljfischer@gmail.com>2016-11-04 14:45:04 -0400
commite5ef7e8c396c955271e811a7a7e6a1aa1ec0eda2 (patch)
tree5630bde8aa22593f9fa71516954d366b218519d0
parent7807db690ab3f88bd9a2c77ea675c8e6d4281d4c (diff)
parent0ae15b3b1fda7c2c299fb9c1e40d4137f61af126 (diff)
downloadsdl_ios-e5ef7e8c396c955271e811a7a7e6a1aa1ec0eda2.tar.gz
Merge branch 'feature/sdl_0003_last_mile' into release/4.4.0
-rw-r--r--SmartDeviceLink-iOS.podspec10
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj120
-rw-r--r--SmartDeviceLink/SDLFunctionID.m2
-rw-r--r--SmartDeviceLink/SDLGetWaypoints.h20
-rw-r--r--SmartDeviceLink/SDLGetWaypoints.m46
-rw-r--r--SmartDeviceLink/SDLGetWaypointsResponse.h19
-rw-r--r--SmartDeviceLink/SDLGetWaypointsResponse.m27
-rw-r--r--SmartDeviceLink/SDLLocationCoordinate.h22
-rw-r--r--SmartDeviceLink/SDLLocationCoordinate.m33
-rw-r--r--SmartDeviceLink/SDLLocationDetails.h68
-rw-r--r--SmartDeviceLink/SDLLocationDetails.m97
-rw-r--r--SmartDeviceLink/SDLNames.h7
-rw-r--r--SmartDeviceLink/SDLOnWaypointChange.h17
-rw-r--r--SmartDeviceLink/SDLOnWaypointChange.m28
-rw-r--r--SmartDeviceLink/SDLSubscribeWaypoints.h16
-rw-r--r--SmartDeviceLink/SDLSubscribeWaypoints.m15
-rw-r--r--SmartDeviceLink/SDLSubscribeWaypointsResponse.h8
-rw-r--r--SmartDeviceLink/SDLSubscribeWaypointsResponse.m15
-rw-r--r--SmartDeviceLink/SDLUnsubscribeWaypoints.h8
-rw-r--r--SmartDeviceLink/SDLUnsubscribeWaypoints.m8
-rw-r--r--SmartDeviceLink/SDLUnsubscribeWaypointsResponse.h8
-rw-r--r--SmartDeviceLink/SDLUnsubscribeWaypointsResponse.m8
-rw-r--r--SmartDeviceLink/SDLWaypointType.h36
-rw-r--r--SmartDeviceLink/SDLWaypointType.m46
-rw-r--r--SmartDeviceLink/SmartDeviceLink.h10
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m9
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAmbientLightStatusSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWaypointTypeSpec.m51
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m102
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m42
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeWaypointsSpec.m13
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeWaypointsSpec.m13
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m101
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeWaypointsResponseSpec.m13
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeWaypointsResponseSpec.m13
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m95
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m192
37 files changed, 1338 insertions, 2 deletions
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec
index 85bd792f0..ed0b7766c 100644
--- a/SmartDeviceLink-iOS.podspec
+++ b/SmartDeviceLink-iOS.podspec
@@ -59,6 +59,7 @@ s.public_header_files = [
'SmartDeviceLink/SDLEndAudioPassThru.h',
'SmartDeviceLink/SDLGetDTCs.h',
'SmartDeviceLink/SDLGetVehicleData.h',
+'SmartDeviceLink/SDLGetWaypoints.h',
'SmartDeviceLink/SDLListFiles.h',
'SmartDeviceLink/SDLPerformAudioPassThru.h',
'SmartDeviceLink/SDLPerformInteraction.h',
@@ -78,10 +79,12 @@ s.public_header_files = [
'SmartDeviceLink/SDLSpeak.h',
'SmartDeviceLink/SDLSubscribeButton.h',
'SmartDeviceLink/SDLSubscribeVehicleData.h',
+'SmartDeviceLink/SDLSubscribeWaypoints.h',
'SmartDeviceLink/SDLSyncPData.h',
'SmartDeviceLink/SDLUnregisterAppInterface.h',
'SmartDeviceLink/SDLUnsubscribeButton.h',
'SmartDeviceLink/SDLUnsubscribeVehicleData.h',
+'SmartDeviceLink/SDLUnsubscribeWaypoints.h',
'SmartDeviceLink/SDLUpdateTurnList.h',
'SmartDeviceLink/SDLAddCommandResponse.h',
'SmartDeviceLink/SDLAddSubMenuResponse.h',
@@ -100,6 +103,7 @@ s.public_header_files = [
'SmartDeviceLink/SDLGenericResponse.h',
'SmartDeviceLink/SDLGetDTCsResponse.h',
'SmartDeviceLink/SDLGetVehicleDataResponse.h',
+'SmartDeviceLink/SDLGetWaypointsResponse.h',
'SmartDeviceLink/SDLListFilesResponse.h',
'SmartDeviceLink/SDLPerformAudioPassThruResponse.h',
'SmartDeviceLink/SDLPerformInteractionResponse.h',
@@ -119,10 +123,12 @@ s.public_header_files = [
'SmartDeviceLink/SDLSpeakResponse.h',
'SmartDeviceLink/SDLSubscribeButtonResponse.h',
'SmartDeviceLink/SDLSubscribeVehicleDataResponse.h',
+'SmartDeviceLink/SDLSubscribeWaypointsResponse.h',
'SmartDeviceLink/SDLSyncPDataResponse.h',
'SmartDeviceLink/SDLUnregisterAppInterfaceResponse.h',
'SmartDeviceLink/SDLUnsubscribeButtonResponse.h',
'SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h',
+'SmartDeviceLink/SDLUnsubscribeWaypointsResponse.h',
'SmartDeviceLink/SDLUpdateTurnListResponse.h',
'SmartDeviceLink/SDLOnAppInterfaceUnregistered.h',
'SmartDeviceLink/SDLOnAudioPassThru.h',
@@ -142,6 +148,7 @@ s.public_header_files = [
'SmartDeviceLink/SDLOnTBTClientState.h',
'SmartDeviceLink/SDLOnTouchEvent.h',
'SmartDeviceLink/SDLOnVehicleData.h',
+'SmartDeviceLink/SDLOnWaypointChange.h',
'SmartDeviceLink/SDLAirbagStatus.h',
'SmartDeviceLink/SDLAppInfo.h',
'SmartDeviceLink/SDLAudioPassThruCapabilities.h',
@@ -222,6 +229,8 @@ s.public_header_files = [
'SmartDeviceLink/SDLKeypressMode.h',
'SmartDeviceLink/SDLLanguage.h',
'SmartDeviceLink/SDLLayoutMode.h',
+'SmartDeviceLink/SDLLocationCoordinate.h',
+'SmartDeviceLink/SDLLocationDetails.h',
'SmartDeviceLink/SDLLockScreenStatus.h',
'SmartDeviceLink/SDLMaintenanceModeStatus.h',
'SmartDeviceLink/SDLMediaClockFormat.h',
@@ -255,6 +264,7 @@ s.public_header_files = [
'SmartDeviceLink/SDLVehicleDataStatus.h',
'SmartDeviceLink/SDLVehicleDataType.h',
'SmartDeviceLink/SDLWarningLightStatus.h',
+'SmartDeviceLink/SDLWaypointType.h',
'SmartDeviceLink/SDLWiperStatus.h',
'SmartDeviceLink/SDLConfiguration.h',
'SmartDeviceLink/SDLLifecycleConfiguration.h',
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index af9b83a83..f6f895478 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -909,6 +909,36 @@
DA7515C11D95FAA000F29323 /* sdl_logo_white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7515AF1D95FAA000F29323 /* sdl_logo_white@2x.png */; };
DA7515C21D95FAA000F29323 /* sdl_logo_white@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7515B01D95FAA000F29323 /* sdl_logo_white@3x.png */; };
DA96C0661D4D4F730022F520 /* SDLAppInfoSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA96C0651D4D4F730022F520 /* SDLAppInfoSpec.m */; };
+ DA9F7E6F1DCBFFDB00ACAE48 /* SDLGetWaypoints.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E6D1DCBFFDB00ACAE48 /* SDLGetWaypoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E701DCBFFDB00ACAE48 /* SDLGetWaypoints.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E6E1DCBFFDB00ACAE48 /* SDLGetWaypoints.m */; };
+ DA9F7E731DCC004C00ACAE48 /* SDLGetWaypointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E711DCC004C00ACAE48 /* SDLGetWaypointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E741DCC004C00ACAE48 /* SDLGetWaypointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E721DCC004C00ACAE48 /* SDLGetWaypointsResponse.m */; };
+ DA9F7E7F1DCC028B00ACAE48 /* SDLOnWaypointChange.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E7D1DCC028B00ACAE48 /* SDLOnWaypointChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E801DCC028B00ACAE48 /* SDLOnWaypointChange.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E7E1DCC028B00ACAE48 /* SDLOnWaypointChange.m */; };
+ DA9F7E831DCC047200ACAE48 /* SDLWaypointType.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E811DCC047200ACAE48 /* SDLWaypointType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E841DCC047200ACAE48 /* SDLWaypointType.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E821DCC047200ACAE48 /* SDLWaypointType.m */; };
+ DA9F7E871DCC049900ACAE48 /* SDLSubscribeWaypoints.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E851DCC049900ACAE48 /* SDLSubscribeWaypoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E881DCC049900ACAE48 /* SDLSubscribeWaypoints.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E861DCC049900ACAE48 /* SDLSubscribeWaypoints.m */; };
+ DA9F7E8B1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E891DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E8C1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E8A1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.m */; };
+ DA9F7E8F1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E8D1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E901DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E8E1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.m */; };
+ DA9F7E931DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E911DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E941DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E921DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.m */; };
+ DA9F7E991DCC052C00ACAE48 /* SDLLocationCoordinate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E951DCC052C00ACAE48 /* SDLLocationCoordinate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E9A1DCC052C00ACAE48 /* SDLLocationCoordinate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E961DCC052C00ACAE48 /* SDLLocationCoordinate.m */; };
+ DA9F7E9B1DCC052C00ACAE48 /* SDLLocationDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E971DCC052C00ACAE48 /* SDLLocationDetails.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA9F7E9C1DCC052C00ACAE48 /* SDLLocationDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */; };
+ DA9F7E9E1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E9D1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m */; };
+ DA9F7EA01DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E9F1DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m */; };
+ DA9F7EA21DCC05E100ACAE48 /* SDLGetWaypointsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EA11DCC05E100ACAE48 /* SDLGetWaypointsSpec.m */; };
+ DA9F7EA41DCC05EE00ACAE48 /* SDLSubscribeWaypointsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EA31DCC05EE00ACAE48 /* SDLSubscribeWaypointsSpec.m */; };
+ DA9F7EA61DCC05F500ACAE48 /* SDLUnsubscribeWaypointsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EA51DCC05F500ACAE48 /* SDLUnsubscribeWaypointsSpec.m */; };
+ DA9F7EA81DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EA71DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m */; };
+ DA9F7EAA1DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EA91DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m */; };
+ DA9F7EAC1DCC062400ACAE48 /* SDLUnsubscribeWaypointsResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EAB1DCC062400ACAE48 /* SDLUnsubscribeWaypointsResponseSpec.m */; };
+ DA9F7EAF1DCC063400ACAE48 /* SDLLocationCoordinateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EAD1DCC063400ACAE48 /* SDLLocationCoordinateSpec.m */; };
+ DA9F7EB01DCC063400ACAE48 /* SDLLocationDetailsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EAE1DCC063400ACAE48 /* SDLLocationDetailsSpec.m */; };
DA9F7E631DCBFAC800ACAE48 /* SDLDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E611DCBFAC800ACAE48 /* SDLDateTime.h */; settings = {ATTRIBUTES = (Public, ); }; };
DA9F7E641DCBFAC800ACAE48 /* SDLDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E621DCBFAC800ACAE48 /* SDLDateTime.m */; };
DA9F7E671DCBFAD400ACAE48 /* SDLOasisAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E651DCBFAD400ACAE48 /* SDLOasisAddress.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -1918,6 +1948,36 @@
DA7515AF1D95FAA000F29323 /* sdl_logo_white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "sdl_logo_white@2x.png"; sourceTree = "<group>"; };
DA7515B01D95FAA000F29323 /* sdl_logo_white@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "sdl_logo_white@3x.png"; sourceTree = "<group>"; };
DA96C0651D4D4F730022F520 /* SDLAppInfoSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppInfoSpec.m; sourceTree = "<group>"; };
+ DA9F7E6D1DCBFFDB00ACAE48 /* SDLGetWaypoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetWaypoints.h; sourceTree = "<group>"; };
+ DA9F7E6E1DCBFFDB00ACAE48 /* SDLGetWaypoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetWaypoints.m; sourceTree = "<group>"; };
+ DA9F7E711DCC004C00ACAE48 /* SDLGetWaypointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetWaypointsResponse.h; sourceTree = "<group>"; };
+ DA9F7E721DCC004C00ACAE48 /* SDLGetWaypointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetWaypointsResponse.m; sourceTree = "<group>"; };
+ DA9F7E7D1DCC028B00ACAE48 /* SDLOnWaypointChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnWaypointChange.h; sourceTree = "<group>"; };
+ DA9F7E7E1DCC028B00ACAE48 /* SDLOnWaypointChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnWaypointChange.m; sourceTree = "<group>"; };
+ DA9F7E811DCC047200ACAE48 /* SDLWaypointType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLWaypointType.h; sourceTree = "<group>"; };
+ DA9F7E821DCC047200ACAE48 /* SDLWaypointType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLWaypointType.m; sourceTree = "<group>"; };
+ DA9F7E851DCC049900ACAE48 /* SDLSubscribeWaypoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeWaypoints.h; sourceTree = "<group>"; };
+ DA9F7E861DCC049900ACAE48 /* SDLSubscribeWaypoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeWaypoints.m; sourceTree = "<group>"; };
+ DA9F7E891DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeWaypointsResponse.h; sourceTree = "<group>"; };
+ DA9F7E8A1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeWaypointsResponse.m; sourceTree = "<group>"; };
+ DA9F7E8D1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeWaypointsResponse.h; sourceTree = "<group>"; };
+ DA9F7E8E1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeWaypointsResponse.m; sourceTree = "<group>"; };
+ DA9F7E911DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeWaypoints.h; sourceTree = "<group>"; };
+ DA9F7E921DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeWaypoints.m; sourceTree = "<group>"; };
+ DA9F7E951DCC052C00ACAE48 /* SDLLocationCoordinate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLocationCoordinate.h; sourceTree = "<group>"; };
+ DA9F7E961DCC052C00ACAE48 /* SDLLocationCoordinate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLocationCoordinate.m; sourceTree = "<group>"; };
+ DA9F7E971DCC052C00ACAE48 /* SDLLocationDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLocationDetails.h; sourceTree = "<group>"; };
+ DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLocationDetails.m; sourceTree = "<group>"; };
+ DA9F7E9D1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLWaypointTypeSpec.m; sourceTree = "<group>"; };
+ DA9F7E9F1DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnWaypointChangeSpec.m; sourceTree = "<group>"; };
+ DA9F7EA11DCC05E100ACAE48 /* SDLGetWaypointsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetWaypointsSpec.m; sourceTree = "<group>"; };
+ DA9F7EA31DCC05EE00ACAE48 /* SDLSubscribeWaypointsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeWaypointsSpec.m; sourceTree = "<group>"; };
+ DA9F7EA51DCC05F500ACAE48 /* SDLUnsubscribeWaypointsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeWaypointsSpec.m; sourceTree = "<group>"; };
+ DA9F7EA71DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetWaypointsResponseSpec.m; sourceTree = "<group>"; };
+ DA9F7EA91DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeWaypointsResponseSpec.m; sourceTree = "<group>"; };
+ DA9F7EAB1DCC062400ACAE48 /* SDLUnsubscribeWaypointsResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeWaypointsResponseSpec.m; sourceTree = "<group>"; };
+ DA9F7EAD1DCC063400ACAE48 /* SDLLocationCoordinateSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLocationCoordinateSpec.m; sourceTree = "<group>"; };
+ DA9F7EAE1DCC063400ACAE48 /* SDLLocationDetailsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLocationDetailsSpec.m; sourceTree = "<group>"; };
DA9F7E611DCBFAC800ACAE48 /* SDLDateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDateTime.h; sourceTree = "<group>"; };
DA9F7E621DCBFAC800ACAE48 /* SDLDateTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDateTime.m; sourceTree = "<group>"; };
DA9F7E651DCBFAD400ACAE48 /* SDLOasisAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOasisAddress.h; sourceTree = "<group>"; };
@@ -2070,6 +2130,7 @@
162E82221A9BDE8A00906325 /* SDLVehicleDataTypeSpec.m */,
162E82231A9BDE8A00906325 /* SDLVrCapabilitiesSpec.m */,
162E82241A9BDE8A00906325 /* SDLWarningLightStatusSpec.m */,
+ DA9F7E9D1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m */,
162E82251A9BDE8A00906325 /* SDLWiperStatusSpec.m */,
);
path = EnumSpecs;
@@ -2104,6 +2165,7 @@
162E82381A9BDE8A00906325 /* SDLOnTBTClientStateSpec.m */,
162E82391A9BDE8A00906325 /* SDLOnTouchEventSpec.m */,
162E823A1A9BDE8A00906325 /* SDLOnVehicleDataSpec.m */,
+ DA9F7E9F1DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m */,
);
path = NotificationSpecs;
sourceTree = "<group>";
@@ -2135,6 +2197,7 @@
162E824A1A9BDE8A00906325 /* SDLEndAudioPassThruSpec.m */,
162E824B1A9BDE8A00906325 /* SDLGetDTCsSpec.m */,
162E824C1A9BDE8A00906325 /* SDLGetVehicleDataSpec.m */,
+ DA9F7EA11DCC05E100ACAE48 /* SDLGetWaypointsSpec.m */,
162E824D1A9BDE8A00906325 /* SDLListFilesSpec.m */,
162E824E1A9BDE8A00906325 /* SDLPerformAudioPassThruSpec.m */,
162E824F1A9BDE8A00906325 /* SDLPerformInteractionSpec.m */,
@@ -2154,11 +2217,13 @@
162E825C1A9BDE8A00906325 /* SDLSpeakSpec.m */,
162E825D1A9BDE8A00906325 /* SDLSubscribeButtonSpec.m */,
162E825E1A9BDE8A00906325 /* SDLSubscribeVehicleDataSpec.m */,
+ DA9F7EA31DCC05EE00ACAE48 /* SDLSubscribeWaypointsSpec.m */,
162E825F1A9BDE8A00906325 /* SDLSyncPDataSpec.m */,
162E82601A9BDE8A00906325 /* SDLSystemRequestSpec.m */,
162E82611A9BDE8A00906325 /* SDLUnregisterAppInterfaceSpec.m */,
162E82621A9BDE8A00906325 /* SDLUnsubscribeButtonSpec.m */,
162E82631A9BDE8A00906325 /* SDLUnsubscribeVehicleDataSpec.m */,
+ DA9F7EA51DCC05F500ACAE48 /* SDLUnsubscribeWaypointsSpec.m */,
162E82641A9BDE8A00906325 /* SDLUpdateTurnListSpec.m */,
);
path = RequestSpecs;
@@ -2184,6 +2249,7 @@
162E82731A9BDE8A00906325 /* SDLGenericResponseSpec.m */,
162E82741A9BDE8A00906325 /* SDLGetDTCsResponseSpec.m */,
162E82751A9BDE8A00906325 /* SDLGetVehicleDataResponseSpec.m */,
+ DA9F7EA71DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m */,
162E82761A9BDE8A00906325 /* SDLListFilesResponseSpec.m */,
162E82771A9BDE8A00906325 /* SDLPerformAudioPassThruResponseSpec.m */,
162E82781A9BDE8A00906325 /* SDLPerformInteractionResponseSpec.m */,
@@ -2203,11 +2269,13 @@
162E82851A9BDE8A00906325 /* SDLSpeakResponseSpec.m */,
162E82861A9BDE8A00906325 /* SDLSubscribeButtonResponseSpec.m */,
162E82871A9BDE8A00906325 /* SDLSubscribeVehicleDataResponseSpec.m */,
+ DA9F7EA91DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m */,
162E82881A9BDE8A00906325 /* SDLSyncPDataResponseSpec.m */,
162E82891A9BDE8A00906325 /* SDLSystemRequestResponseSpec.m */,
162E828A1A9BDE8A00906325 /* SDLUnregisterAppInterfaceResponseSpec.m */,
162E828B1A9BDE8A00906325 /* SDLUnsubscribeButtonResponseSpec.m */,
162E828C1A9BDE8A00906325 /* SDLUnsubscribeVehicleDataResponseSpec.m */,
+ DA9F7EAB1DCC062400ACAE48 /* SDLUnsubscribeWaypointsResponseSpec.m */,
162E828D1A9BDE8A00906325 /* SDLUpdateTurnListResponseSpec.m */,
);
path = ResponseSpecs;
@@ -2238,6 +2306,8 @@
162E829F1A9BDE8A00906325 /* SDLImageFieldSpec.m */,
162E82A01A9BDE8A00906325 /* SDLImageSpec.m */,
162E82A11A9BDE8A00906325 /* SDLKeyboardPropertiesSpec.m */,
+ DA9F7EAD1DCC063400ACAE48 /* SDLLocationCoordinateSpec.m */,
+ DA9F7EAE1DCC063400ACAE48 /* SDLLocationDetailsSpec.m */,
162E82A21A9BDE8A00906325 /* SDLMenuParamsSpec.m */,
162E82A31A9BDE8A00906325 /* SDLMyKeySpec.m */,
DA9F7EB51DCC086A00ACAE48 /* SDLOasisAddressSpec.m */,
@@ -2600,6 +2670,8 @@
5D61FAC51A84238A00846EE7 /* SDLGetDTCs.m */,
5D61FAC81A84238A00846EE7 /* SDLGetVehicleData.h */,
5D61FAC91A84238A00846EE7 /* SDLGetVehicleData.m */,
+ DA9F7E6D1DCBFFDB00ACAE48 /* SDLGetWaypoints.h */,
+ DA9F7E6E1DCBFFDB00ACAE48 /* SDLGetWaypoints.m */,
5D61FAFF1A84238A00846EE7 /* SDLListFiles.h */,
5D61FB001A84238A00846EE7 /* SDLListFiles.m */,
5D61FB381A84238B00846EE7 /* SDLPerformAudioPassThru.h */,
@@ -2636,6 +2708,8 @@
5D61FBC11A84238B00846EE7 /* SDLSubscribeButton.m */,
5D61FBC41A84238B00846EE7 /* SDLSubscribeVehicleData.h */,
5D61FBC51A84238B00846EE7 /* SDLSubscribeVehicleData.m */,
+ DA9F7E851DCC049900ACAE48 /* SDLSubscribeWaypoints.h */,
+ DA9F7E861DCC049900ACAE48 /* SDLSubscribeWaypoints.m */,
5D61FBCA1A84238B00846EE7 /* SDLSyncPData.h */,
5D61FBCB1A84238B00846EE7 /* SDLSyncPData.m */,
5D61FBD21A84238B00846EE7 /* SDLSystemRequest.h */,
@@ -2646,6 +2720,8 @@
5D61FBFB1A84238C00846EE7 /* SDLUnsubscribeButton.m */,
5D61FBFE1A84238C00846EE7 /* SDLUnsubscribeVehicleData.h */,
5D61FBFF1A84238C00846EE7 /* SDLUnsubscribeVehicleData.m */,
+ DA9F7E911DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.h */,
+ DA9F7E921DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.m */,
5D61FC041A84238C00846EE7 /* SDLUpdateTurnList.h */,
5D61FC051A84238C00846EE7 /* SDLUpdateTurnList.m */,
5DCF76F31ACDBAD300BB647B /* SDLSendLocation.h */,
@@ -2691,6 +2767,8 @@
5D61FAC71A84238A00846EE7 /* SDLGetDTCsResponse.m */,
5D61FACA1A84238A00846EE7 /* SDLGetVehicleDataResponse.h */,
5D61FACB1A84238A00846EE7 /* SDLGetVehicleDataResponse.m */,
+ DA9F7E711DCC004C00ACAE48 /* SDLGetWaypointsResponse.h */,
+ DA9F7E721DCC004C00ACAE48 /* SDLGetWaypointsResponse.m */,
5D61FB011A84238A00846EE7 /* SDLListFilesResponse.h */,
5D61FB021A84238A00846EE7 /* SDLListFilesResponse.m */,
5D61FB3A1A84238B00846EE7 /* SDLPerformAudioPassThruResponse.h */,
@@ -2727,6 +2805,8 @@
5D61FBC31A84238B00846EE7 /* SDLSubscribeButtonResponse.m */,
5D61FBC61A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.h */,
5D61FBC71A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.m */,
+ DA9F7E891DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.h */,
+ DA9F7E8A1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.m */,
5D61FBCC1A84238B00846EE7 /* SDLSyncPDataResponse.h */,
5D61FBCD1A84238B00846EE7 /* SDLSyncPDataResponse.m */,
5D61FBD41A84238B00846EE7 /* SDLSystemRequestResponse.h */,
@@ -2737,6 +2817,8 @@
5D61FBFD1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m */,
5D61FC001A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.h */,
5D61FC011A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.m */,
+ DA9F7E8D1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.h */,
+ DA9F7E8E1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.m */,
5D61FC061A84238C00846EE7 /* SDLUpdateTurnListResponse.h */,
5D61FC071A84238C00846EE7 /* SDLUpdateTurnListResponse.m */,
5DCF76F71ACDD7CD00BB647B /* SDLSendLocationResponse.h */,
@@ -2794,6 +2876,10 @@
5D61FAE71A84238A00846EE7 /* SDLImageResolution.m */,
5D61FAF71A84238A00846EE7 /* SDLKeyboardProperties.h */,
5D61FAF81A84238A00846EE7 /* SDLKeyboardProperties.m */,
+ DA9F7E951DCC052C00ACAE48 /* SDLLocationCoordinate.h */,
+ DA9F7E961DCC052C00ACAE48 /* SDLLocationCoordinate.m */,
+ DA9F7E971DCC052C00ACAE48 /* SDLLocationDetails.h */,
+ DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */,
5D61FB0B1A84238A00846EE7 /* SDLMenuParams.h */,
5D61FB0C1A84238A00846EE7 /* SDLMenuParams.m */,
5D61FB0D1A84238A00846EE7 /* SDLMyKey.h */,
@@ -2980,6 +3066,8 @@
5D61FC211A84238C00846EE7 /* SDLVRCapabilities.m */,
5D61FC241A84238C00846EE7 /* SDLWarningLightStatus.h */,
5D61FC251A84238C00846EE7 /* SDLWarningLightStatus.m */,
+ DA9F7E811DCC047200ACAE48 /* SDLWaypointType.h */,
+ DA9F7E821DCC047200ACAE48 /* SDLWaypointType.m */,
5D61FC261A84238C00846EE7 /* SDLWiperStatus.h */,
5D61FC271A84238C00846EE7 /* SDLWiperStatus.m */,
);
@@ -3072,6 +3160,8 @@
5D61FB331A84238B00846EE7 /* SDLOnTouchEvent.m */,
5D61FB341A84238B00846EE7 /* SDLOnVehicleData.h */,
5D61FB351A84238B00846EE7 /* SDLOnVehicleData.m */,
+ DA9F7E7D1DCC028B00ACAE48 /* SDLOnWaypointChange.h */,
+ DA9F7E7E1DCC028B00ACAE48 /* SDLOnWaypointChange.m */,
);
name = Notification;
sourceTree = "<group>";
@@ -3834,6 +3924,7 @@
5D61FCC91A84238C00846EE7 /* SDLIgnitionStableStatus.h in Headers */,
DA9F7E6B1DCBFB0700ACAE48 /* SDLDeliveryMode.h in Headers */,
E9C32B941AB20BA200F283AF /* SDLStreamDelegate.h in Headers */,
+ DA9F7E871DCC049900ACAE48 /* SDLSubscribeWaypoints.h in Headers */,
5D61FDBB1A84238C00846EE7 /* SDLSystemAction.h in Headers */,
5D61FC9C1A84238C00846EE7 /* SDLEmergencyEventType.h in Headers */,
5D61FD131A84238C00846EE7 /* SDLOnLanguageChange.h in Headers */,
@@ -3878,6 +3969,7 @@
E9C32B9E1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.h in Headers */,
5D61FC4B1A84238C00846EE7 /* SDLBeltStatus.h in Headers */,
DAC5726B1D10D5FC0004288B /* dispatch_timer.h in Headers */,
+ DA9F7E991DCC052C00ACAE48 /* SDLLocationCoordinate.h in Headers */,
5D61FC351A84238C00846EE7 /* SDLAirbagStatus.h in Headers */,
5D61FC8A1A84238C00846EE7 /* SDLDiagnosticMessageResponse.h in Headers */,
5D61FC2D1A84238C00846EE7 /* SDLAddCommand.h in Headers */,
@@ -3900,6 +3992,7 @@
5D61FC4F1A84238C00846EE7 /* SDLBodyInformation.h in Headers */,
5D61FDAB1A84238C00846EE7 /* SDLStartTime.h in Headers */,
5D61FD071A84238C00846EE7 /* SDLOnCommand.h in Headers */,
+ DA9F7E9B1DCC052C00ACAE48 /* SDLLocationDetails.h in Headers */,
5D61FD1D1A84238C00846EE7 /* SDLOnTBTClientState.h in Headers */,
5D61FD9D1A84238C00846EE7 /* SDLSliderResponse.h in Headers */,
5D61FDF31A84238C00846EE7 /* SDLUpdateTurnListResponse.h in Headers */,
@@ -3909,6 +4002,7 @@
5D61FC491A84238C00846EE7 /* SDLAudioType.h in Headers */,
5D61FC761A84238C00846EE7 /* SDLDeleteFile.h in Headers */,
5D61FD211A84238C00846EE7 /* SDLOnVehicleData.h in Headers */,
+ DA9F7E731DCC004C00ACAE48 /* SDLGetWaypointsResponse.h in Headers */,
5D61FD7D1A84238C00846EE7 /* SDLScrollableMessageResponse.h in Headers */,
5D61FD431A84238C00846EE7 /* SDLProtocol.h in Headers */,
5D8B17531AC9E11B006A6E1C /* SDLDialNumberResponse.h in Headers */,
@@ -3954,6 +4048,7 @@
5D61FCFA1A84238C00846EE7 /* SDLMyKey.h in Headers */,
5D61FC981A84238C00846EE7 /* SDLECallInfo.h in Headers */,
5D61FD7B1A84238C00846EE7 /* SDLScrollableMessage.h in Headers */,
+ DA9F7E931DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.h in Headers */,
5D61FD3D1A84238C00846EE7 /* SDLPrimaryAudioSource.h in Headers */,
DAC5725C1D10B81E0004288B /* SDLTouch.h in Headers */,
5D6F7A2E1BC5650B0070BF37 /* SDLLifecycleConfiguration.h in Headers */,
@@ -3976,6 +4071,7 @@
5D61FD651A84238C00846EE7 /* SDLResetGlobalPropertiesResponse.h in Headers */,
DA9F7E671DCBFAD400ACAE48 /* SDLOasisAddress.h in Headers */,
5D61FD611A84238C00846EE7 /* SDLRequestType.h in Headers */,
+ DA9F7E8B1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.h in Headers */,
5D61FCEC1A84238C00846EE7 /* SDLListFiles.h in Headers */,
5D2F58081D0717D5001085CE /* SDLManagerDelegate.h in Headers */,
5D61FC881A84238C00846EE7 /* SDLDiagnosticMessage.h in Headers */,
@@ -4032,12 +4128,14 @@
5D61FE011A84238C00846EE7 /* SDLVehicleDataNotificationStatus.h in Headers */,
5D61FDC91A84238C00846EE7 /* SDLTextField.h in Headers */,
5D6F7A351BC5B9B60070BF37 /* SDLLockScreenViewController.h in Headers */,
+ DA9F7E7F1DCC028B00ACAE48 /* SDLOnWaypointChange.h in Headers */,
5D61FCE41A84238C00846EE7 /* SDLKeyboardProperties.h in Headers */,
5D61FDED1A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.h in Headers */,
5DCC19A41B822804004FFAD9 /* SDLURLRequestTask.h in Headers */,
5D61FCCF1A84238C00846EE7 /* SDLImageField.h in Headers */,
5D535DC51B72473800CF7760 /* SDLGlobals.h in Headers */,
5D79A03B1CE36F030035797B /* SDLUploadFileOperation.h in Headers */,
+ DA9F7E6F1DCBFFDB00ACAE48 /* SDLGetWaypoints.h in Headers */,
5D61FD231A84238C00846EE7 /* SDLParameterPermissions.h in Headers */,
5D61FCB91A84238C00846EE7 /* SDLGlobalProperty.h in Headers */,
5D61FE051A84238C00846EE7 /* SDLVehicleDataResultCode.h in Headers */,
@@ -4095,6 +4193,7 @@
5D8B174F1AC9D266006A6E1C /* SDLDialNumber.h in Headers */,
5D7F87EF1CE3C294002DD7C4 /* SDLFileManagerConstants.h in Headers */,
5D61FCAD1A84238C00846EE7 /* SDLFunctionID.h in Headers */,
+ DA9F7E831DCC047200ACAE48 /* SDLWaypointType.h in Headers */,
5D61FDF51A84238C00846EE7 /* SDLV1ProtocolHeader.h in Headers */,
DAC572671D10C5640004288B /* CGPoint_Util.h in Headers */,
5D61FDF91A84238C00846EE7 /* SDLV2ProtocolHeader.h in Headers */,
@@ -4106,6 +4205,7 @@
5D61FDFB1A84238C00846EE7 /* SDLV2ProtocolMessage.h in Headers */,
5D7F87EB1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.h in Headers */,
5D61FCFC1A84238C00846EE7 /* SDLNames.h in Headers */,
+ DA9F7E8F1DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.h in Headers */,
5D61FCFD1A84238C00846EE7 /* SDLObjectWithPriority.h in Headers */,
DAC5726C1D11B4840004288B /* SDLTouchManagerDelegate.h in Headers */,
5D61FD3F1A84238C00846EE7 /* SDLPrioritizedObjectCollection.h in Headers */,
@@ -4310,6 +4410,7 @@
files = (
332A914F1CED9CC60043824C /* SDLAppInfo.m in Sources */,
5DCC19A51B822804004FFAD9 /* SDLURLRequestTask.m in Sources */,
+ DA9F7E841DCC047200ACAE48 /* SDLWaypointType.m in Sources */,
5D61FC561A84238C00846EE7 /* SDLButtonName.m in Sources */,
5D61FCC21A84238C00846EE7 /* SDLHMILevel.m in Sources */,
5D61FDEC1A84238C00846EE7 /* SDLUnsubscribeVehicleData.m in Sources */,
@@ -4341,6 +4442,7 @@
5D61FDE01A84238C00846EE7 /* SDLTTSChunkFactory.m in Sources */,
5D61FD0A1A84238C00846EE7 /* SDLOnDriverDistraction.m in Sources */,
5D61FCED1A84238C00846EE7 /* SDLListFiles.m in Sources */,
+ DA9F7E801DCC028B00ACAE48 /* SDLOnWaypointChange.m in Sources */,
5D61FC6E1A84238C00846EE7 /* SDLCreateInteractionChoiceSetResponse.m in Sources */,
5D61FD061A84238C00846EE7 /* SDLOnButtonPress.m in Sources */,
5D61FD5E1A84238C00846EE7 /* SDLRegisterAppInterface.m in Sources */,
@@ -4372,6 +4474,7 @@
5D61FCD01A84238C00846EE7 /* SDLImageField.m in Sources */,
5D61FC3C1A84238C00846EE7 /* SDLAlertManeuverResponse.m in Sources */,
5D61FC6A1A84238C00846EE7 /* SDLConsoleController.m in Sources */,
+ DA9F7E741DCC004C00ACAE48 /* SDLGetWaypointsResponse.m in Sources */,
5D61FD4D1A84238C00846EE7 /* SDLProtocolMessageDisassembler.m in Sources */,
5D61FC701A84238C00846EE7 /* SDLDebugTool.m in Sources */,
5D61FD4B1A84238C00846EE7 /* SDLProtocolMessageAssembler.m in Sources */,
@@ -4412,6 +4515,7 @@
5D61FCF71A84238C00846EE7 /* SDLMediaClockFormat.m in Sources */,
5D61FD8A1A84238C00846EE7 /* SDLSetGlobalPropertiesResponse.m in Sources */,
5D61FC4C1A84238C00846EE7 /* SDLBeltStatus.m in Sources */,
+ DA9F7E8C1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.m in Sources */,
5D61FDA41A84238C00846EE7 /* SDLSoftButtonType.m in Sources */,
5D61FC521A84238C00846EE7 /* SDLButtonCapabilities.m in Sources */,
5D61FC791A84238C00846EE7 /* SDLDeleteFileResponse.m in Sources */,
@@ -4487,9 +4591,11 @@
5D61FDAA1A84238C00846EE7 /* SDLSpeechCapabilities.m in Sources */,
5D61FDB41A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.m in Sources */,
5D61FD121A84238C00846EE7 /* SDLOnKeyboardInput.m in Sources */,
+ DA9F7E9A1DCC052C00ACAE48 /* SDLLocationCoordinate.m in Sources */,
5D61FCCA1A84238C00846EE7 /* SDLIgnitionStableStatus.m in Sources */,
5D61FCFB1A84238C00846EE7 /* SDLMyKey.m in Sources */,
5D61FCAA1A84238C00846EE7 /* SDLFileType.m in Sources */,
+ DA9F7E901DCC04C000ACAE48 /* SDLUnsubscribeWaypointsResponse.m in Sources */,
5DE372A21ACB2ED300849FAA /* SDLHMICapabilities.m in Sources */,
5D61FDD41A84238C00846EE7 /* SDLTouchEvent.m in Sources */,
5D61FD881A84238C00846EE7 /* SDLSetGlobalProperties.m in Sources */,
@@ -4503,9 +4609,11 @@
5D61FCB81A84238C00846EE7 /* SDLGetVehicleDataResponse.m in Sources */,
5D61FC661A84238C00846EE7 /* SDLCompassDirection.m in Sources */,
5D61FD841A84238C00846EE7 /* SDLSetDisplayLayout.m in Sources */,
+ DA9F7E701DCBFFDB00ACAE48 /* SDLGetWaypoints.m in Sources */,
5D61FE001A84238C00846EE7 /* SDLVehicleDataEventStatus.m in Sources */,
5D61FDC41A84238C00846EE7 /* SDLTBTState.m in Sources */,
5D61FDA61A84238C00846EE7 /* SDLSpeak.m in Sources */,
+ DA9F7E881DCC049900ACAE48 /* SDLSubscribeWaypoints.m in Sources */,
5D61FDDE1A84238C00846EE7 /* SDLTTSChunk.m in Sources */,
5D61FD9E1A84238C00846EE7 /* SDLSliderResponse.m in Sources */,
5D61FC5C1A84238C00846EE7 /* SDLChangeRegistration.m in Sources */,
@@ -4555,6 +4663,7 @@
5DA3F3551BC448060026F2D0 /* NSMapTable+Subscripting.m in Sources */,
5D61FCD61A84238C00846EE7 /* SDLImageType.m in Sources */,
5D4D67AD1D2ED37A00468B4A /* SDLNotificationDispatcher.m in Sources */,
+ DA9F7E9C1DCC052C00ACAE48 /* SDLLocationDetails.m in Sources */,
5D61FD7A1A84238C00846EE7 /* SDLScreenParams.m in Sources */,
5D61FC831A84238C00846EE7 /* SDLDeviceInfo.m in Sources */,
5D7F87EC1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m in Sources */,
@@ -4594,6 +4703,7 @@
5D61FC931A84238C00846EE7 /* SDLDisplayType.m in Sources */,
5D61FCE31A84238C00846EE7 /* SDLKeyboardLayout.m in Sources */,
5D61FE0C1A84238C00846EE7 /* SDLVehicleType.m in Sources */,
+ DA9F7E941DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.m in Sources */,
5D61FDCC1A84238C00846EE7 /* SDLTextFieldName.m in Sources */,
5D61FC751A84238C00846EE7 /* SDLDeleteCommandResponse.m in Sources */,
5DA3F3711BC4489A0026F2D0 /* SDLManager.m in Sources */,
@@ -4716,11 +4826,13 @@
162E83771A9BDE8B00906325 /* SDLClusterModeStatusSpec.m in Sources */,
162E83981A9BDE8B00906325 /* SDLVrHelpItemSpec.m in Sources */,
162E83831A9BDE8B00906325 /* SDLKeyboardPropertiesSpec.m in Sources */,
+ DA9F7EA01DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m in Sources */,
162E82D11A9BDE8A00906325 /* SDLButtonNameSpec.m in Sources */,
162E839E1A9BDE8B00906325 /* SDLRPCStructSpec.m in Sources */,
DA4353DF1D271FD10099B8C4 /* CGPointUtilSpec.m in Sources */,
162E83291A9BDE8B00906325 /* SDLDeleteFileSpec.m in Sources */,
1680B11D1A9CD7AD00DBD79E /* SDLProtocolMessageDisassemblerSpec.m in Sources */,
+ DA9F7E9E1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m in Sources */,
162E838E1A9BDE8B00906325 /* SDLSyncMsgVersionSpec.m in Sources */,
5D76E31C1D3805FF00647CFA /* SDLLockScreenManagerSpec.m in Sources */,
162E82DA1A9BDE8B00906325 /* SDLDriverDistractionStateSpec.m in Sources */,
@@ -4731,9 +4843,11 @@
162E83111A9BDE8B00906325 /* SDLOnButtonEventSpec.m in Sources */,
162E82FA1A9BDE8B00906325 /* SDLSoftButtonTypeSpec.m in Sources */,
162E83751A9BDE8B00906325 /* SDLButtonCapabilitiesSpec.m in Sources */,
+ DA9F7EAF1DCC063400ACAE48 /* SDLLocationCoordinateSpec.m in Sources */,
162E83151A9BDE8B00906325 /* SDLOnEncodedSyncPDataSpec.m in Sources */,
162E83261A9BDE8B00906325 /* SDLChangeRegistrationSpec.m in Sources */,
162E82D21A9BDE8A00906325 /* SDLButtonPressModeSpec.m in Sources */,
+ DA9F7EA21DCC05E100ACAE48 /* SDLGetWaypointsSpec.m in Sources */,
162E82D71A9BDE8A00906325 /* SDLDeviceLevelStatusSpec.m in Sources */,
162E83841A9BDE8B00906325 /* SDLMenuParamsSpec.m in Sources */,
5DB1BCE11D243DDE002FFC37 /* SDLConfigurationSpec.m in Sources */,
@@ -4755,6 +4869,7 @@
5DF2BB9D1B94E38A00CE5994 /* SDLURLSessionSpec.m in Sources */,
162E83381A9BDE8B00906325 /* SDLScrollableMessageSpec.m in Sources */,
162E82E81A9BDE8B00906325 /* SDLKeyboardLayoutSpec.m in Sources */,
+ DA9F7EA41DCC05EE00ACAE48 /* SDLSubscribeWaypointsSpec.m in Sources */,
DA4353EB1D2721680099B8C4 /* SDLTouchSpec.m in Sources */,
5DB1BCE71D245647002FFC37 /* TestStateMachineTarget.m in Sources */,
162E83541A9BDE8B00906325 /* SDLEncodedSyncPDataResponseSpec.m in Sources */,
@@ -4767,6 +4882,7 @@
162E83241A9BDE8B00906325 /* SDLAlertManeuverSpec.m in Sources */,
162E83451A9BDE8B00906325 /* SDLUnregisterAppInterfaceSpec.m in Sources */,
162E82EF1A9BDE8B00906325 /* SDLPermissionStatusSpec.m in Sources */,
+ DA9F7EA61DCC05F500ACAE48 /* SDLUnsubscribeWaypointsSpec.m in Sources */,
162E82F01A9BDE8B00906325 /* SDLPowerModeQualificationStatusSpec.m in Sources */,
162E82CD1A9BDE8A00906325 /* SDLAudioStreamingStateSpec.m in Sources */,
162E831A1A9BDE8B00906325 /* SDLOnLockScreenStatusSpec.m in Sources */,
@@ -4793,6 +4909,7 @@
162E83031A9BDE8B00906325 /* SDLTriggerSource.m in Sources */,
162E82D61A9BDE8A00906325 /* SDLComponentVolumeStatusSpec.m in Sources */,
162E835C1A9BDE8B00906325 /* SDLPutFileResponseSpec.m in Sources */,
+ DA9F7EAA1DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m in Sources */,
162E835F1A9BDE8B00906325 /* SDLResetGlobalPropertiesResponseSpec.m in Sources */,
162E835E1A9BDE8B00906325 /* SDLRegisterAppInterfaceResponseSpec.m in Sources */,
162E835A1A9BDE8B00906325 /* SDLPerformAudioPassThruResponseSpec.m in Sources */,
@@ -4814,12 +4931,14 @@
162E83471A9BDE8B00906325 /* SDLUnsubscribeVehicleDataSpec.m in Sources */,
162E839A1A9BDE8B00906325 /* SDLRPCMessageSpec.m in Sources */,
162E83311A9BDE8B00906325 /* SDLListFilesSpec.m in Sources */,
+ DA9F7EB01DCC063400ACAE48 /* SDLLocationDetailsSpec.m in Sources */,
5DC978261B7A38640012C2F1 /* SDLGlobalsSpec.m in Sources */,
162E82FF1A9BDE8B00906325 /* SDLTextAlignmentSpec.m in Sources */,
162E831F1A9BDE8B00906325 /* SDLOnTouchEventSpec.m in Sources */,
162E83921A9BDE8B00906325 /* SDLTouchEventCapabilitiesSpec.m in Sources */,
162E837F1A9BDE8B00906325 /* SDLHeadLampStatusSpec.m in Sources */,
162E834D1A9BDE8B00906325 /* SDLChangeRegistrationResponseSpec.m in Sources */,
+ DA9F7EAC1DCC062400ACAE48 /* SDLUnsubscribeWaypointsResponseSpec.m in Sources */,
162E836B1A9BDE8B00906325 /* SDLSyncPDataResponseSpec.m in Sources */,
162E839B1A9BDE8B00906325 /* SDLRPCNotificationSpec.m in Sources */,
162E83581A9BDE8B00906325 /* SDLGetVehicleDataResponseSpec.m in Sources */,
@@ -4869,6 +4988,7 @@
162E83731A9BDE8B00906325 /* SDLBeltStatusSpec.m in Sources */,
162E83551A9BDE8B00906325 /* SDLEndAudioPassThruResponseSpec.m in Sources */,
162E83251A9BDE8B00906325 /* SDLAlertSpec.m in Sources */,
+ DA9F7EA81DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m in Sources */,
162E830A1A9BDE8B00906325 /* SDLVehicleDataTypeSpec.m in Sources */,
5DB1BCD31D243A8E002FFC37 /* SDLDeleteFileOperationSpec.m in Sources */,
162E82F41A9BDE8B00906325 /* SDLPrimaryAudioSource.m in Sources */,
diff --git a/SmartDeviceLink/SDLFunctionID.m b/SmartDeviceLink/SDLFunctionID.m
index 802ee3df3..7390af3fc 100644
--- a/SmartDeviceLink/SDLFunctionID.m
+++ b/SmartDeviceLink/SDLFunctionID.m
@@ -11,7 +11,7 @@
- (instancetype)init {
if (self = [super init]) {
functionIDs = [NSDictionary dictionaryWithObjectsAndKeys:
- NAMES_reserved, @"0", NAMES_RegisterAppInterface, @"1", NAMES_UnregisterAppInterface, @"2", NAMES_SetGlobalProperties, @"3", NAMES_ResetGlobalProperties, @"4", NAMES_AddCommand, @"5", NAMES_DeleteCommand, @"6", NAMES_AddSubMenu, @"7", NAMES_DeleteSubMenu, @"8", NAMES_CreateInteractionChoiceSet, @"9", NAMES_PerformInteraction, @"10", NAMES_DeleteInteractionChoiceSet, @"11", NAMES_Alert, @"12", NAMES_Show, @"13", NAMES_Speak, @"14", NAMES_SetMediaClockTimer, @"15", NAMES_PerformAudioPassThru, @"16", NAMES_EndAudioPassThru, @"17", NAMES_SubscribeButton, @"18", NAMES_UnsubscribeButton, @"19", NAMES_SubscribeVehicleData, @"20", NAMES_UnsubscribeVehicleData, @"21", NAMES_GetVehicleData, @"22", NAMES_ReadDID, @"23", NAMES_GetDTCs, @"24", NAMES_ScrollableMessage, @"25", NAMES_Slider, @"26", NAMES_ShowConstantTBT, @"27", NAMES_AlertManeuver, @"28", NAMES_UpdateTurnList, @"29", NAMES_ChangeRegistration, @"30", NAMES_GenericResponse, @"31", NAMES_PutFile, @"32", NAMES_DeleteFile, @"33", NAMES_ListFiles, @"34", NAMES_SetAppIcon, @"35", NAMES_SetDisplayLayout, @"36", NAMES_DiagnosticMessage, @"37", NAMES_SystemRequest, @"38", NAMES_SendLocation, @"39", NAMES_DialNumber, @"40", NAMES_OnHMIStatus, @"32768", NAMES_OnAppInterfaceUnregistered, @"32769", NAMES_OnButtonEvent, @"32770", NAMES_OnButtonPress, @"32771", NAMES_OnVehicleData, @"32772", NAMES_OnCommand, @"32773", NAMES_OnTBTClientState, @"32774", NAMES_OnDriverDistraction, @"32775", NAMES_OnPermissionsChange, @"32776", NAMES_OnAudioPassThru, @"32777", NAMES_OnLanguageChange, @"32778", NAMES_OnKeyboardInput, @"32779", NAMES_OnTouchEvent, @"32780", NAMES_OnSystemRequest, @"32781", NAMES_OnHashChange, @"32782",
+ NAMES_reserved, @"0", NAMES_RegisterAppInterface, @"1", NAMES_UnregisterAppInterface, @"2", NAMES_SetGlobalProperties, @"3", NAMES_ResetGlobalProperties, @"4", NAMES_AddCommand, @"5", NAMES_DeleteCommand, @"6", NAMES_AddSubMenu, @"7", NAMES_DeleteSubMenu, @"8", NAMES_CreateInteractionChoiceSet, @"9", NAMES_PerformInteraction, @"10", NAMES_DeleteInteractionChoiceSet, @"11", NAMES_Alert, @"12", NAMES_Show, @"13", NAMES_Speak, @"14", NAMES_SetMediaClockTimer, @"15", NAMES_PerformAudioPassThru, @"16", NAMES_EndAudioPassThru, @"17", NAMES_SubscribeButton, @"18", NAMES_UnsubscribeButton, @"19", NAMES_SubscribeVehicleData, @"20", NAMES_UnsubscribeVehicleData, @"21", NAMES_GetVehicleData, @"22", NAMES_ReadDID, @"23", NAMES_GetDTCs, @"24", NAMES_ScrollableMessage, @"25", NAMES_Slider, @"26", NAMES_ShowConstantTBT, @"27", NAMES_AlertManeuver, @"28", NAMES_UpdateTurnList, @"29", NAMES_ChangeRegistration, @"30", NAMES_GenericResponse, @"31", NAMES_PutFile, @"32", NAMES_DeleteFile, @"33", NAMES_ListFiles, @"34", NAMES_SetAppIcon, @"35", NAMES_SetDisplayLayout, @"36", NAMES_DiagnosticMessage, @"37", NAMES_SystemRequest, @"38", NAMES_SendLocation, @"39", NAMES_DialNumber, @"40", NAMES_GetWaypoints, @"45", NAMES_SubscribeWaypoints, @"46", NAMES_UnsubscribeWaypoints, @"47", NAMES_OnHMIStatus, @"32768", NAMES_OnAppInterfaceUnregistered, @"32769", NAMES_OnButtonEvent, @"32770", NAMES_OnButtonPress, @"32771", NAMES_OnVehicleData, @"32772", NAMES_OnCommand, @"32773", NAMES_OnTBTClientState, @"32774", NAMES_OnDriverDistraction, @"32775", NAMES_OnPermissionsChange, @"32776", NAMES_OnAudioPassThru, @"32777", NAMES_OnLanguageChange, @"32778", NAMES_OnKeyboardInput, @"32779", NAMES_OnTouchEvent, @"32780", NAMES_OnSystemRequest, @"32781", NAMES_OnHashChange, @"32782", NAMES_OnWaypointChange, @"32784",
NAMES_EncodedSyncPData,
@"65536",
diff --git a/SmartDeviceLink/SDLGetWaypoints.h b/SmartDeviceLink/SDLGetWaypoints.h
new file mode 100644
index 000000000..e14ace9e5
--- /dev/null
+++ b/SmartDeviceLink/SDLGetWaypoints.h
@@ -0,0 +1,20 @@
+// SDLGetWaypoints.m
+//
+
+#import "SDLRPCRequest.h"
+
+@class SDLWaypointType;
+
+@interface SDLGetWaypoints : SDLRPCRequest
+
+- (instancetype)initWithType:(SDLWaypointType *)type;
+
+/**
+ * To request for either the destination
+ * only or for all waypoints including destination
+ *
+ * Required
+ */
+@property (strong, nonatomic) SDLWaypointType *waypointType;
+
+@end
diff --git a/SmartDeviceLink/SDLGetWaypoints.m b/SmartDeviceLink/SDLGetWaypoints.m
new file mode 100644
index 000000000..319f91e7f
--- /dev/null
+++ b/SmartDeviceLink/SDLGetWaypoints.m
@@ -0,0 +1,46 @@
+// SDLGetWaypoints.m
+//
+
+#import "SDLGetWaypoints.h"
+
+#import "SDLNames.h"
+#import "SDLWaypointType.h"
+
+@implementation SDLGetWaypoints
+
+- (instancetype)init {
+ if (self = [super initWithName:NAMES_GetWaypoints]) {
+ }
+ return self;
+}
+
+
+- (instancetype)initWithType:(SDLWaypointType *)type {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.waypointType = type;
+
+ return self;
+}
+
+- (void)setWaypointType:(SDLWaypointType *)waypointType {
+ if (waypointType != nil) {
+ parameters[NAMES_waypointType] = waypointType;
+ } else {
+ [parameters removeObjectForKey:NAMES_waypointType];
+ }
+}
+
+- (SDLWaypointType *)waypointType {
+ NSObject *obj = parameters[NAMES_waypointType];
+ if (obj == nil || [obj isKindOfClass:SDLWaypointType.class]) {
+ return (SDLWaypointType *)obj;
+ } else {
+ return [SDLWaypointType valueOf:(NSString *)obj];
+ }
+}
+
+@end
diff --git a/SmartDeviceLink/SDLGetWaypointsResponse.h b/SmartDeviceLink/SDLGetWaypointsResponse.h
new file mode 100644
index 000000000..94d449886
--- /dev/null
+++ b/SmartDeviceLink/SDLGetWaypointsResponse.h
@@ -0,0 +1,19 @@
+// SDLGetWaypointsResponse.h
+//
+
+#import "SDLRPCResponse.h"
+
+@class SDLLocationDetails;
+
+@interface SDLGetWaypointsResponse : SDLRPCResponse
+
+/**
+ * @abstract Array of waypoints
+ *
+ * @see SDLLocationDetails
+ *
+ * Optional, Array size 1 - 10
+ */
+@property (strong) NSArray<SDLLocationDetails *> *waypoints;
+
+@end
diff --git a/SmartDeviceLink/SDLGetWaypointsResponse.m b/SmartDeviceLink/SDLGetWaypointsResponse.m
new file mode 100644
index 000000000..9baa3b414
--- /dev/null
+++ b/SmartDeviceLink/SDLGetWaypointsResponse.m
@@ -0,0 +1,27 @@
+// SDLGetWaypointsResponse.m
+//
+
+#import "SDLGetWaypointsResponse.h"
+#import "SDLNames.h"
+
+@implementation SDLGetWaypointsResponse
+
+- (instancetype)init {
+ if (self = [super initWithName:NAMES_GetWaypoints]) {
+ }
+ return self;
+}
+
+- (void)setWaypoints:(NSArray<SDLLocationDetails *> *)waypoints {
+ if (waypoints != nil) {
+ parameters[NAMES_waypoints] = waypoints;
+ } else {
+ [parameters removeObjectForKey:NAMES_waypoints];
+ }
+}
+
+- (NSArray<SDLLocationDetails *> *)waypoints {
+ return parameters[NAMES_waypoints];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLLocationCoordinate.h b/SmartDeviceLink/SDLLocationCoordinate.h
new file mode 100644
index 000000000..dd2850f97
--- /dev/null
+++ b/SmartDeviceLink/SDLLocationCoordinate.h
@@ -0,0 +1,22 @@
+// SDLLocationCoordinate.h
+//
+
+#import "SDLRPCStruct.h"
+
+@interface SDLLocationCoordinate : SDLRPCStruct
+
+/**
+ * @abstract Latitude of the location
+ *
+ * Required, Double -90 - 90
+ */
+@property (copy, nonatomic) NSNumber<SDLFloat> *latitudeDegrees;
+
+/**
+ * @abstract Longitude of the location
+ *
+ * Required, Double -180 - 180
+ */
+@property (copy, nonatomic) NSNumber<SDLFloat> *longitudeDegrees;
+
+@end
diff --git a/SmartDeviceLink/SDLLocationCoordinate.m b/SmartDeviceLink/SDLLocationCoordinate.m
new file mode 100644
index 000000000..86a726078
--- /dev/null
+++ b/SmartDeviceLink/SDLLocationCoordinate.m
@@ -0,0 +1,33 @@
+// SDLLocationCoordinate.m
+//
+
+#import "SDLLocationCoordinate.h"
+#import "SDLNames.h"
+
+@implementation SDLLocationCoordinate
+
+- (void)setLongitudeDegrees:(NSNumber<SDLFloat> *)longitudeDegrees {
+ if (longitudeDegrees != nil) {
+ store[NAMES_longitudeDegrees] = longitudeDegrees;
+ } else {
+ [store removeObjectForKey:NAMES_longitudeDegrees];
+ }
+}
+
+- (NSNumber<SDLFloat> *)longitudeDegrees {
+ return store[NAMES_longitudeDegrees];
+}
+
+- (void)setLatitudeDegrees:(NSNumber<SDLFloat> *)latitudeDegrees {
+ if (latitudeDegrees != nil) {
+ store[NAMES_latitudeDegrees] = latitudeDegrees;
+ } else {
+ [store removeObjectForKey:NAMES_latitudeDegrees];
+ }
+}
+
+- (NSNumber<SDLFloat> *)latitudeDegrees {
+ return store[NAMES_latitudeDegrees];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLLocationDetails.h b/SmartDeviceLink/SDLLocationDetails.h
new file mode 100644
index 000000000..349a58265
--- /dev/null
+++ b/SmartDeviceLink/SDLLocationDetails.h
@@ -0,0 +1,68 @@
+// SDLLocationDetails.h
+//
+
+#import "SDLRPCStruct.h"
+
+@class SDLLocationCoordinate;
+@class SDLImage;
+@class SDLOasisAddress;
+
+@interface SDLLocationDetails : SDLRPCStruct
+
+/**
+ * @abstract Latitude/Longitude of the location
+ *
+ * @see SDLLocationCoordinate
+ *
+ * Optional
+ */
+@property (strong, nonatomic) SDLLocationCoordinate *coordinate;
+
+/**
+ * @abstract Name of location.
+ *
+ * Optional, Max length 500 chars
+ */
+@property (copy, nonatomic) NSString *locationName;
+
+/**
+ * @abstract Location address for display purposes only.
+ *
+ * Optional, Array of Strings, Array length 0 - 4, Max String length 500
+ */
+@property (copy, nonatomic) NSArray<NSString *> *addressLines;
+
+/**
+ * @abstract Description intended location / establishment.
+ *
+ * Optional, Max length 500 chars
+ */
+@property (copy, nonatomic) NSString *locationDescription;
+
+/**
+ * @abstract Phone number of location / establishment.
+ *
+ * Optional, Max length 500 chars
+ */
+@property (copy, nonatomic) NSString *phoneNumber;
+
+/**
+ * @abstract Image / icon of intended location.
+ *
+ * @see SDLImage
+ *
+ * Optional
+ */
+@property (strong, nonatomic) SDLImage *locationImage;
+
+/**
+ * @abstract Address to be used by navigation engines for search.
+ *
+ * @see SDLOASISAddress
+ *
+ * Optional
+ */
+@property (strong) SDLOasisAddress *searchAddress;
+
+
+@end
diff --git a/SmartDeviceLink/SDLLocationDetails.m b/SmartDeviceLink/SDLLocationDetails.m
new file mode 100644
index 000000000..b0c99bf55
--- /dev/null
+++ b/SmartDeviceLink/SDLLocationDetails.m
@@ -0,0 +1,97 @@
+// SDLLocationDetails.m
+//
+
+#import "SDLLocationDetails.h"
+
+#import "SDLLocationCoordinate.h"
+#import "SDLImage.h"
+#import "SDLNames.h"
+#import "SDLOasisAddress.h"
+
+@implementation SDLLocationDetails
+
+- (void)setCoordinate:(SDLLocationCoordinate *)coordinate {
+ if (coordinate != nil) {
+ store[NAMES_locationCoordinate] = coordinate;
+ } else {
+ [store removeObjectForKey:NAMES_locationCoordinate];
+ }
+}
+
+- (SDLLocationCoordinate *)coordinate {
+ return store[NAMES_locationCoordinate];
+}
+
+- (void)setLocationName:(NSString *)locationName {
+ if (locationName != nil) {
+ store[NAMES_locationName] = locationName;
+ } else {
+ [store removeObjectForKey:NAMES_locationName];
+ }
+}
+
+- (NSString *)locationName {
+ return store[NAMES_locationName];
+}
+
+- (void)setAddressLines:(NSArray<NSString *> *)addressLines {
+ if (addressLines != nil) {
+ store[NAMES_addressLines] = addressLines;
+ } else {
+ [store removeObjectForKey:NAMES_addressLines];
+ }
+}
+
+- (NSArray<NSString *> *)addressLines {
+ return store[NAMES_addressLines];
+}
+
+- (void)setLocationDescription:(NSString *)locationDescription {
+ if (locationDescription != nil) {
+ store[NAMES_locationDescription] = locationDescription;
+ } else {
+ [store removeObjectForKey:NAMES_locationDescription];
+ }
+}
+
+- (NSString *)locationDescription {
+ return store[NAMES_locationDescription];
+}
+
+- (void)setPhoneNumber:(NSString *)phoneNumber {
+ if (phoneNumber != nil) {
+ store[NAMES_phoneNumber] = phoneNumber;
+ } else {
+ [store removeObjectForKey:NAMES_phoneNumber];
+ }
+}
+
+- (NSString *)phoneNumber {
+ return store[NAMES_phoneNumber];
+}
+
+- (void)setLocationImage:(SDLImage *)locationImage {
+ if (locationImage != nil) {
+ store[NAMES_locationImage] = locationImage;
+ } else {
+ [store removeObjectForKey:NAMES_locationImage];
+ }
+}
+
+- (SDLImage *)locationImage {
+ return store[NAMES_locationImage];
+}
+
+- (void)setSearchAddress:(SDLOasisAddress *)searchAddress {
+ if (searchAddress != nil) {
+ store[NAMES_address] = searchAddress;
+ } else {
+ [store removeObjectForKey:NAMES_address];
+ }
+}
+
+- (SDLOasisAddress *)searchAddress {
+ return store[NAMES_address];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLNames.h b/SmartDeviceLink/SDLNames.h
index 370615b48..ffc8f19ba 100644
--- a/SmartDeviceLink/SDLNames.h
+++ b/SmartDeviceLink/SDLNames.h
@@ -123,6 +123,7 @@
#define NAMES_GenericResponse @"GenericResponse"
#define NAMES_GetDTCs @"GetDTCs"
#define NAMES_GetVehicleData @"GetVehicleData"
+#define NAMES_GetWaypoints @"GetWayPoints"
#define NAMES_gps @"gps"
#define NAMES_graphic @"graphic"
#define NAMES_graphicSupported @"graphicSupported"
@@ -177,6 +178,7 @@
#define NAMES_limitedCharacterList @"limitedCharacterList"
#define NAMES_ListFiles @"ListFiles"
#define NAMES_locality @"locality"
+#define NAMES_locationCoordinate @"coordinate"
#define NAMES_locationDescription @"locationDescription"
#define NAMES_locationImage @"locationImage"
#define NAMES_locationName @"locationName"
@@ -253,6 +255,7 @@
#define NAMES_OnTBTClientState @"OnTBTClientState"
#define NAMES_OnTouchEvent @"OnTouchEvent"
#define NAMES_OnVehicleData @"OnVehicleData"
+#define NAMES_OnWaypointChange @"OnWayPointChange"
#define NAMES_operation_name @"name"
#define NAMES_os @"os"
#define NAMES_osVersion @"osVersion"
@@ -360,6 +363,7 @@
#define NAMES_Subscribe @"Subscribe"
#define NAMES_SubscribeButton @"SubscribeButton"
#define NAMES_SubscribeVehicleData @"SubscribeVehicleData"
+#define NAMES_SubscribeWaypoints @"SubscribeWayPoints"
#define NAMES_subThoroughfare @"subThoroughfare"
#define NAMES_success @"success"
#define NAMES_supportedDiagModes @"supportedDiagModes"
@@ -402,6 +406,7 @@
#define NAMES_Unsubscribe @"Unsubscribe"
#define NAMES_UnsubscribeButton @"UnsubscribeButton"
#define NAMES_UnsubscribeVehicleData @"UnsubscribeVehicleData"
+#define NAMES_UnsubscribeWaypoints @"UnsubscribeWayPoints"
#define NAMES_updateMode @"updateMode"
#define NAMES_UpdateTurnList @"UpdateTurnList"
#define NAMES_upDownAvailable @"upDownAvailable"
@@ -424,6 +429,8 @@
#define NAMES_vrHelp @"vrHelp"
#define NAMES_vrHelpTitle @"vrHelpTitle"
#define NAMES_vrSynonyms @"vrSynonyms"
+#define NAMES_waypoints @"wayPoints"
+#define NAMES_waypointType @"wayPointType"
#define NAMES_width @"width"
#define NAMES_wiperStatus @"wiperStatus"
#define NAMES_x @"x"
diff --git a/SmartDeviceLink/SDLOnWaypointChange.h b/SmartDeviceLink/SDLOnWaypointChange.h
new file mode 100644
index 000000000..fb7daabd3
--- /dev/null
+++ b/SmartDeviceLink/SDLOnWaypointChange.h
@@ -0,0 +1,17 @@
+// SDLOnWaypointChange.h
+//
+
+#import "SDLRPCNotification.h"
+
+@class SDLLocationDetails;
+
+@interface SDLOnWaypointChange : SDLRPCNotification
+
+/**
+ * @abstract Location address for display purposes only.
+ *
+ * Required, Array of Strings, Array size 1 - 10
+ */
+@property (copy, nonatomic) NSArray<SDLLocationDetails *> *waypoints;
+
+@end
diff --git a/SmartDeviceLink/SDLOnWaypointChange.m b/SmartDeviceLink/SDLOnWaypointChange.m
new file mode 100644
index 000000000..7fb77369a
--- /dev/null
+++ b/SmartDeviceLink/SDLOnWaypointChange.m
@@ -0,0 +1,28 @@
+// SDLOnWaypointChange.m
+//
+
+#import "SDLOnWaypointChange.h"
+
+#import "SDLNames.h"
+
+@implementation SDLOnWaypointChange
+
+- (instancetype)init {
+ if (self = [super initWithName:NAMES_OnWaypointChange]) {
+ }
+ return self;
+}
+
+- (void)setWaypoints:(NSArray<SDLLocationDetails *> *)waypoints {
+ if (waypoints != nil) {
+ parameters[NAMES_waypoints] = waypoints;
+ } else {
+ [parameters removeObjectForKey:NAMES_waypoints];
+ }
+}
+
+- (NSArray<SDLLocationDetails *> *)waypoints {
+ return parameters[NAMES_waypoints];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLSubscribeWaypoints.h b/SmartDeviceLink/SDLSubscribeWaypoints.h
new file mode 100644
index 000000000..b5127d00e
--- /dev/null
+++ b/SmartDeviceLink/SDLSubscribeWaypoints.h
@@ -0,0 +1,16 @@
+// SDLSubscribeWaypoints.h
+//
+
+#import "SDLRPCRequest.h"
+
+/**
+* A SDLSubscribeWaypoints can be sent to subscribe
+* for any changes in waypoints/destinations
+*
+* @see SDLUnsubscribeWaypoints
+*
+*/
+
+@interface SDLSubscribeWaypoints : SDLRPCRequest
+
+@end
diff --git a/SmartDeviceLink/SDLSubscribeWaypoints.m b/SmartDeviceLink/SDLSubscribeWaypoints.m
new file mode 100644
index 000000000..8c22da383
--- /dev/null
+++ b/SmartDeviceLink/SDLSubscribeWaypoints.m
@@ -0,0 +1,15 @@
+// SDLSubscribeWaypoints.m
+//
+
+#import "SDLSubscribeWaypoints.h"
+#import "SDLNames.h"
+
+@implementation SDLSubscribeWaypoints
+
+- (instancetype)init {
+ if (self = [super initWithName:NAMES_SubscribeWaypoints]) {
+ }
+ return self;
+}
+
+@end
diff --git a/SmartDeviceLink/SDLSubscribeWaypointsResponse.h b/SmartDeviceLink/SDLSubscribeWaypointsResponse.h
new file mode 100644
index 000000000..9d4cfd967
--- /dev/null
+++ b/SmartDeviceLink/SDLSubscribeWaypointsResponse.h
@@ -0,0 +1,8 @@
+// SDLSubscribeWaypointsResponse.h
+//
+
+#import "SDLRPCResponse.h"
+
+@interface SDLSubscribeWaypointsResponse : SDLRPCResponse
+
+@end
diff --git a/SmartDeviceLink/SDLSubscribeWaypointsResponse.m b/SmartDeviceLink/SDLSubscribeWaypointsResponse.m
new file mode 100644
index 000000000..e3e827952
--- /dev/null
+++ b/SmartDeviceLink/SDLSubscribeWaypointsResponse.m
@@ -0,0 +1,15 @@
+// SDLSubscribeWaypointsResponse.m
+//
+
+#import "SDLSubscribeWaypointsResponse.h"
+#import "SDLNames.h"
+
+@implementation SDLSubscribeWaypointsResponse
+
+- (instancetype)init {
+ if (self = [super initWithName:NAMES_SubscribeVehicleData]) {
+ }
+ return self;
+}
+
+@end
diff --git a/SmartDeviceLink/SDLUnsubscribeWaypoints.h b/SmartDeviceLink/SDLUnsubscribeWaypoints.h
new file mode 100644
index 000000000..ff7b15296
--- /dev/null
+++ b/SmartDeviceLink/SDLUnsubscribeWaypoints.h
@@ -0,0 +1,8 @@
+// SDLUnsubscribeWaypoints.h
+//
+
+#import "SDLRPCRequest.h"
+
+@interface SDLUnsubscribeWaypoints : SDLRPCRequest
+
+@end
diff --git a/SmartDeviceLink/SDLUnsubscribeWaypoints.m b/SmartDeviceLink/SDLUnsubscribeWaypoints.m
new file mode 100644
index 000000000..9d68ed50e
--- /dev/null
+++ b/SmartDeviceLink/SDLUnsubscribeWaypoints.m
@@ -0,0 +1,8 @@
+// SDLUnsubscribeWaypoints.m
+//
+
+#import "SDLUnsubscribeWaypoints.h"
+
+@implementation SDLUnsubscribeWaypoints
+
+@end
diff --git a/SmartDeviceLink/SDLUnsubscribeWaypointsResponse.h b/SmartDeviceLink/SDLUnsubscribeWaypointsResponse.h
new file mode 100644
index 000000000..e64cc2d73
--- /dev/null
+++ b/SmartDeviceLink/SDLUnsubscribeWaypointsResponse.h
@@ -0,0 +1,8 @@
+// SDLUnsubscribeWaypointsResponse.m
+//
+
+#import "SDLRPCResponse.h"
+
+@interface SDLUnsubscribeWaypointsResponse : SDLRPCResponse
+
+@end
diff --git a/SmartDeviceLink/SDLUnsubscribeWaypointsResponse.m b/SmartDeviceLink/SDLUnsubscribeWaypointsResponse.m
new file mode 100644
index 000000000..98d8c0b28
--- /dev/null
+++ b/SmartDeviceLink/SDLUnsubscribeWaypointsResponse.m
@@ -0,0 +1,8 @@
+// SDLUnsubscribeWaypointsResponse.m
+//
+
+#import "SDLUnsubscribeWaypointsResponse.h"
+
+@implementation SDLUnsubscribeWaypointsResponse
+
+@end
diff --git a/SmartDeviceLink/SDLWaypointType.h b/SmartDeviceLink/SDLWaypointType.h
new file mode 100644
index 000000000..85e0616e0
--- /dev/null
+++ b/SmartDeviceLink/SDLWaypointType.h
@@ -0,0 +1,36 @@
+// SDLWaypointType.h
+//
+
+#import "SDLEnum.h"
+
+@interface SDLWaypointType : SDLEnum
+
+/**
+ * @abstract Convert String to SDLWayPointType
+ *
+ * @param value The value of the string to get an object for
+ *
+ * @return SDLWayPointType
+ */
++ (SDLWaypointType *)valueOf:(NSString *)value;
+
+/**
+ * @abstract Store the enumeration of all possible SDLWayPointType
+ *
+ * @return an array that store all possible SDLWayPointType
+ */
++ (NSArray *)values;
+
+/**
+ *
+ * @return a SDLWayPointType with value of *PROMPT*
+ */
++ (SDLWaypointType *)ALL;
+
+/**
+ *
+ * @return a SDLWayPointType with value of *DESTINATION*
+ */
++ (SDLWaypointType *)DESTINATION;
+
+@end
diff --git a/SmartDeviceLink/SDLWaypointType.m b/SmartDeviceLink/SDLWaypointType.m
new file mode 100644
index 000000000..314a47f56
--- /dev/null
+++ b/SmartDeviceLink/SDLWaypointType.m
@@ -0,0 +1,46 @@
+// SDLWaypointType.m
+//
+
+#import "SDLWaypointType.h"
+
+SDLWaypointType *SDLWaypointType_ALL = nil;
+SDLWaypointType *SDLWaypointType_DESTINATION = nil;
+
+NSArray *SDLWaypointType_values = nil;
+
+@implementation SDLWaypointType
+
++ (SDLWaypointType *)valueOf:(NSString *)value {
+ for (SDLWaypointType *item in SDLWaypointType.values) {
+ if ([item.value isEqualToString:value]) {
+ return item;
+ }
+ }
+ return nil;
+}
+
++ (NSArray *)values {
+ if (SDLWaypointType_values == nil) {
+ SDLWaypointType_values = @[
+ SDLWaypointType.ALL,
+ SDLWaypointType.DESTINATION,
+ ];
+ }
+ return SDLWaypointType_values;
+}
+
++ (SDLWaypointType *)ALL {
+ if (SDLWaypointType_ALL == nil) {
+ SDLWaypointType_ALL = [[SDLWaypointType alloc] initWithValue:@"ALL"];
+ }
+ return SDLWaypointType_ALL;
+}
+
++ (SDLWaypointType *)DESTINATION {
+ if (SDLWaypointType_DESTINATION == nil) {
+ SDLWaypointType_DESTINATION = [[SDLWaypointType alloc] initWithValue:@"DESTINATION"];
+ }
+ return SDLWaypointType_DESTINATION;
+}
+
+@end
diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h
index 8e2a72262..d3bab7209 100644
--- a/SmartDeviceLink/SmartDeviceLink.h
+++ b/SmartDeviceLink/SmartDeviceLink.h
@@ -75,6 +75,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLEndAudioPassThru.h"
#import "SDLGetDTCs.h"
#import "SDLGetVehicleData.h"
+#import "SDLGetWaypoints.h"
#import "SDLListFiles.h"
#import "SDLPerformAudioPassThru.h"
#import "SDLPerformInteraction.h"
@@ -94,10 +95,12 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSpeak.h"
#import "SDLSubscribeButton.h"
#import "SDLSubscribeVehicleData.h"
+#import "SDLSubscribeWaypoints.h"
#import "SDLSyncPData.h"
#import "SDLUnregisterAppInterface.h"
#import "SDLUnsubscribeButton.h"
#import "SDLUnsubscribeVehicleData.h"
+#import "SDLUnsubscribeWaypoints.h"
#import "SDLUpdateTurnList.h"
// Responses
@@ -118,6 +121,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLGenericResponse.h"
#import "SDLGetDTCsResponse.h"
#import "SDLGetVehicleDataResponse.h"
+#import "SDLGetWaypointsResponse.h"
#import "SDLListFilesResponse.h"
#import "SDLPerformAudioPassThruResponse.h"
#import "SDLPerformInteractionResponse.h"
@@ -137,10 +141,12 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSpeakResponse.h"
#import "SDLSubscribeButtonResponse.h"
#import "SDLSubscribeVehicleDataResponse.h"
+#import "SDLSubscribeWaypointsResponse.h"
#import "SDLSyncPDataResponse.h"
#import "SDLUnregisterAppInterfaceResponse.h"
#import "SDLUnsubscribeButtonResponse.h"
#import "SDLUnsubscribeVehicleDataResponse.h"
+#import "SDLUnsubscribeWaypointsResponse.h"
#import "SDLUpdateTurnListResponse.h"
// Notifications
@@ -162,6 +168,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLOnTBTClientState.h"
#import "SDLOnTouchEvent.h"
#import "SDLOnVehicleData.h"
+#import "SDLOnWaypointChange.h"
// Structs
#import "SDLAirbagStatus.h"
@@ -187,6 +194,8 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLImageField.h"
#import "SDLImageResolution.h"
#import "SDLKeyboardProperties.h"
+#import "SDLLocationCoordinate.h"
+#import "SDLLocationDetails.h"
#import "SDLMenuParams.h"
#import "SDLMyKey.h"
#import "SDLParameterPermissions.h"
@@ -278,6 +287,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLVehicleDataStatus.h"
#import "SDLVehicleDataType.h"
#import "SDLWarningLightStatus.h"
+#import "SDLWaypointType.h"
#import "SDLWiperStatus.h"
// Developer API
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
index eff1ae3b2..6dc041d2b 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
@@ -57,6 +57,9 @@ describe(@"GetFunctionName Tests", ^ {
expect([functionID getFunctionName:38]).to(equal(NAMES_SystemRequest));
expect([functionID getFunctionName:39]).to(equal(NAMES_SendLocation));
expect([functionID getFunctionName:40]).to(equal(NAMES_DialNumber));
+ expect([functionID getFunctionName:45]).to(equal(NAMES_GetWaypoints));
+ expect([functionID getFunctionName:46]).to(equal(NAMES_SubscribeWaypoints));
+ expect([functionID getFunctionName:47]).to(equal(NAMES_UnsubscribeWaypoints));
expect([functionID getFunctionName:32768]).to(equal(NAMES_OnHMIStatus));
expect([functionID getFunctionName:32769]).to(equal(NAMES_OnAppInterfaceUnregistered));
expect([functionID getFunctionName:32770]).to(equal(NAMES_OnButtonEvent));
@@ -72,6 +75,7 @@ describe(@"GetFunctionName Tests", ^ {
expect([functionID getFunctionName:32780]).to(equal(NAMES_OnTouchEvent));
expect([functionID getFunctionName:32781]).to(equal(NAMES_OnSystemRequest));
expect([functionID getFunctionName:32782]).to(equal(NAMES_OnHashChange));
+ expect([functionID getFunctionName:32784]).to(equal(NAMES_OnWaypointChange));
//Not listed in Spec
expect([functionID getFunctionName:65536]).to(equal(NAMES_EncodedSyncPData));
@@ -124,6 +128,10 @@ describe(@"GetFunctionID Tests", ^ {
expect([functionID getFunctionID:NAMES_SystemRequest]).to(equal(@38));
expect([functionID getFunctionID:NAMES_SendLocation]).to(equal(@39));
expect([functionID getFunctionID:NAMES_DialNumber]).to(equal(@40));
+ expect([functionID getFunctionID:NAMES_GetWaypoints]).to(equal(@45));
+ expect([functionID getFunctionID:NAMES_SubscribeWaypoints]).to(equal(@46));
+ expect([functionID getFunctionID:NAMES_UnsubscribeWaypoints]).to(equal(@47));
+
expect([functionID getFunctionID:NAMES_OnHMIStatus]).to(equal(@32768));
expect([functionID getFunctionID:NAMES_OnAppInterfaceUnregistered]).to(equal(@32769));
expect([functionID getFunctionID:NAMES_OnButtonEvent]).to(equal(@32770));
@@ -139,6 +147,7 @@ describe(@"GetFunctionID Tests", ^ {
expect([functionID getFunctionID:NAMES_OnTouchEvent]).to(equal(@32780));
expect([functionID getFunctionID:NAMES_OnSystemRequest]).to(equal(@32781));
expect([functionID getFunctionID:NAMES_OnHashChange]).to(equal(@32782));
+ expect([functionID getFunctionID:NAMES_OnWaypointChange]).to(equal(@32784));
//Not listed in Spec
expect([functionID getFunctionID:NAMES_EncodedSyncPData]).to(equal(@65536));
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAmbientLightStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAmbientLightStatusSpec.m
index c5259da1d..cd1530951 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAmbientLightStatusSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAmbientLightStatusSpec.m
@@ -68,4 +68,4 @@ describe(@"Value List Tests", ^ {
});
});
-QuickSpecEnd \ No newline at end of file
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWaypointTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWaypointTypeSpec.m
new file mode 100644
index 000000000..d237ab0c0
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLWaypointTypeSpec.m
@@ -0,0 +1,51 @@
+// SDLWaypointTypeSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLWaypointType.h"
+
+QuickSpecBegin(SDLWaypointTypeSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect([SDLWaypointType ALL].value).to(equal(@"ALL"));
+ expect([SDLWaypointType DESTINATION].value).to(equal(@"DESTINATION"));
+ });
+});
+describe(@"ValueOf Tests", ^ {
+ it(@"Should return correct values when valid", ^ {
+ expect([SDLWaypointType valueOf:@"ALL"]).to(equal([SDLWaypointType ALL]));
+ expect([SDLWaypointType valueOf:@"DESTINATION"]).to(equal([SDLWaypointType DESTINATION]));
+ });
+
+ it(@"Should return nil when invalid", ^ {
+ expect([SDLWaypointType valueOf:nil]).to(beNil());
+ expect([SDLWaypointType valueOf:@"JKUYTFHYTHJGFRFGYTR"]).to(beNil());
+ });
+});
+describe(@"Value List Tests", ^ {
+ NSArray* storedValues = [SDLWaypointType values];
+ __block NSArray* definedValues;
+ beforeSuite(^ {
+ definedValues = [@[[SDLWaypointType ALL],
+ [SDLWaypointType DESTINATION]] copy];
+ });
+
+ it(@"Should contain all defined enum values", ^ {
+ for (int i = 0; i < definedValues.count; i++) {
+ expect(storedValues).to(contain(definedValues[i]));
+ }
+ });
+
+ it(@"Should contain only defined enum values", ^ {
+ for (int i = 0; i < storedValues.count; i++) {
+ expect(definedValues).to(contain(storedValues[i]));
+ }
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m
new file mode 100644
index 000000000..b08d8bb5d
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m
@@ -0,0 +1,102 @@
+// SDLOnWaypointChangeSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLOnWaypointChange.h"
+
+#import "SDLImage.h"
+#import "SDLLocationCoordinate.h"
+#import "SDLLocationDetails.h"
+#import "SDLNames.h"
+#import "SDLOasisAddress.h"
+
+QuickSpecBegin(SDLOnWaypointChangeSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ __block SDLOnWaypointChange* testNotification = nil;
+ __block NSArray<SDLLocationDetails *>* someWaypoints = nil;
+
+ describe(@"when initialized with init", ^{
+ beforeEach(^{
+ testNotification = [[SDLOnWaypointChange alloc] init];
+ });
+
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ SDLLocationDetails* someLocation = [[SDLLocationDetails alloc] init];
+ someLocation.coordinate = [[SDLLocationCoordinate alloc] init];
+ someLocation.locationName = @"Livio";
+ someLocation.locationDescription = @"A great place to work";
+ someLocation.addressLines = @[@"3136 Hilton Rd", @"Ferndale, MI", @"48220"];
+ someLocation.phoneNumber = @"248-591-0333";
+ someLocation.locationImage = [[SDLImage alloc] init];
+ someLocation.searchAddress = [[SDLOasisAddress alloc] init];
+
+ someWaypoints = @[someLocation];
+
+ testNotification.waypoints = someWaypoints;
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get waypoints correctly", ^{
+ expect(testNotification.waypoints).to(equal(someWaypoints));
+ expect(testNotification.waypoints).to(beIdenticalTo(someWaypoints));
+ });
+ });
+ });
+
+ describe(@"when initialized with a dictionary", ^{
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ SDLLocationDetails* someLocation = [[SDLLocationDetails alloc] init];
+ someLocation.coordinate = [[SDLLocationCoordinate alloc] init];
+ someLocation.locationName = @"Livio";
+ someLocation.locationDescription = @"A great place to work";
+ someLocation.addressLines = @[@"3136 Hilton Rd", @"Ferndale, MI", @"48220"];
+ someLocation.phoneNumber = @"248-591-0333";
+ someLocation.locationImage = [[SDLImage alloc] init];
+ someLocation.searchAddress = [[SDLOasisAddress alloc] init];
+
+ someWaypoints = @[someLocation];
+
+ NSDictionary *initDict = @{NAMES_notification : @{
+ NAMES_parameters: @{
+ NAMES_waypoints: someWaypoints
+ }
+ },
+ NAMES_operation_name:NAMES_OnWaypointChange
+ };
+
+ testNotification = [[SDLOnWaypointChange alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get waypoints correctly", ^{
+ expect(testNotification.waypoints).to(equal(someWaypoints));
+ expect(testNotification.waypoints).to(beIdenticalTo(someWaypoints));
+ });
+ });
+
+ context(@"when parameters are not set", ^{
+ beforeEach(^{
+ NSDictionary *initDict = @{
+ NAMES_request: @{
+ NAMES_parameters: @{}
+ }
+ };
+
+ testNotification = [[SDLOnWaypointChange alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ it(@"should return nil for waypoints", ^{
+ expect(testNotification.waypoints).to(beNil());
+ });
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m
new file mode 100644
index 000000000..579d63935
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m
@@ -0,0 +1,42 @@
+// SDLGetWaypointsSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLGetWaypoints.h"
+
+#import "SDLNames.h"
+#import "SDLWaypointType.h"
+
+QuickSpecBegin(SDLGetWaypointsSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^ {
+ SDLGetWaypoints* testRequest = [[SDLGetWaypoints alloc] init];
+
+ testRequest.waypointType = [SDLWaypointType ALL];
+
+ expect(testRequest.waypointType).to(equal([SDLWaypointType ALL]));
+ });
+
+ it(@"Should get correctly when initialized", ^ {
+ NSMutableDictionary* dict = [@{NAMES_request:
+ @{NAMES_parameters:
+ @{NAMES_waypointType:[SDLWaypointType ALL]},
+ NAMES_operation_name:NAMES_GetWaypoints}} mutableCopy];
+ SDLGetWaypoints* testRequest = [[SDLGetWaypoints alloc] initWithDictionary:dict];
+
+ expect(testRequest.waypointType).to(equal([SDLWaypointType ALL]));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLGetWaypoints* testRequest = [[SDLGetWaypoints alloc] init];
+
+ expect(testRequest.waypointType).to(beNil());
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeWaypointsSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeWaypointsSpec.m
new file mode 100644
index 000000000..10e66d158
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeWaypointsSpec.m
@@ -0,0 +1,13 @@
+// SDLSubscribeWaypointsSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLSubscribeWaypoints.h"
+
+QuickSpecBegin(SDLSubscribeWaypointsSpec)
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeWaypointsSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeWaypointsSpec.m
new file mode 100644
index 000000000..426b78c0a
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeWaypointsSpec.m
@@ -0,0 +1,13 @@
+// SDLUnsubscribeWaypointsSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLUnsubscribeWaypoints.h"
+
+QuickSpecBegin(SDLUnsubscribeWaypointsSpec)
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m
new file mode 100644
index 000000000..4754fe4e8
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m
@@ -0,0 +1,101 @@
+// SDLGetWaypointsResponseSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLGetWaypointsResponse.h"
+
+#import "SDLImage.h"
+#import "SDLLocationCoordinate.h"
+#import "SDLLocationDetails.h"
+#import "SDLNames.h"
+#import "SDLOasisAddress.h"
+
+QuickSpecBegin(SDLGetWaypointsResponseSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ __block SDLGetWaypointsResponse* testResponse = nil;
+ __block NSArray<SDLLocationDetails *>* someWaypoints = nil;
+
+ describe(@"when initialized with init", ^{
+ beforeEach(^{
+ testResponse = [[SDLGetWaypointsResponse alloc] init];
+ });
+
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ SDLLocationDetails* someLocation = [[SDLLocationDetails alloc] init];
+ someLocation.coordinate = [[SDLLocationCoordinate alloc] init];
+ someLocation.locationName = @"Livio";
+ someLocation.locationDescription = @"A great place to work";
+ someLocation.addressLines = @[@"3136 Hilton Rd", @"Ferndale, MI", @"48220"];
+ someLocation.phoneNumber = @"248-591-0333";
+ someLocation.locationImage = [[SDLImage alloc] init];
+ someLocation.searchAddress = [[SDLOasisAddress alloc] init];
+
+ someWaypoints = @[someLocation];
+
+ testResponse.waypoints = someWaypoints;
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get waypoints correctly", ^{
+ expect(testResponse.waypoints).to(equal(someWaypoints));
+ expect(testResponse.waypoints).to(beIdenticalTo(someWaypoints));
+ });
+ });
+ });
+
+ describe(@"when initialized with a dictionary", ^{
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ SDLLocationDetails* someLocation = [[SDLLocationDetails alloc] init];
+ someLocation.coordinate = [[SDLLocationCoordinate alloc] init];
+ someLocation.locationName = @"Livio";
+ someLocation.locationDescription = @"A great place to work";
+ someLocation.addressLines = @[@"3136 Hilton Rd", @"Ferndale, MI", @"48220"];
+ someLocation.phoneNumber = @"248-591-0333";
+ someLocation.locationImage = [[SDLImage alloc] init];
+ someLocation.searchAddress = [[SDLOasisAddress alloc] init];
+
+ someWaypoints = @[someLocation];
+
+ NSDictionary *initDict = @{NAMES_response : @{
+ NAMES_parameters: @{
+ NAMES_waypoints: someWaypoints
+ }
+ }
+ };
+
+ testResponse = [[SDLGetWaypointsResponse alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get waypoints correctly", ^{
+ expect(testResponse.waypoints).to(equal(someWaypoints));
+ expect(testResponse.waypoints).to(beIdenticalTo(someWaypoints));
+ });
+ });
+
+ context(@"when parameters are not set", ^{
+ beforeEach(^{
+ NSDictionary *initDict = @{
+ NAMES_request: @{
+ NAMES_parameters: @{}
+ }
+ };
+
+ testResponse = [[SDLGetWaypointsResponse alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ it(@"should return nil for waypoints", ^{
+ expect(testResponse.waypoints).to(beNil());
+ });
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeWaypointsResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeWaypointsResponseSpec.m
new file mode 100644
index 000000000..694bacc9e
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeWaypointsResponseSpec.m
@@ -0,0 +1,13 @@
+// SDLSubscribeWaypointsResponseSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLSubscribeWaypointsResponse.h"
+
+QuickSpecBegin(SDLSubscribeWaypointsResponseSpec)
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeWaypointsResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeWaypointsResponseSpec.m
new file mode 100644
index 000000000..f307d5817
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeWaypointsResponseSpec.m
@@ -0,0 +1,13 @@
+// SDLUnsubscribeWaypointsResponseSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLUnsubscribeWaypointsResponse.h"
+
+QuickSpecBegin(SDLUnsubscribeWaypointsResponseSpec)
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m
new file mode 100644
index 000000000..85c9a2b5e
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m
@@ -0,0 +1,95 @@
+// SDLLocationCoordinateSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLLocationCoordinate.h"
+#import "SDLNames.h"
+
+
+QuickSpecBegin(SDLLocationCoordinateSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ __block SDLLocationCoordinate* testStruct = nil;
+ __block NSNumber *someLatitude = nil;
+ __block NSNumber *someLongitude = nil;
+
+
+ describe(@"when initialized with init", ^{
+ beforeEach(^{
+ testStruct = [[SDLLocationCoordinate alloc] init];
+ });
+
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ someLatitude = @86.75;
+ someLongitude = @(-3.09);
+
+ testStruct.latitudeDegrees = someLatitude;
+ testStruct.longitudeDegrees = someLongitude;
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get latitude correctly", ^{
+ expect(testStruct.latitudeDegrees).to(equal(someLatitude));
+ expect(testStruct.latitudeDegrees).to(beIdenticalTo(someLatitude));
+ });
+
+ it(@"should get longitude correctly", ^{
+ expect(testStruct.longitudeDegrees).to(equal(someLongitude));
+ expect(testStruct.longitudeDegrees).to(beIdenticalTo(someLongitude));
+ });
+ });
+ });
+
+ describe(@"when initialized with a dictionary", ^{
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ someLongitude = @123.4567;
+ someLatitude = @65.4321;
+ NSDictionary *initDict = @{
+ NAMES_longitudeDegrees: someLongitude,
+ NAMES_latitudeDegrees: someLatitude,
+ };
+
+ testStruct = [[SDLLocationCoordinate alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get longitude correctly", ^{
+ expect(testStruct.longitudeDegrees).to(equal(someLongitude));
+ expect(testStruct.longitudeDegrees).to(beIdenticalTo(someLongitude));
+ });
+
+ it(@"should get latitude correctly", ^{
+ expect(testStruct.latitudeDegrees).to(equal(someLatitude));
+ expect(testStruct.latitudeDegrees).to(beIdenticalTo(someLatitude));
+ });
+ });
+
+ context(@"when parameters are not set", ^{
+ beforeEach(^{
+ NSDictionary *initDict = @{
+ NAMES_request: @{
+ NAMES_parameters: @{}
+ }
+ };
+
+ testStruct = [[SDLLocationCoordinate alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ it(@"should return nil for longitude", ^{
+ expect(testStruct.longitudeDegrees).to(beNil());
+ });
+
+ it(@"should return nil for latitude", ^{
+ expect(testStruct.latitudeDegrees).to(beNil());
+ });
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m
new file mode 100644
index 000000000..a0903293c
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m
@@ -0,0 +1,192 @@
+// SDLLocationDetailsSpec.m
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLLocationDetails.h"
+
+#import "SDLImage.h"
+#import "SDLLocationCoordinate.h"
+#import "SDLNames.h"
+#import "SDLOasisAddress.h"
+
+QuickSpecBegin(SDLLocationDetailsSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ __block SDLLocationDetails *testStruct = nil;
+ __block NSString *someLocation = nil;
+ __block NSString *someLocationDescription = nil;
+ __block NSArray *someAddressLines = nil;
+ __block NSString *somePhoneNumber = nil;
+ __block SDLImage* someImage = nil;
+ __block SDLLocationCoordinate* someCoordinate = nil;
+ __block SDLOasisAddress* someAddress = nil;
+
+ describe(@"when initialized with init", ^{
+ beforeEach(^{
+ testStruct = [[SDLLocationDetails alloc] init];
+ });
+
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ someCoordinate = [[SDLLocationCoordinate alloc] init];
+ someLocation = @"Livio";
+ someLocationDescription = @"A great place to work";
+ someAddressLines = @[@"3136 Hilton Rd", @"Ferndale, MI", @"48220"];
+ somePhoneNumber = @"248-591-0333";
+ someImage = [[SDLImage alloc] init];
+ someAddress = [[SDLOasisAddress alloc] init];
+
+ testStruct.coordinate = someCoordinate;
+ testStruct.locationName = someLocation;
+ testStruct.locationDescription = someLocationDescription;
+ testStruct.addressLines = someAddressLines;
+ testStruct.phoneNumber = somePhoneNumber;
+ testStruct.locationImage = someImage;
+ testStruct.searchAddress = someAddress;
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get coordinate correctly", ^{
+ expect(testStruct.coordinate).to(equal(someCoordinate));
+ expect(testStruct.coordinate).to(beIdenticalTo(someCoordinate));
+ });
+
+ it(@"should get location correctly", ^{
+ expect(testStruct.locationName).to(equal(someLocation));
+ expect(testStruct.locationName).to(beIdenticalTo(someLocation));
+ });
+
+ it(@"should get location description correctly", ^{
+ expect(testStruct.locationDescription).to(equal(someLocationDescription));
+ expect(testStruct.locationDescription).to(beIdenticalTo(someLocationDescription));
+ });
+
+ it(@"should get address lines correctly", ^{
+ expect(testStruct.addressLines).to(equal(someAddressLines));
+ expect(testStruct.addressLines).to(beIdenticalTo(someAddressLines));
+ });
+
+ it(@"should get phone number correctly", ^{
+ expect(testStruct.phoneNumber).to(equal(somePhoneNumber));
+ expect(testStruct.phoneNumber).to(beIdenticalTo(somePhoneNumber));
+ });
+
+ it(@"should get image correctly", ^{
+ expect(testStruct.locationImage).to(equal(someImage));
+ expect(testStruct.locationImage).to(beIdenticalTo(someImage));
+ });
+
+ it(@"should get address correctly", ^{
+ expect(testStruct.searchAddress).to(equal(someAddress));
+ expect(testStruct.searchAddress).to(beIdenticalTo(someAddress));
+ });
+
+ });
+ });
+
+ describe(@"when initialized with a dictionary", ^{
+ context(@"when parameters are set correctly", ^{
+ beforeEach(^{
+ someCoordinate = [[SDLLocationCoordinate alloc] init];
+ someLocation = @"Livio";
+ someLocationDescription = @"A great place to work";
+ someAddressLines = @[@"3136 Hilton Rd", @"Ferndale, MI", @"48220"];
+ somePhoneNumber = @"248-591-0333";
+ someImage = [[SDLImage alloc] init];
+ NSDictionary *initDict = @{
+ NAMES_locationCoordinate: someCoordinate,
+ NAMES_locationName: someLocation,
+ NAMES_locationDescription: someLocationDescription,
+ NAMES_addressLines: someAddressLines,
+ NAMES_phoneNumber: somePhoneNumber,
+ NAMES_locationImage: someImage,
+ NAMES_address: someAddress
+ };
+
+ testStruct = [[SDLLocationDetails alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical
+ it(@"should get coordinate correctly", ^{
+ expect(testStruct.coordinate).to(equal(someCoordinate));
+ expect(testStruct.coordinate).to(beIdenticalTo(someCoordinate));
+ });
+
+ it(@"should get location correctly", ^{
+ expect(testStruct.locationName).to(equal(someLocation));
+ expect(testStruct.locationName).to(beIdenticalTo(someLocation));
+ });
+
+ it(@"should get location description correctly", ^{
+ expect(testStruct.locationDescription).to(equal(someLocationDescription));
+ expect(testStruct.locationDescription).to(beIdenticalTo(someLocationDescription));
+ });
+
+ it(@"should get address lines correctly", ^{
+ expect(testStruct.addressLines).to(equal(someAddressLines));
+ expect(testStruct.addressLines).to(beIdenticalTo(someAddressLines));
+ });
+
+ it(@"should get phone number correctly", ^{
+ expect(testStruct.phoneNumber).to(equal(somePhoneNumber));
+ expect(testStruct.phoneNumber).to(beIdenticalTo(somePhoneNumber));
+ });
+
+ it(@"should get image correctly", ^{
+ expect(testStruct.locationImage).to(equal(someImage));
+ expect(testStruct.locationImage).to(beIdenticalTo(someImage));
+ });
+
+ it(@"should get address correctly", ^{
+ expect(testStruct.searchAddress).to(equal(someAddress));
+ expect(testStruct.searchAddress).to(beIdenticalTo(someAddress));
+ });
+ });
+
+ context(@"when parameters are not set", ^{
+ beforeEach(^{
+ NSDictionary *initDict = @{
+ NAMES_request: @{
+ NAMES_parameters: @{}
+ }
+ };
+
+ testStruct = [[SDLLocationDetails alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]];
+ });
+
+ it(@"should return nil for coordinate", ^{
+ expect(testStruct.coordinate).to(beNil());
+ });
+
+ it(@"should return nil for location", ^{
+ expect(testStruct.locationName).to(beNil());
+ });
+
+ it(@"should return nil for location description", ^{
+ expect(testStruct.locationDescription).to(beNil());
+ });
+
+ it(@"should return nil for address lines", ^{
+ expect(testStruct.addressLines).to(beNil());
+ });
+
+ it(@"should return nil for phone number", ^{
+ expect(testStruct.phoneNumber).to(beNil());
+ });
+
+ it(@"should return nil for image", ^{
+ expect(testStruct.locationImage).to(beNil());
+ });
+
+ it(@"should return nil for address", ^{
+ expect(testStruct.searchAddress).to(beNil());
+ });
+ });
+ });
+});
+
+QuickSpecEnd