summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2017-07-11 16:37:34 -0400
committerJoel Fischer <joeljfischer@gmail.com>2017-07-11 16:37:34 -0400
commit0dfbf8f25bef1e0e03696ace61f90455f393df2f (patch)
treec0149ca454f7f7b700dde4d603b0ab083fef48a7
parent4d0f991f317ba06dd5c48389b7d030f979a625b2 (diff)
downloadsdl_ios-0dfbf8f25bef1e0e03696ace61f90455f393df2f.tar.gz
Create System Capability RPCs
* Fixes #611 * [SDL-0055] System Capabilities Query
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj80
-rw-r--r--SmartDeviceLink/SDLFunctionID.m2
-rw-r--r--SmartDeviceLink/SDLGetSystemCapability.h29
-rw-r--r--SmartDeviceLink/SDLGetSystemCapability.m56
-rw-r--r--SmartDeviceLink/SDLGetSystemCapabilityResponse.h22
-rw-r--r--SmartDeviceLink/SDLGetSystemCapabilityResponse.m46
-rw-r--r--SmartDeviceLink/SDLHeadLampStatus.h2
-rw-r--r--SmartDeviceLink/SDLNames.h8
-rw-r--r--SmartDeviceLink/SDLNavigationCapability.h38
-rw-r--r--SmartDeviceLink/SDLNavigationCapability.m66
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.h1
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.m1
-rw-r--r--SmartDeviceLink/SDLNotificationDispatcher.m4
-rw-r--r--SmartDeviceLink/SDLPhoneCapability.h32
-rw-r--r--SmartDeviceLink/SDLPhoneCapability.m54
-rw-r--r--SmartDeviceLink/SDLProxyListener.h2
-rw-r--r--SmartDeviceLink/SDLSystemCapability.h44
-rw-r--r--SmartDeviceLink/SDLSystemCapability.m107
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityType.h41
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityType.m51
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m1
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m49
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m50
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilitiesResponseSpec.m54
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m50
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m42
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m72
27 files changed, 998 insertions, 6 deletions
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index 64651d7d7..4ee0bf2a5 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -235,11 +235,29 @@
1680B11E1A9CD7AD00DBD79E /* SDLProtocolReceivedMessageRouterSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1680B1121A9CD7AD00DBD79E /* SDLProtocolReceivedMessageRouterSpec.m */; };
332A914F1CED9CC60043824C /* SDLAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 332A913D1CED87F80043824C /* SDLAppInfo.m */; };
332A91501CED9CF10043824C /* SDLAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 332A913C1CED87F80043824C /* SDLAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 5D00AC671F140F0A004000D9 /* SDLSystemCapabilityType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */; };
+ 5D00AC681F140F0A004000D9 /* SDLSystemCapabilityType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC661F140F0A004000D9 /* SDLSystemCapabilityType.m */; };
+ 5D00AC6B1F141339004000D9 /* SDLSystemCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC691F141339004000D9 /* SDLSystemCapability.h */; };
+ 5D00AC6C1F141339004000D9 /* SDLSystemCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC6A1F141339004000D9 /* SDLSystemCapability.m */; };
+ 5D00AC6F1F1511B9004000D9 /* SDLGetSystemCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC6D1F1511B9004000D9 /* SDLGetSystemCapability.h */; };
+ 5D00AC701F1511B9004000D9 /* SDLGetSystemCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC6E1F1511B9004000D9 /* SDLGetSystemCapability.m */; };
+ 5D00AC731F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC711F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h */; };
+ 5D00AC741F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC721F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m */; };
+ 5D00AC771F15283E004000D9 /* SDLNavigationCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC751F15283E004000D9 /* SDLNavigationCapability.h */; };
+ 5D00AC781F15283E004000D9 /* SDLNavigationCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */; };
+ 5D00AC7B1F15287E004000D9 /* SDLPhoneCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */; };
+ 5D00AC7C1F15287E004000D9 /* SDLPhoneCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */; };
5D0218F61A8E79C400D1BF62 /* ConnectionTCPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0218F51A8E79C400D1BF62 /* ConnectionTCPTableViewController.m */; };
5D0218F91A8E7A7300D1BF62 /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D0218F71A8E7A7300D1BF62 /* ConnectionTCPTableViewController.storyboard */; };
5D0218FC1A8E7E1700D1BF62 /* ConnectionContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0218FB1A8E7E1700D1BF62 /* ConnectionContainerViewController.m */; };
5D0218FF1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0218FE1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m */; };
5D0219051A8E9F6D00D1BF62 /* ConnectionIAPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D0219031A8E9F6D00D1BF62 /* ConnectionIAPTableViewController.storyboard */; };
+ 5D0A9F911F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */; };
+ 5D0A9F931F15560B00CC80DD /* SDLNavigationCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */; };
+ 5D0A9F951F15585B00CC80DD /* SDLPhoneCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F941F15585B00CC80DD /* SDLPhoneCapabilitySpec.m */; };
+ 5D0A9F971F1559EC00CC80DD /* SDLSystemCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */; };
+ 5D0A9F9A1F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F991F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m */; };
+ 5D0A9F9C1F1565EB00CC80DD /* SDLGetSystemCapabilitiesResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F9B1F1565EB00CC80DD /* SDLGetSystemCapabilitiesResponseSpec.m */; };
5D1654561D3E754F00554D93 /* SDLLifecycleManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1654551D3E754F00554D93 /* SDLLifecycleManagerSpec.m */; };
5D16545A1D3E7A1600554D93 /* SDLLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1654581D3E7A1600554D93 /* SDLLifecycleManager.h */; };
5D16545B1D3E7A1600554D93 /* SDLLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1654591D3E7A1600554D93 /* SDLLifecycleManager.m */; };
@@ -1257,6 +1275,18 @@
1680B1121A9CD7AD00DBD79E /* SDLProtocolReceivedMessageRouterSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolReceivedMessageRouterSpec.m; sourceTree = "<group>"; };
332A913C1CED87F80043824C /* SDLAppInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAppInfo.h; sourceTree = "<group>"; };
332A913D1CED87F80043824C /* SDLAppInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppInfo.m; sourceTree = "<group>"; };
+ 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityType.h; sourceTree = "<group>"; };
+ 5D00AC661F140F0A004000D9 /* SDLSystemCapabilityType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityType.m; sourceTree = "<group>"; };
+ 5D00AC691F141339004000D9 /* SDLSystemCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapability.h; sourceTree = "<group>"; };
+ 5D00AC6A1F141339004000D9 /* SDLSystemCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapability.m; sourceTree = "<group>"; };
+ 5D00AC6D1F1511B9004000D9 /* SDLGetSystemCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetSystemCapability.h; sourceTree = "<group>"; };
+ 5D00AC6E1F1511B9004000D9 /* SDLGetSystemCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapability.m; sourceTree = "<group>"; };
+ 5D00AC711F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetSystemCapabilityResponse.h; sourceTree = "<group>"; };
+ 5D00AC721F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapabilityResponse.m; sourceTree = "<group>"; };
+ 5D00AC751F15283E004000D9 /* SDLNavigationCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLNavigationCapability.h; sourceTree = "<group>"; };
+ 5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationCapability.m; sourceTree = "<group>"; };
+ 5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPhoneCapability.h; sourceTree = "<group>"; };
+ 5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPhoneCapability.m; sourceTree = "<group>"; };
5D0218F41A8E79C400D1BF62 /* ConnectionTCPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionTCPTableViewController.h; path = SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.h; sourceTree = SOURCE_ROOT; };
5D0218F51A8E79C400D1BF62 /* ConnectionTCPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionTCPTableViewController.m; path = SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m; sourceTree = SOURCE_ROOT; };
5D0218F81A8E7A7300D1BF62 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = SmartDeviceLink_Example/Base.lproj/ConnectionTCPTableViewController.storyboard; sourceTree = SOURCE_ROOT; };
@@ -1265,6 +1295,12 @@
5D0218FD1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionIAPTableViewController.h; path = SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.h; sourceTree = SOURCE_ROOT; };
5D0218FE1A8E9E0D00D1BF62 /* ConnectionIAPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionIAPTableViewController.m; path = SmartDeviceLink_Example/Classes/ConnectionIAPTableViewController.m; sourceTree = SOURCE_ROOT; };
5D0219041A8E9F6D00D1BF62 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = SmartDeviceLink_Example/Base.lproj/ConnectionIAPTableViewController.storyboard; sourceTree = SOURCE_ROOT; };
+ 5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityTypeSpec.m; sourceTree = "<group>"; };
+ 5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationCapabilitySpec.m; sourceTree = "<group>"; };
+ 5D0A9F941F15585B00CC80DD /* SDLPhoneCapabilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPhoneCapabilitySpec.m; sourceTree = "<group>"; };
+ 5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilitySpec.m; sourceTree = "<group>"; };
+ 5D0A9F991F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapabilitiesSpec.m; sourceTree = "<group>"; };
+ 5D0A9F9B1F1565EB00CC80DD /* SDLGetSystemCapabilitiesResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapabilitiesResponseSpec.m; sourceTree = "<group>"; };
5D1654551D3E754F00554D93 /* SDLLifecycleManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleManagerSpec.m; path = DevAPISpecs/SDLLifecycleManagerSpec.m; sourceTree = "<group>"; };
5D1654581D3E7A1600554D93 /* SDLLifecycleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleManager.h; sourceTree = "<group>"; };
5D1654591D3E7A1600554D93 /* SDLLifecycleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleManager.m; sourceTree = "<group>"; };
@@ -2119,6 +2155,7 @@
162E82121A9BDE8A00906325 /* SDLSoftButtonTypeSpec.m */,
162E82131A9BDE8A00906325 /* SDLSpeechCapabilitiesSpec.m */,
162E82141A9BDE8A00906325 /* SDLSystemAction.m */,
+ 5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */,
162E82151A9BDE8A00906325 /* SDLSystemContextSpec.m */,
162E82161A9BDE8A00906325 /* SDLTBTStateSpec.m */,
162E82171A9BDE8A00906325 /* SDLTextAlignmentSpec.m */,
@@ -2201,6 +2238,7 @@
162E82491A9BDE8A00906325 /* SDLEncodedSyncPDataSpec.m */,
162E824A1A9BDE8A00906325 /* SDLEndAudioPassThruSpec.m */,
162E824B1A9BDE8A00906325 /* SDLGetDTCsSpec.m */,
+ 5D0A9F991F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m */,
162E824C1A9BDE8A00906325 /* SDLGetVehicleDataSpec.m */,
DA9F7EA11DCC05E100ACAE48 /* SDLGetWaypointsSpec.m */,
162E824D1A9BDE8A00906325 /* SDLListFilesSpec.m */,
@@ -2253,6 +2291,7 @@
162E82721A9BDE8A00906325 /* SDLEndAudioPassThruResponseSpec.m */,
162E82731A9BDE8A00906325 /* SDLGenericResponseSpec.m */,
162E82741A9BDE8A00906325 /* SDLGetDTCsResponseSpec.m */,
+ 5D0A9F9B1F1565EB00CC80DD /* SDLGetSystemCapabilitiesResponseSpec.m */,
162E82751A9BDE8A00906325 /* SDLGetVehicleDataResponseSpec.m */,
DA9F7EA71DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m */,
162E82761A9BDE8A00906325 /* SDLListFilesResponseSpec.m */,
@@ -2315,9 +2354,11 @@
DA9F7EAE1DCC063400ACAE48 /* SDLLocationDetailsSpec.m */,
162E82A21A9BDE8A00906325 /* SDLMenuParamsSpec.m */,
162E82A31A9BDE8A00906325 /* SDLMyKeySpec.m */,
+ 5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */,
DA9F7EB51DCC086A00ACAE48 /* SDLOasisAddressSpec.m */,
162E82A41A9BDE8A00906325 /* SDLParameterPermissionsSpec.m */,
162E82A51A9BDE8A00906325 /* SDLPermissionItemSpec.m */,
+ 5D0A9F941F15585B00CC80DD /* SDLPhoneCapabilitySpec.m */,
162E82A61A9BDE8A00906325 /* SDLPresetBankCapabilitiesSpec.m */,
162E82A71A9BDE8A00906325 /* SDLScreenParamsSpec.m */,
162E82A81A9BDE8A00906325 /* SDLSingleTireStatusSpec.m */,
@@ -2325,6 +2366,7 @@
162E82AA1A9BDE8A00906325 /* SDLSoftButtonSpec.m */,
162E82AB1A9BDE8A00906325 /* SDLStartTimeSpec.m */,
162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */,
+ 5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */,
162E82AD1A9BDE8A00906325 /* SDLTextFieldSpec.m */,
162E82AE1A9BDE8A00906325 /* SDLTireStatusSpec.m */,
162E82AF1A9BDE8A00906325 /* SDLTouchCoordSpec.m */,
@@ -2461,8 +2503,6 @@
children = (
5D4D67AA1D2ED37A00468B4A /* SDLNotificationDispatcher.h */,
5D4D67AB1D2ED37A00468B4A /* SDLNotificationDispatcher.m */,
- 5D3E48791D6F888E0000BFEF /* SDLRPCResponseNotification.h */,
- 5D3E487A1D6F888E0000BFEF /* SDLRPCResponseNotification.m */,
5D3E487D1D6F88A30000BFEF /* SDLRPCNotificationNotification.h */,
5D3E487E1D6F88A30000BFEF /* SDLRPCNotificationNotification.m */,
);
@@ -2472,6 +2512,8 @@
5D3E48821D74813B0000BFEF /* Responses */ = {
isa = PBXGroup;
children = (
+ 5D3E48791D6F888E0000BFEF /* SDLRPCResponseNotification.h */,
+ 5D3E487A1D6F888E0000BFEF /* SDLRPCResponseNotification.m */,
5D4D67AE1D2FE2F900468B4A /* SDLResponseDispatcher.h */,
5D4D67AF1D2FE2F900468B4A /* SDLResponseDispatcher.m */,
);
@@ -2673,6 +2715,8 @@
5D61FAB71A84238A00846EE7 /* SDLEndAudioPassThru.m */,
5D61FAC41A84238A00846EE7 /* SDLGetDTCs.h */,
5D61FAC51A84238A00846EE7 /* SDLGetDTCs.m */,
+ 5D00AC6D1F1511B9004000D9 /* SDLGetSystemCapability.h */,
+ 5D00AC6E1F1511B9004000D9 /* SDLGetSystemCapability.m */,
5D61FAC81A84238A00846EE7 /* SDLGetVehicleData.h */,
5D61FAC91A84238A00846EE7 /* SDLGetVehicleData.m */,
DA9F7E6D1DCBFFDB00ACAE48 /* SDLGetWaypoints.h */,
@@ -2693,6 +2737,8 @@
5D61FB771A84238B00846EE7 /* SDLResetGlobalProperties.m */,
5D61FB8E1A84238B00846EE7 /* SDLScrollableMessage.h */,
5D61FB8F1A84238B00846EE7 /* SDLScrollableMessage.m */,
+ 5DCF76F31ACDBAD300BB647B /* SDLSendLocation.h */,
+ 5DCF76F41ACDBAD300BB647B /* SDLSendLocation.m */,
5D61FB921A84238B00846EE7 /* SDLSetAppIcon.h */,
5D61FB931A84238B00846EE7 /* SDLSetAppIcon.m */,
5D61FB961A84238B00846EE7 /* SDLSetDisplayLayout.h */,
@@ -2729,8 +2775,6 @@
DA9F7E921DCC04E400ACAE48 /* SDLUnsubscribeWaypoints.m */,
5D61FC041A84238C00846EE7 /* SDLUpdateTurnList.h */,
5D61FC051A84238C00846EE7 /* SDLUpdateTurnList.m */,
- 5DCF76F31ACDBAD300BB647B /* SDLSendLocation.h */,
- 5DCF76F41ACDBAD300BB647B /* SDLSendLocation.m */,
);
name = Requests;
sourceTree = "<group>";
@@ -2770,6 +2814,8 @@
5D61FAC31A84238A00846EE7 /* SDLGenericResponse.m */,
5D61FAC61A84238A00846EE7 /* SDLGetDTCsResponse.h */,
5D61FAC71A84238A00846EE7 /* SDLGetDTCsResponse.m */,
+ 5D00AC711F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h */,
+ 5D00AC721F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m */,
5D61FACA1A84238A00846EE7 /* SDLGetVehicleDataResponse.h */,
5D61FACB1A84238A00846EE7 /* SDLGetVehicleDataResponse.m */,
DA9F7E711DCC004C00ACAE48 /* SDLGetWaypointsResponse.h */,
@@ -2889,12 +2935,16 @@
5D61FB0C1A84238A00846EE7 /* SDLMenuParams.m */,
5D61FB0D1A84238A00846EE7 /* SDLMyKey.h */,
5D61FB0E1A84238A00846EE7 /* SDLMyKey.m */,
+ 5D00AC751F15283E004000D9 /* SDLNavigationCapability.h */,
+ 5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */,
DA9F7E651DCBFAD400ACAE48 /* SDLOasisAddress.h */,
DA9F7E661DCBFAD400ACAE48 /* SDLOasisAddress.m */,
5D61FB361A84238B00846EE7 /* SDLParameterPermissions.h */,
5D61FB371A84238B00846EE7 /* SDLParameterPermissions.m */,
5D61FB401A84238B00846EE7 /* SDLPermissionItem.h */,
5D61FB411A84238B00846EE7 /* SDLPermissionItem.m */,
+ 5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */,
+ 5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */,
5D61FB4E1A84238B00846EE7 /* SDLPresetBankCapabilities.h */,
5D61FB4F1A84238B00846EE7 /* SDLPresetBankCapabilities.m */,
5D61FB8C1A84238B00846EE7 /* SDLScreenParams.h */,
@@ -2909,6 +2959,8 @@
5D61FBBF1A84238B00846EE7 /* SDLStartTime.m */,
5D61FBC81A84238B00846EE7 /* SDLSyncMsgVersion.h */,
5D61FBC91A84238B00846EE7 /* SDLSyncMsgVersion.m */,
+ 5D00AC691F141339004000D9 /* SDLSystemCapability.h */,
+ 5D00AC6A1F141339004000D9 /* SDLSystemCapability.m */,
5D61FBDC1A84238C00846EE7 /* SDLTextField.h */,
5D61FBDD1A84238C00846EE7 /* SDLTextField.m */,
5D61FBE21A84238C00846EE7 /* SDLTireStatus.h */,
@@ -3039,6 +3091,8 @@
5D61FBBD1A84238B00846EE7 /* SDLSpeechCapabilities.m */,
5D61FBCE1A84238B00846EE7 /* SDLSystemAction.h */,
5D61FBCF1A84238B00846EE7 /* SDLSystemAction.m */,
+ 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */,
+ 5D00AC661F140F0A004000D9 /* SDLSystemCapabilityType.m */,
5D61FBD01A84238B00846EE7 /* SDLSystemContext.h */,
5D61FBD11A84238B00846EE7 /* SDLSystemContext.m */,
5D61FBD61A84238B00846EE7 /* SDLTBTState.h */,
@@ -3948,6 +4002,7 @@
5D61FC6D1A84238C00846EE7 /* SDLCreateInteractionChoiceSetResponse.h in Headers */,
5D8204221BCEA89A00D0A41B /* SDLFileManager.h in Headers */,
5D4D67B41D30161600468B4A /* SDLLockScreenManager.h in Headers */,
+ 5D00AC7B1F15287E004000D9 /* SDLPhoneCapability.h in Headers */,
5D61FE111A84238C00846EE7 /* SDLWarningLightStatus.h in Headers */,
5D61FC7A1A84238C00846EE7 /* SDLDeleteInteractionChoiceSet.h in Headers */,
5D61FC3B1A84238C00846EE7 /* SDLAlertManeuverResponse.h in Headers */,
@@ -4000,6 +4055,7 @@
5D61FC4F1A84238C00846EE7 /* SDLBodyInformation.h in Headers */,
5D61FDAB1A84238C00846EE7 /* SDLStartTime.h in Headers */,
5D61FD071A84238C00846EE7 /* SDLOnCommand.h in Headers */,
+ 5D00AC671F140F0A004000D9 /* SDLSystemCapabilityType.h in Headers */,
DA9F7E9B1DCC052C00ACAE48 /* SDLLocationDetails.h in Headers */,
5D61FD1D1A84238C00846EE7 /* SDLOnTBTClientState.h in Headers */,
5D61FD9D1A84238C00846EE7 /* SDLSliderResponse.h in Headers */,
@@ -4028,6 +4084,7 @@
5D61FD971A84238C00846EE7 /* SDLSingleTireStatus.h in Headers */,
5D61FCE21A84238C00846EE7 /* SDLKeyboardLayout.h in Headers */,
5D76E3241D39767000647CFA /* SDLLockScreenPresenter.h in Headers */,
+ 5D00AC6F1F1511B9004000D9 /* SDLGetSystemCapability.h in Headers */,
5D61FD891A84238C00846EE7 /* SDLSetGlobalPropertiesResponse.h in Headers */,
5D61FD8D1A84238C00846EE7 /* SDLSetMediaClockTimerResponse.h in Headers */,
5D61FD3B1A84238C00846EE7 /* SDLPresetBankCapabilities.h in Headers */,
@@ -4044,6 +4101,7 @@
5D61FC291A84238C00846EE7 /* SDLAbstractProtocol.h in Headers */,
5D61FDE11A84238C00846EE7 /* SDLTurn.h in Headers */,
5D61FC801A84238C00846EE7 /* SDLDeleteSubMenuResponse.h in Headers */,
+ 5D00AC731F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h in Headers */,
5D61FDBD1A84238C00846EE7 /* SDLSystemContext.h in Headers */,
5D61FC511A84238C00846EE7 /* SDLButtonCapabilities.h in Headers */,
5D61FDE91A84238C00846EE7 /* SDLUnsubscribeButtonResponse.h in Headers */,
@@ -4094,6 +4152,7 @@
5D3E487F1D6F88A30000BFEF /* SDLRPCNotificationNotification.h in Headers */,
5D4D67B01D2FE2F900468B4A /* SDLResponseDispatcher.h in Headers */,
5D61FCF21A84238C00846EE7 /* SDLLockScreenStatus.h in Headers */,
+ 5D00AC771F15283E004000D9 /* SDLNavigationCapability.h in Headers */,
5D61FCD31A84238C00846EE7 /* SDLImageResolution.h in Headers */,
5D61FD541A84238C00846EE7 /* SDLProxyListener.h in Headers */,
5D61FD731A84238C00846EE7 /* SDLRPCRequestFactory.h in Headers */,
@@ -4219,6 +4278,7 @@
DAC5726C1D11B4840004288B /* SDLTouchManagerDelegate.h in Headers */,
5D61FD3F1A84238C00846EE7 /* SDLPrioritizedObjectCollection.h in Headers */,
5D61FCBF1A84238C00846EE7 /* SDLHexUtility.h in Headers */,
+ 5D00AC6B1F141339004000D9 /* SDLSystemCapability.h in Headers */,
5D61FCA21A84238C00846EE7 /* SDLEncoder.h in Headers */,
5D61FCDE1A84238C00846EE7 /* SDLJsonEncoder.h in Headers */,
5D61FCDC1A84238C00846EE7 /* SDLJsonDecoder.h in Headers */,
@@ -4528,6 +4588,7 @@
5D61FC4C1A84238C00846EE7 /* SDLBeltStatus.m in Sources */,
DA9F7E8C1DCC04B000ACAE48 /* SDLSubscribeWaypointsResponse.m in Sources */,
5D61FDA41A84238C00846EE7 /* SDLSoftButtonType.m in Sources */,
+ 5D00AC6C1F141339004000D9 /* SDLSystemCapability.m in Sources */,
5D61FC521A84238C00846EE7 /* SDLButtonCapabilities.m in Sources */,
5D61FC791A84238C00846EE7 /* SDLDeleteFileResponse.m in Sources */,
5D3E48801D6F88A30000BFEF /* SDLRPCNotificationNotification.m in Sources */,
@@ -4551,6 +4612,7 @@
5D61FCBE1A84238C00846EE7 /* SDLHeadLampStatus.m in Sources */,
5D61FD921A84238C00846EE7 /* SDLShowConstantTBT.m in Sources */,
5D61FC4E1A84238C00846EE7 /* SDLBitsPerSample.m in Sources */,
+ 5D00AC701F1511B9004000D9 /* SDLGetSystemCapability.m in Sources */,
5D61FDEA1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m in Sources */,
5D61FCA61A84238C00846EE7 /* SDLEndAudioPassThruResponse.m in Sources */,
5DCC19A11B8221F3004FFAD9 /* SDLURLSession.m in Sources */,
@@ -4570,6 +4632,7 @@
5D61FDBC1A84238C00846EE7 /* SDLSystemAction.m in Sources */,
5D61FC381A84238C00846EE7 /* SDLAlert.m in Sources */,
5D61FD2C1A84238C00846EE7 /* SDLPerformInteractionResponse.m in Sources */,
+ 5D00AC7C1F15287E004000D9 /* SDLPhoneCapability.m in Sources */,
5D61FDF21A84238C00846EE7 /* SDLUpdateTurnList.m in Sources */,
5D61FD101A84238C00846EE7 /* SDLOnHMIStatus.m in Sources */,
5D61FC301A84238C00846EE7 /* SDLAddCommandResponse.m in Sources */,
@@ -4579,12 +4642,14 @@
5D8204231BCEA89A00D0A41B /* SDLFileManager.m in Sources */,
5D61FC7D1A84238C00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m in Sources */,
DAC572661D10C5640004288B /* CGPoint_Util.m in Sources */,
+ 5D00AC681F140F0A004000D9 /* SDLSystemCapabilityType.m in Sources */,
E9C32B9D1AB20C5900F283AF /* EAAccessory+SDLProtocols.m in Sources */,
5D61FCC61A84238C00846EE7 /* SDLHMIZoneCapabilities.m in Sources */,
5D61FD161A84238C00846EE7 /* SDLOnLockScreenStatus.m in Sources */,
5D61FDAE1A84238C00846EE7 /* SDLSubscribeButton.m in Sources */,
DA9F7E6C1DCBFB0700ACAE48 /* SDLDeliveryMode.m in Sources */,
5D61FC581A84238C00846EE7 /* SDLButtonPressMode.m in Sources */,
+ 5D00AC781F15283E004000D9 /* SDLNavigationCapability.m in Sources */,
5D61FDB01A84238C00846EE7 /* SDLSubscribeButtonResponse.m in Sources */,
5DCF76F61ACDBAD300BB647B /* SDLSendLocation.m in Sources */,
5D76E3251D39767000647CFA /* SDLLockScreenPresenter.m in Sources */,
@@ -4621,6 +4686,7 @@
5D61FC661A84238C00846EE7 /* SDLCompassDirection.m in Sources */,
5D61FD841A84238C00846EE7 /* SDLSetDisplayLayout.m in Sources */,
DA9F7E701DCBFFDB00ACAE48 /* SDLGetWaypoints.m in Sources */,
+ 5D00AC741F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m in Sources */,
5D61FE001A84238C00846EE7 /* SDLVehicleDataEventStatus.m in Sources */,
5D61FDC41A84238C00846EE7 /* SDLTBTState.m in Sources */,
5D61FDA61A84238C00846EE7 /* SDLSpeak.m in Sources */,
@@ -4759,6 +4825,7 @@
162E82EA1A9BDE8B00906325 /* SDLLanguageSpec.m in Sources */,
5D76E3291D3D0A8800647CFA /* SDLFakeViewControllerPresenter.m in Sources */,
162E83331A9BDE8B00906325 /* SDLPerformInteractionSpec.m in Sources */,
+ 5D0A9F951F15585B00CC80DD /* SDLPhoneCapabilitySpec.m in Sources */,
1680B11A1A9CD7AD00DBD79E /* SDLAbstractProtocolSpec.m in Sources */,
1680B1151A9CD7AD00DBD79E /* SDLV2ProtocolHeaderSpec.m in Sources */,
162E83101A9BDE8B00906325 /* SDLOnAudioPassThruSpec.m in Sources */,
@@ -4804,6 +4871,7 @@
162E832B1A9BDE8B00906325 /* SDLDeleteSubMenuSpec.m in Sources */,
162E83411A9BDE8B00906325 /* SDLSubscribeButtonSpec.m in Sources */,
5D59DD471B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m in Sources */,
+ 5D0A9F9A1F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m in Sources */,
162E82F31A9BDE8B00906325 /* SDLPrerecordedSpeechSpec.m in Sources */,
162E83691A9BDE8B00906325 /* SDLSubscribeButtonResponseSpec.m in Sources */,
5DAE06751BDEC6D600F9B498 /* SDLArtworkSpec.m in Sources */,
@@ -4876,6 +4944,7 @@
162E82DF1A9BDE8B00906325 /* SDLGlobalProperySpec.m in Sources */,
162E82F61A9BDE8B00906325 /* SDLRequestTypeSpec.m in Sources */,
162E82FB1A9BDE8B00906325 /* SDLSpeechCapabilitiesSpec.m in Sources */,
+ 5D0A9F9C1F1565EB00CC80DD /* SDLGetSystemCapabilitiesResponseSpec.m in Sources */,
162E830D1A9BDE8B00906325 /* SDLWiperStatusSpec.m in Sources */,
162E832C1A9BDE8B00906325 /* SDLDiagnosticMessageSpec.m in Sources */,
5DF2BB9D1B94E38A00CE5994 /* SDLURLSessionSpec.m in Sources */,
@@ -4942,6 +5011,7 @@
162E83611A9BDE8B00906325 /* SDLSetAppIconResponseSpec.m in Sources */,
162E83471A9BDE8B00906325 /* SDLUnsubscribeVehicleDataSpec.m in Sources */,
162E839A1A9BDE8B00906325 /* SDLRPCMessageSpec.m in Sources */,
+ 5D0A9F911F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m in Sources */,
162E83311A9BDE8B00906325 /* SDLListFilesSpec.m in Sources */,
DA9F7EB01DCC063400ACAE48 /* SDLLocationDetailsSpec.m in Sources */,
5DC978261B7A38640012C2F1 /* SDLGlobalsSpec.m in Sources */,
@@ -4964,6 +5034,7 @@
162E83781A9BDE8B00906325 /* SDLDeviceInfoSpec.m in Sources */,
162E83391A9BDE8B00906325 /* SDLSetAppIconSpec.m in Sources */,
162E83011A9BDE8B00906325 /* SDLTimerModeSpec.m in Sources */,
+ 5D0A9F931F15560B00CC80DD /* SDLNavigationCapabilitySpec.m in Sources */,
162E83891A9BDE8B00906325 /* SDLScreenParamsSpec.m in Sources */,
162E83441A9BDE8B00906325 /* SDLSystemRequestSpec.m in Sources */,
162E83001A9BDE8B00906325 /* SDLTextFieldNameSpec.m in Sources */,
@@ -5003,6 +5074,7 @@
DA9F7EA81DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m in Sources */,
162E830A1A9BDE8B00906325 /* SDLVehicleDataTypeSpec.m in Sources */,
5DB1BCD31D243A8E002FFC37 /* SDLDeleteFileOperationSpec.m in Sources */,
+ 5D0A9F971F1559EC00CC80DD /* SDLSystemCapabilitySpec.m in Sources */,
162E82F41A9BDE8B00906325 /* SDLPrimaryAudioSource.m in Sources */,
5DBAE0AB1D3588AC00CE00BF /* SDLNotificationDispatcherSpec.m in Sources */,
162E83461A9BDE8B00906325 /* SDLUnsubscribeButtonSpec.m in Sources */,
diff --git a/SmartDeviceLink/SDLFunctionID.m b/SmartDeviceLink/SDLFunctionID.m
index 087e822b5..63fe54310 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_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_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_GetSystemCapability, @"48", 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/SDLGetSystemCapability.h b/SmartDeviceLink/SDLGetSystemCapability.h
new file mode 100644
index 000000000..43f98c468
--- /dev/null
+++ b/SmartDeviceLink/SDLGetSystemCapability.h
@@ -0,0 +1,29 @@
+//
+// SDLGetSystemCapability.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLRPCRequest.h"
+
+@class SDLSystemCapabilityType;
+
+@interface SDLGetSystemCapability : SDLRPCRequest
+
+- (instancetype)init;
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict;
+
+- (instancetype)initWithType:(SDLSystemCapabilityType *)type;
+
+/**
+ They type of capability you'd like to receive in the response.
+
+ Mandatory
+ */
+@property (strong, nonatomic) SDLSystemCapabilityType *systemCapabilityType;
+
+@end
diff --git a/SmartDeviceLink/SDLGetSystemCapability.m b/SmartDeviceLink/SDLGetSystemCapability.m
new file mode 100644
index 000000000..f253c315a
--- /dev/null
+++ b/SmartDeviceLink/SDLGetSystemCapability.m
@@ -0,0 +1,56 @@
+//
+// SDLGetSystemCapability.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLGetSystemCapability.h"
+
+#import "SDLNames.h"
+#import "SDLSystemCapabilityType.h"
+
+@implementation SDLGetSystemCapability
+
+- (instancetype)init {
+ if (self = [super initWithName:NAMES_GetSystemCapability]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict {
+ if (self = [super initWithDictionary:dict]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithType:(SDLSystemCapabilityType *)type {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = type;
+
+ return self;
+}
+
+- (void)setSystemCapabilityType:(SDLSystemCapabilityType *)type {
+ if (type != nil) {
+ [parameters setObject:type forKey:NAMES_systemCapabilityType];
+ } else {
+ [parameters removeObjectForKey:NAMES_systemCapabilityType];
+ }
+}
+
+- (SDLSystemCapabilityType *)systemCapabilityType {
+ id obj = parameters[NAMES_systemCapabilityType];
+ if (obj == nil || [obj isKindOfClass:SDLSystemCapabilityType.class]) {
+ return (SDLSystemCapabilityType *)obj;
+ } else {
+ return [SDLSystemCapabilityType valueOf:(NSString *)obj];
+ }
+}
+
+@end
diff --git a/SmartDeviceLink/SDLGetSystemCapabilityResponse.h b/SmartDeviceLink/SDLGetSystemCapabilityResponse.h
new file mode 100644
index 000000000..e22917480
--- /dev/null
+++ b/SmartDeviceLink/SDLGetSystemCapabilityResponse.h
@@ -0,0 +1,22 @@
+//
+// SDLGetSystemCapabilityResponse.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLRPCResponse.h"
+
+@class SDLSystemCapability;
+
+@interface SDLGetSystemCapabilityResponse : SDLRPCResponse
+
+- (instancetype)init;
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict;
+
+@property (strong, nonatomic) SDLSystemCapability *systemCapability;
+
+@end
diff --git a/SmartDeviceLink/SDLGetSystemCapabilityResponse.m b/SmartDeviceLink/SDLGetSystemCapabilityResponse.m
new file mode 100644
index 000000000..5470c4379
--- /dev/null
+++ b/SmartDeviceLink/SDLGetSystemCapabilityResponse.m
@@ -0,0 +1,46 @@
+//
+// SDLGetSystemCapabilityResponse.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLGetSystemCapabilityResponse.h"
+
+#import "SDLNames.h"
+#import "SDLSystemCapability.h"
+
+
+@implementation SDLGetSystemCapabilityResponse
+
+- (instancetype)init {
+ if (self = [super initWithName:NAMES_GetSystemCapability]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict {
+ if (self = [super initWithDictionary:dict]) {
+ }
+ return self;
+}
+
+- (void)setSystemCapability:(SDLSystemCapability *)systemCapability {
+ if (systemCapability != nil) {
+ parameters[NAMES_systemCapability] = systemCapability;
+ } else {
+ [parameters removeObjectForKey:NAMES_systemCapability];
+ }
+}
+
+- (SDLSystemCapability *)systemCapability {
+ NSObject *obj = [parameters objectForKey:NAMES_systemCapability];
+ if (obj == nil || [obj isKindOfClass:SDLSystemCapability.class]) {
+ return (SDLSystemCapability *)obj;
+ } else {
+ return [[SDLSystemCapability alloc] initWithDictionary:(NSMutableDictionary *)obj];
+ }
+}
+
+@end
diff --git a/SmartDeviceLink/SDLHeadLampStatus.h b/SmartDeviceLink/SDLHeadLampStatus.h
index cc1586122..4cdfd992c 100644
--- a/SmartDeviceLink/SDLHeadLampStatus.h
+++ b/SmartDeviceLink/SDLHeadLampStatus.h
@@ -30,4 +30,4 @@
*/
@property (strong) NSNumber *highBeamsOn;
@property (strong) SDLAmbientLightStatus *ambientLightSensorStatus;
-@end \ No newline at end of file
+@end
diff --git a/SmartDeviceLink/SDLNames.h b/SmartDeviceLink/SDLNames.h
index aab999283..61bc53a06 100644
--- a/SmartDeviceLink/SDLNames.h
+++ b/SmartDeviceLink/SDLNames.h
@@ -75,6 +75,7 @@
#define NAMES_deviceInfo @"deviceInfo"
#define NAMES_deviceStatus @"deviceStatus"
#define NAMES_DiagnosticMessage @"DiagnosticMessage"
+#define NAMES_dialNumberEnabled @"dialNumberEnabled"
#define NAMES_didLocation @"didLocation"
#define NAMES_didResult @"didResult"
#define NAMES_dimension @"dimension"
@@ -122,8 +123,10 @@
#define NAMES_fuelMaintenanceMode @"fuelMaintenanceMode"
#define NAMES_GenericResponse @"GenericResponse"
#define NAMES_GetDTCs @"GetDTCs"
+#define NAMES_GetSystemCapability @"GetSystemCapability"
#define NAMES_GetVehicleData @"GetVehicleData"
#define NAMES_GetWaypoints @"GetWayPoints"
+#define NAMES_getWayPointsEnabled @"getWayPointsEnabled"
#define NAMES_gps @"gps"
#define NAMES_graphic @"graphic"
#define NAMES_graphicSupported @"graphicSupported"
@@ -226,6 +229,7 @@
#define NAMES_myKey @"myKey"
#define NAMES_name @"name"
#define NAMES_navigation @"navigation"
+#define NAMES_navigationCapability @"navigationCapability"
#define NAMES_navigationText @"navigationText"
#define NAMES_navigationText1 @"navigationText1"
#define NAMES_navigationText2 @"navigationText2"
@@ -277,6 +281,7 @@
#define NAMES_permissionItem @"permissionItem"
#define NAMES_persistentFile @"persistentFile"
#define NAMES_phoneCall @"phoneCall"
+#define NAMES_phoneCapability @"phoneCapability"
#define NAMES_phoneNumber @"phoneNumber"
#define NAMES_phoneRoaming @"phoneRoaming"
#define NAMES_playTone @"playTone"
@@ -332,6 +337,7 @@
#define NAMES_second @"second"
#define NAMES_seconds @"seconds"
#define NAMES_SendLocation @"SendLocation"
+#define NAMES_sendLocationEnabled @"sendLocationEnabled"
#define NAMES_SetAppIcon @"SetAppIcon"
#define NAMES_SetDisplayLayout @"SetDisplayLayout"
#define NAMES_SetGlobalProperties @"SetGlobalProperties"
@@ -372,6 +378,8 @@
#define NAMES_syncMsgVersion @"syncMsgVersion"
#define NAMES_SyncPData @"SyncPData"
#define NAMES_systemAction @"systemAction"
+#define NAMES_systemCapability @"systemCapability"
+#define NAMES_systemCapabilityType @"systemCapabilityType"
#define NAMES_systemContext @"systemContext"
#define NAMES_systemFile @"systemFile"
#define NAMES_SystemRequest @"SystemRequest"
diff --git a/SmartDeviceLink/SDLNavigationCapability.h b/SmartDeviceLink/SDLNavigationCapability.h
new file mode 100644
index 000000000..46cc76193
--- /dev/null
+++ b/SmartDeviceLink/SDLNavigationCapability.h
@@ -0,0 +1,38 @@
+//
+// SDLNavigationCapability.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCStruct.h"
+
+@interface SDLNavigationCapability : SDLRPCStruct
+
+/**
+ * @abstract Constructs a newly allocated SDLNavigationCapability struct
+ */
+- (instancetype)init;
+
+/**
+ * @abstract Constructs a newly allocated SDLNavigationCapability struct indicated by the dictionary parameter
+ * @param dict The dictionary to use
+ */
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict;
+
+- (instancetype)initWithSendLocation:(BOOL)sendLocationEnabled waypoints:(BOOL)waypointsEnabled;
+
+/**
+ Whether or not the SendLocation RPC is enabled.
+ Boolean, optional
+ */
+@property (copy, nonatomic) NSNumber *sendLocationEnabled;
+
+/**
+ Whether or not Waypoint related RPCs are enabled.
+ Boolean, optional
+ */
+@property (copy, nonatomic) NSNumber *getWayPointsEnabled;
+
+@end
diff --git a/SmartDeviceLink/SDLNavigationCapability.m b/SmartDeviceLink/SDLNavigationCapability.m
new file mode 100644
index 000000000..da7e372fa
--- /dev/null
+++ b/SmartDeviceLink/SDLNavigationCapability.m
@@ -0,0 +1,66 @@
+//
+// SDLNavigationCapability.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLNavigationCapability.h"
+
+#import "SDLNames.h"
+
+@implementation SDLNavigationCapability
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ return self;
+}
+
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict {
+ if (self = [super initWithDictionary:dict]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithSendLocation:(BOOL)sendLocationEnabled waypoints:(BOOL)waypointsEnabled {
+ self = [self init];
+ if (!self) {
+ return self;
+ }
+
+ self.sendLocationEnabled = @(sendLocationEnabled);
+ self.getWayPointsEnabled = @(waypointsEnabled);
+
+ return self;
+}
+
+- (void)setSendLocationEnabled:(NSNumber *)sendLocationEnabled {
+ if (sendLocationEnabled != nil) {
+ store[NAMES_sendLocationEnabled] = sendLocationEnabled;
+ } else {
+ [store removeObjectForKey:NAMES_sendLocationEnabled];
+ }
+}
+
+- (NSNumber *)sendLocationEnabled {
+ return store[NAMES_sendLocationEnabled];
+}
+
+- (void)setGetWayPointsEnabled:(NSNumber *)getWayPointsEnabled {
+ if (getWayPointsEnabled != nil) {
+ store[NAMES_getWayPointsEnabled] = getWayPointsEnabled;
+ } else {
+ [store removeObjectForKey:NAMES_getWayPointsEnabled];
+ }
+}
+
+- (NSNumber *)getWayPointsEnabled {
+ return store[NAMES_getWayPointsEnabled];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLNotificationConstants.h b/SmartDeviceLink/SDLNotificationConstants.h
index 63fad1b25..05b9b047d 100644
--- a/SmartDeviceLink/SDLNotificationConstants.h
+++ b/SmartDeviceLink/SDLNotificationConstants.h
@@ -78,6 +78,7 @@ extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse;
extern SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse;
extern SDLNotificationName const SDLDidReceiveGenericResponse;
extern SDLNotificationName const SDLDidReceiveGetDTCsResponse;
+extern SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse;
extern SDLNotificationName const SDLDidReceiveGetVehicleDataResponse;
extern SDLNotificationName const SDLDidReceiveGetWaypointsResponse;
extern SDLNotificationName const SDLDidReceiveListFilesResponse;
diff --git a/SmartDeviceLink/SDLNotificationConstants.m b/SmartDeviceLink/SDLNotificationConstants.m
index 8e02d6647..43fd0a473 100644
--- a/SmartDeviceLink/SDLNotificationConstants.m
+++ b/SmartDeviceLink/SDLNotificationConstants.m
@@ -36,6 +36,7 @@ SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse = @"com.sdl.resp
SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse = @"com.sdl.response.endAudioPassThru";
SDLNotificationName const SDLDidReceiveGenericResponse = @"com.sdl.response.generic";
SDLNotificationName const SDLDidReceiveGetDTCsResponse = @"com.sdl.response.getDTCs";
+SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse = @"com.sdl.response.getSystemCapabilities";
SDLNotificationName const SDLDidReceiveGetVehicleDataResponse = @"com.sdl.response.getVehicleData";
SDLNotificationName const SDLDidReceiveGetWaypointsResponse = @"com.sdl.response.getWaypoints";
SDLNotificationName const SDLDidReceiveListFilesResponse = @"com.sdl.response.listFiles";
diff --git a/SmartDeviceLink/SDLNotificationDispatcher.m b/SmartDeviceLink/SDLNotificationDispatcher.m
index cae44a5fd..00ae1f962 100644
--- a/SmartDeviceLink/SDLNotificationDispatcher.m
+++ b/SmartDeviceLink/SDLNotificationDispatcher.m
@@ -142,6 +142,10 @@ NS_ASSUME_NONNULL_BEGIN
[self postRPCResponseNotification:SDLDidReceiveGetDTCsResponse response:response];
}
+- (void)onGetSystemCapabilityResponse:(SDLGetSystemCapabilityResponse *)response {
+ [self postRPCResponseNotification:SDLDidReceiveGetSystemCapabilitiesResponse response:response];
+}
+
- (void)onGetVehicleDataResponse:(SDLGetVehicleDataResponse *)response {
[self postRPCResponseNotification:SDLDidReceiveGetVehicleDataResponse response:response];
}
diff --git a/SmartDeviceLink/SDLPhoneCapability.h b/SmartDeviceLink/SDLPhoneCapability.h
new file mode 100644
index 000000000..a15a62190
--- /dev/null
+++ b/SmartDeviceLink/SDLPhoneCapability.h
@@ -0,0 +1,32 @@
+//
+// SDLPhoneCapability.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCStruct.h"
+
+@interface SDLPhoneCapability : SDLRPCStruct
+
+/**
+ * @abstract Constructs a newly allocated SDLPhoneCapability struct
+ */
+- (instancetype)init;
+
+/**
+ * @abstract Constructs a newly allocated SDLPhoneCapability struct indicated by the dictionary parameter
+ * @param dict The dictionary to use
+ */
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict;
+
+- (instancetype)initWithDialNumber:(BOOL)dialNumberEnabled;
+
+/**
+ Whether or not the DialNumber RPC is enabled.
+ Boolean, optional
+ */
+@property (strong, nonatomic) NSNumber *dialNumberEnabled;
+
+@end
diff --git a/SmartDeviceLink/SDLPhoneCapability.m b/SmartDeviceLink/SDLPhoneCapability.m
new file mode 100644
index 000000000..0744dc9e2
--- /dev/null
+++ b/SmartDeviceLink/SDLPhoneCapability.m
@@ -0,0 +1,54 @@
+//
+// SDLPhoneCapability.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/11/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLPhoneCapability.h"
+
+#import "SDLNames.h"
+
+
+@implementation SDLPhoneCapability
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ return self;
+}
+
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict {
+ if (self = [super initWithDictionary:dict]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithDialNumber:(BOOL)dialNumberEnabled {
+ self = [self init];
+ if (!self) {
+ return self;
+ }
+
+ self.dialNumberEnabled = @(dialNumberEnabled);
+
+ return self;
+}
+
+- (void)setDialNumberEnabled:(NSNumber *)dialNumberEnabled {
+ if (dialNumberEnabled != nil) {
+ store[NAMES_dialNumberEnabled] = dialNumberEnabled;
+ } else {
+ [store removeObjectForKey:NAMES_dialNumberEnabled];
+ }
+}
+
+- (NSNumber *)dialNumberEnabled {
+ return store[NAMES_dialNumberEnabled];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLProxyListener.h b/SmartDeviceLink/SDLProxyListener.h
index 0de048633..359e2ed1f 100644
--- a/SmartDeviceLink/SDLProxyListener.h
+++ b/SmartDeviceLink/SDLProxyListener.h
@@ -19,6 +19,7 @@
@class SDLEndAudioPassThruResponse;
@class SDLGenericResponse;
@class SDLGetDTCsResponse;
+@class SDLGetSystemCapabilityResponse;
@class SDLGetVehicleDataResponse;
@class SDLGetWaypointsResponse;
@class SDLListFilesResponse;
@@ -95,6 +96,7 @@
- (void)onError:(NSException *)e;
- (void)onGenericResponse:(SDLGenericResponse *)response;
- (void)onGetDTCsResponse:(SDLGetDTCsResponse *)response;
+- (void)onGetSystemCapabilityResponse:(SDLGetSystemCapabilityResponse *)response;
- (void)onGetVehicleDataResponse:(SDLGetVehicleDataResponse *)response;
- (void)onGetWayPointsResponse:(SDLGetWaypointsResponse *)response;
- (void)onListFilesResponse:(SDLListFilesResponse *)response;
diff --git a/SmartDeviceLink/SDLSystemCapability.h b/SmartDeviceLink/SDLSystemCapability.h
new file mode 100644
index 000000000..0c5b8ed2d
--- /dev/null
+++ b/SmartDeviceLink/SDLSystemCapability.h
@@ -0,0 +1,44 @@
+//
+// SDLSystemCapability.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/10/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLRPCStruct.h"
+
+@class SDLPhoneCapability;
+@class SDLNavigationCapability;
+@class SDLSystemCapabilityType;
+
+/**
+ The systemCapabilityType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist.
+ * First implemented in SDL Core v4.4
+ */
+@interface SDLSystemCapability : SDLRPCStruct
+
+/**
+ * @abstract Constructs a newly allocated SDLSystemCapability object
+ */
+- (instancetype)init;
+
+/**
+ * @abstract Constructs a newly allocated SDLSystemCapability object indicated by the dictionary parameter
+ * @param dict The dictionary to use
+ */
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict;
+
+- (instancetype)initWithNavigationCapability:(SDLNavigationCapability *)capability;
+
+- (instancetype)initWithPhoneCapability:(SDLPhoneCapability *)capability;
+
+@property (strong, nonatomic) SDLSystemCapabilityType *systemCapabilityType;
+
+@property (strong, nonatomic) SDLNavigationCapability *navigationCapability;
+
+@property (strong, nonatomic) SDLPhoneCapability *phoneCapability;
+
+@end
diff --git a/SmartDeviceLink/SDLSystemCapability.m b/SmartDeviceLink/SDLSystemCapability.m
new file mode 100644
index 000000000..45c614320
--- /dev/null
+++ b/SmartDeviceLink/SDLSystemCapability.m
@@ -0,0 +1,107 @@
+//
+// SDLSystemCapability.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/10/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSystemCapability.h"
+
+#import "SDLNames.h"
+#import "SDLNavigationCapability.h"
+#import "SDLPhoneCapability.h"
+#import "SDLSystemCapabilityType.h"
+
+@implementation SDLSystemCapability
+
+- (instancetype)init {
+ if (self = [super init]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithDictionary:(NSMutableDictionary *)dict {
+ if (self = [super initWithDictionary:dict]) {
+ }
+ return self;
+}
+
+- (instancetype)initWithPhoneCapability:(SDLPhoneCapability *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = [SDLSystemCapabilityType PHONE_CALL];
+ self.phoneCapability = capability;
+
+ return self;
+}
+
+- (instancetype)initWithNavigationCapability:(SDLNavigationCapability *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = [SDLSystemCapabilityType NAVIGATION];
+ self.navigationCapability = capability;
+
+ return self;
+}
+
+- (void)setSystemCapabilityType:(SDLSystemCapabilityType *)type {
+ if (type != nil) {
+ [store setObject:type forKey:NAMES_systemCapabilityType];
+ } else {
+ [store removeObjectForKey:NAMES_systemCapabilityType];
+ }
+}
+
+- (SDLSystemCapabilityType *)systemCapabilityType {
+ id obj = store[NAMES_systemCapabilityType];
+ if (obj == nil || [obj isKindOfClass:SDLSystemCapabilityType.class]) {
+ return (SDLSystemCapabilityType *)obj;
+ } else {
+ return [SDLSystemCapabilityType valueOf:(NSString *)obj];
+ }
+}
+
+// TODO: Nav / Phone Capability
+
+- (void)setNavigationCapability:(SDLNavigationCapability *)navigationCapability {
+ if (navigationCapability != nil) {
+ store[NAMES_navigationCapability] = navigationCapability;
+ } else {
+ [store removeObjectForKey:NAMES_navigationCapability];
+ }
+}
+
+- (SDLNavigationCapability *)navigationCapability {
+ NSObject *obj = store[NAMES_navigationCapability];
+ if (obj == nil || [obj isKindOfClass:SDLNavigationCapability.class]) {
+ return (SDLNavigationCapability *)obj;
+ } else {
+ return [[SDLNavigationCapability alloc] initWithDictionary:(NSMutableDictionary *)obj];
+ }
+}
+
+- (void)setPhoneCapability:(SDLPhoneCapability *)phoneCapability {
+ if (phoneCapability != nil) {
+ store[NAMES_phoneCapability] = phoneCapability;
+ } else {
+ [store removeObjectForKey:NAMES_phoneCapability];
+ }
+}
+
+- (SDLPhoneCapability *)phoneCapability {
+ NSObject *obj = store[NAMES_phoneCapability];
+ if (obj == nil || [obj isKindOfClass:SDLPhoneCapability.class]) {
+ return (SDLPhoneCapability *)obj;
+ } else {
+ return [[SDLPhoneCapability alloc] initWithDictionary:(NSMutableDictionary *)obj];
+ }
+}
+
+@end
diff --git a/SmartDeviceLink/SDLSystemCapabilityType.h b/SmartDeviceLink/SDLSystemCapabilityType.h
new file mode 100644
index 000000000..d79f44180
--- /dev/null
+++ b/SmartDeviceLink/SDLSystemCapabilityType.h
@@ -0,0 +1,41 @@
+//
+// SDLSystemCapabilityType.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/10/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLEnum.h"
+
+/**
+ The type of system capability to get more information on
+ */
+@interface SDLSystemCapabilityType : SDLEnum
+
+/**
+ * Convert String to SDLSystemCapabilityType
+ * @param value String
+ * @return SDLSystemCapabilityType
+ */
++ (SDLSystemCapabilityType *)valueOf:(NSString *)value;
+
+/**
+ Returns an array of all possible SDLSystemCapabilityType values
+ @return an array that store all possible SDLSystemCapabilityType
+ */
++ (NSArray *)values;
+
+/**
+ @abstract NAVIGATION
+ */
++ (SDLSystemCapabilityType *)NAVIGATION;
+
+/**
+ @abstract PHONE_CALL
+ */
++ (SDLSystemCapabilityType *)PHONE_CALL;
+
+@end
diff --git a/SmartDeviceLink/SDLSystemCapabilityType.m b/SmartDeviceLink/SDLSystemCapabilityType.m
new file mode 100644
index 000000000..888701bea
--- /dev/null
+++ b/SmartDeviceLink/SDLSystemCapabilityType.m
@@ -0,0 +1,51 @@
+//
+// SDLSystemCapabilityType.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/10/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSystemCapabilityType.h"
+
+SDLSystemCapabilityType *SDLSystemCapabilityType_NAVIGATION = nil;
+SDLSystemCapabilityType *SDLSystemCapabilityType_PHONE_CALL = nil;
+
+NSArray *SDLSystemCapabilityType_values = nil;
+
+@implementation SDLSystemCapabilityType
+
++ (SDLSystemCapabilityType *)valueOf:(NSString *)value {
+ for (SDLSystemCapabilityType *item in SDLSystemCapabilityType.values) {
+ if ([item.value isEqualToString:value]) {
+ return item;
+ }
+ }
+ return nil;
+}
+
++ (NSArray *)values {
+ if (SDLSystemCapabilityType_values == nil) {
+ SDLSystemCapabilityType_values = @[
+ SDLSystemCapabilityType.NAVIGATION,
+ SDLSystemCapabilityType.PHONE_CALL
+ ];
+ }
+ return SDLSystemCapabilityType_values;
+}
+
++ (SDLSystemCapabilityType *)NAVIGATION {
+ if (SDLSystemCapabilityType_NAVIGATION == nil) {
+ SDLSystemCapabilityType_NAVIGATION = [[SDLSystemCapabilityType alloc] initWithValue:@"NAVIGATION"];
+ }
+ return SDLSystemCapabilityType_NAVIGATION;
+}
+
++ (SDLSystemCapabilityType *)PHONE_CALL {
+ if (SDLSystemCapabilityType_PHONE_CALL == nil) {
+ SDLSystemCapabilityType_PHONE_CALL = [[SDLSystemCapabilityType alloc] initWithValue:@"PHONE_CALL"];
+ }
+ return SDLSystemCapabilityType_PHONE_CALL;
+}
+
+@end
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m
index f43a8535b..3dff5dc9e 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m
@@ -37,6 +37,7 @@ describe(@"a notification dispatcher", ^{
expect(@([testDispatcher respondsToSelector:@selector(onError:)])).to(beTruthy());
expect(@([testDispatcher respondsToSelector:@selector(onGenericResponse:)])).to(beTruthy());
expect(@([testDispatcher respondsToSelector:@selector(onGetDTCsResponse:)])).to(beTruthy());
+ expect(@([testDispatcher respondsToSelector:@selector(onGetSystemCapabilityResponse:)])).to(beTruthy());
expect(@([testDispatcher respondsToSelector:@selector(onGetVehicleDataResponse:)])).to(beTruthy());
expect(@([testDispatcher respondsToSelector:@selector(onGetWayPointsResponse:)])).to(beTruthy());
expect(@([testDispatcher respondsToSelector:@selector(onReceivedLockScreenIcon:)])).to(beTruthy());
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m
new file mode 100644
index 000000000..f979b28aa
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m
@@ -0,0 +1,49 @@
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLSystemCapabilityType.h"
+
+QuickSpecBegin(SDLSystemCapabilityTypeSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect([SDLSystemCapabilityType NAVIGATION].value).to(equal(@"NAVIGATION"));
+ expect([SDLSystemCapabilityType PHONE_CALL].value).to(equal(@"PHONE_CALL"));
+ });
+});
+describe(@"ValueOf Tests", ^ {
+ it(@"Should return correct values when valid", ^ {
+ expect([SDLSystemCapabilityType valueOf:@"NAVIGATION"]).to(equal([SDLSystemCapabilityType NAVIGATION]));
+ expect([SDLSystemCapabilityType valueOf:@"PHONE_CALL"]).to(equal([SDLSystemCapabilityType PHONE_CALL]));
+ });
+
+ it(@"Should return nil when invalid", ^ {
+ expect([SDLSystemCapabilityType valueOf:nil]).to(beNil());
+ expect([SDLSystemCapabilityType valueOf:@"JKUYTFHYTHJGFRFGYTR"]).to(beNil());
+ });
+});
+describe(@"Value List Tests", ^ {
+ NSArray* storedValues = [SDLSystemCapabilityType values];
+ __block NSArray* definedValues;
+ beforeSuite(^ {
+ definedValues = [@[[SDLSystemCapabilityType NAVIGATION],
+ [SDLSystemCapabilityType PHONE_CALL]] 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/RequestSpecs/SDLGetSystemCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m
new file mode 100644
index 000000000..f5473f81d
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m
@@ -0,0 +1,50 @@
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLGetSystemCapability.h"
+
+#import "SDLSystemCapabilityType.h"
+#import "SDLNames.h"
+
+QuickSpecBegin(SDLGetSystemCapabilitiesSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^ {
+ SDLGetSystemCapability *testRequest = [[SDLGetSystemCapability alloc] init];
+
+ testRequest.systemCapabilityType = [SDLSystemCapabilityType NAVIGATION];
+
+ expect(testRequest.systemCapabilityType).to(equal([SDLSystemCapabilityType NAVIGATION]));
+ });
+});
+
+describe(@"Initialization tests", ^{
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSDictionary *dict = @{NAMES_request: @{
+ NAMES_parameters: @{
+ NAMES_systemCapabilityType: @"PHONE_CALL"
+ }
+ }
+ };
+ SDLGetSystemCapability *testRequest = [[SDLGetSystemCapability alloc] initWithDictionary:[dict mutableCopy]];
+
+ expect(testRequest.systemCapabilityType).to(equal([SDLSystemCapabilityType PHONE_CALL]));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLGetSystemCapability *testRequest = [[SDLGetSystemCapability alloc] init];
+
+ expect(testRequest.systemCapabilityType).to(beNil());
+ });
+
+ it(@"should initialize correctly with initWithType:", ^{
+ SDLGetSystemCapability *testRequest = [[SDLGetSystemCapability alloc] initWithType:[SDLSystemCapabilityType PHONE_CALL]];
+
+ expect(testRequest.systemCapabilityType).to(equal([SDLSystemCapabilityType PHONE_CALL]));
+ });
+});
+
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilitiesResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilitiesResponseSpec.m
new file mode 100644
index 000000000..4524ca2fa
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilitiesResponseSpec.m
@@ -0,0 +1,54 @@
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLGetSystemCapabilityResponse.h"
+
+#import "SDLNames.h"
+#import "SDLNavigationCapability.h"
+#import "SDLSystemCapability.h"
+#import "SDLSystemCapabilityType.h"
+
+QuickSpecBegin(SDLGetSystemCapabilitiesResponseSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^ {
+ SDLGetSystemCapabilityResponse *testRequest = [[SDLGetSystemCapabilityResponse alloc] init];
+
+ testRequest.systemCapability = [[SDLSystemCapability alloc] initWithNavigationCapability:[[SDLNavigationCapability alloc] initWithSendLocation:YES waypoints:NO]];
+
+ expect(testRequest.systemCapability.systemCapabilityType).to(equal([SDLSystemCapabilityType NAVIGATION]));
+ expect(testRequest.systemCapability.navigationCapability.sendLocationEnabled).to(equal(YES));
+ expect(testRequest.systemCapability.navigationCapability.getWayPointsEnabled).to(equal(NO));
+ expect(testRequest.systemCapability.phoneCapability).to(beNil());
+ });
+});
+
+describe(@"Initialization tests", ^{
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSDictionary *dict = @{NAMES_response: @{
+ NAMES_parameters: @{
+ NAMES_systemCapability: @{NAMES_systemCapabilityType: @"NAVIGATION",
+ NAMES_navigationCapability: @{NAMES_getWayPointsEnabled: @(NO),
+ NAMES_sendLocationEnabled: @(YES)}}
+ }
+ }
+ };
+ SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] initWithDictionary:[dict mutableCopy]];
+
+ expect(testResponse.systemCapability.systemCapabilityType).to(equal([SDLSystemCapabilityType NAVIGATION]));
+ expect(testResponse.systemCapability.navigationCapability.sendLocationEnabled).to(equal(YES));
+ expect(testResponse.systemCapability.navigationCapability.getWayPointsEnabled).to(equal(NO));
+ expect(testResponse.systemCapability.phoneCapability).to(beNil());
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] init];
+
+ expect(testResponse.systemCapability).to(beNil());
+ });
+});
+
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m
new file mode 100644
index 000000000..ecbf9d012
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m
@@ -0,0 +1,50 @@
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLNavigationCapability.h"
+#import "SDLNames.h"
+
+QuickSpecBegin(SDLNavigationCapabilitySpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^ {
+ SDLNavigationCapability *testStruct = [[SDLNavigationCapability alloc] init];
+
+ testStruct.getWayPointsEnabled = @(YES);
+ testStruct.sendLocationEnabled = @(YES);
+
+ expect(testStruct.getWayPointsEnabled).to(equal(YES));
+ expect(testStruct.sendLocationEnabled).to(equal(YES));
+
+ });
+});
+
+describe(@"Initialization tests", ^{
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSMutableDictionary* dict = [@{NAMES_getWayPointsEnabled: @(YES),
+ NAMES_sendLocationEnabled: @(YES)} mutableCopy];
+ SDLNavigationCapability* testStruct = [[SDLNavigationCapability alloc] initWithDictionary:dict];
+
+ expect(testStruct.getWayPointsEnabled).to(equal(YES));
+ expect(testStruct.sendLocationEnabled).to(equal(YES));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLNavigationCapability* testStruct = [[SDLNavigationCapability alloc] init];
+
+ expect(testStruct.getWayPointsEnabled).to(beNil());
+ expect(testStruct.sendLocationEnabled).to(beNil());
+ });
+
+ it(@"should initialize correctly with initWithSendLocation:waypoints:", ^{
+ SDLNavigationCapability *testStruct = [[SDLNavigationCapability alloc] initWithSendLocation:YES waypoints:YES];
+
+ expect(testStruct.getWayPointsEnabled).to(equal(YES));
+ expect(testStruct.sendLocationEnabled).to(equal(YES));
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m
new file mode 100644
index 000000000..141c17a76
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m
@@ -0,0 +1,42 @@
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLPhoneCapability.h"
+#import "SDLNames.h"
+
+QuickSpecBegin(SDLPhoneCapabilitySpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^ {
+ SDLPhoneCapability *testStruct = [[SDLPhoneCapability alloc] init];
+
+ testStruct.dialNumberEnabled = @(YES);
+
+ expect(testStruct.dialNumberEnabled).to(equal(YES));
+ });
+});
+
+describe(@"Initialization tests", ^{
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSMutableDictionary* dict = [@{NAMES_dialNumberEnabled: @(YES)} mutableCopy];
+ SDLPhoneCapability* testStruct = [[SDLPhoneCapability alloc] initWithDictionary:dict];
+
+ expect(testStruct.dialNumberEnabled).to(equal(YES));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLPhoneCapability* testStruct = [[SDLPhoneCapability alloc] init];
+
+ expect(testStruct.dialNumberEnabled).to(beNil());
+ });
+
+ it(@"should initialize correctly with initWithDialNumber:", ^{
+ SDLPhoneCapability *testStruct = [[SDLPhoneCapability alloc] initWithDialNumber:YES];
+
+ expect(testStruct.dialNumberEnabled).to(equal(YES));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
new file mode 100644
index 000000000..9a2909128
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
@@ -0,0 +1,72 @@
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLSystemCapability.h"
+
+#import "SDLNavigationCapability.h"
+#import "SDLPhoneCapability.h"
+#import "SDLSystemCapabilityType.h"
+#import "SDLNames.h"
+
+QuickSpecBegin(SDLSystemCapabilitySpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^ {
+ SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] init];
+
+ testStruct.systemCapabilityType = [SDLSystemCapabilityType NAVIGATION];
+ testStruct.navigationCapability = [[SDLNavigationCapability alloc] initWithSendLocation:YES waypoints:NO];
+ testStruct.phoneCapability = [[SDLPhoneCapability alloc] initWithDialNumber:YES];
+
+ expect(testStruct.systemCapabilityType).to(equal([SDLSystemCapabilityType NAVIGATION]));
+ expect(testStruct.navigationCapability.sendLocationEnabled).to(equal(YES));
+ expect(testStruct.navigationCapability.getWayPointsEnabled).to(equal(NO));
+ expect(testStruct.phoneCapability.dialNumberEnabled).to(equal(YES));
+ });
+});
+
+describe(@"Initialization tests", ^{
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSMutableDictionary* dict = [@{NAMES_systemCapabilityType: @"NAVIGATION",
+ NAMES_navigationCapability: @{NAMES_getWayPointsEnabled: @(NO),
+ NAMES_sendLocationEnabled: @(YES)},
+ NAMES_phoneCapability: @{NAMES_dialNumberEnabled: @(YES)}} mutableCopy];
+ SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithDictionary:dict];
+
+ expect(testStruct.systemCapabilityType).to(equal([SDLSystemCapabilityType NAVIGATION]));
+ expect(testStruct.navigationCapability.sendLocationEnabled).to(equal(YES));
+ expect(testStruct.navigationCapability.getWayPointsEnabled).to(equal(NO));
+ expect(testStruct.phoneCapability.dialNumberEnabled).to(equal(YES));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] init];
+
+ expect(testStruct.systemCapabilityType).to(beNil());
+ expect(testStruct.navigationCapability).to(beNil());
+ expect(testStruct.phoneCapability).to(beNil());
+ });
+
+ it(@"should initialize correctly with initWithPhoneCapability:", ^{
+ SDLPhoneCapability *testPhoneStruct = [[SDLPhoneCapability alloc] initWithDialNumber:YES];
+ SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithPhoneCapability:testPhoneStruct];
+
+ expect(testStruct.systemCapabilityType).to(equal([SDLSystemCapabilityType PHONE_CALL]));
+ expect(testStruct.phoneCapability.dialNumberEnabled).to(equal(YES));
+ expect(testStruct.navigationCapability).to(beNil());
+ });
+
+ it(@"should initialize correctly with initWithNavigationCapability:", ^{
+ SDLNavigationCapability *testNavStruct = [[SDLNavigationCapability alloc] initWithSendLocation:YES waypoints:YES];
+ SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithNavigationCapability:testNavStruct];
+
+ expect(testStruct.systemCapabilityType).to(equal([SDLSystemCapabilityType NAVIGATION]));
+ expect(testStruct.navigationCapability.sendLocationEnabled).to(equal(YES));
+ expect(testStruct.navigationCapability.getWayPointsEnabled).to(equal(YES));
+ expect(testStruct.phoneCapability).to(beNil());
+ });
+});
+
+QuickSpecEnd