summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2017-08-18 09:15:56 -0400
committerGitHub <noreply@github.com>2017-08-18 09:15:56 -0400
commitb5312dc575a843d4b9a2a65777e42676c2ce1b0a (patch)
tree825b39babe9383838e0d36615c2e75fb796f747f
parentc8603350e4e93b19e9b48bede428791e9d863544 (diff)
parent18b45a2ac57e1879ab707cb87a587c519600f596 (diff)
downloadsdl_ios-b5312dc575a843d4b9a2a65777e42676c2ce1b0a.tar.gz
Merge pull request #682 from smartdevicelink/feature/SDL_0073_adding_metadata_types_v5.0
Implement SDL 0073 adding metadata types v5.0
-rw-r--r--SmartDeviceLink-iOS.podspec2
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj81
-rw-r--r--SmartDeviceLink.podspec2
-rw-r--r--SmartDeviceLink/SDLMetadataTags.h61
-rw-r--r--SmartDeviceLink/SDLMetadataTags.m78
-rw-r--r--SmartDeviceLink/SDLMetadataType.h80
-rw-r--r--SmartDeviceLink/SDLMetadataType.m23
-rw-r--r--SmartDeviceLink/SDLNames.h5
-rw-r--r--SmartDeviceLink/SDLNames.m1
-rw-r--r--SmartDeviceLink/SDLShow.h24
-rw-r--r--SmartDeviceLink/SDLShow.m77
-rw-r--r--SmartDeviceLink/SmartDeviceLink.h2
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLMetadataTypeSpec.m36
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m26
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m3
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataTagsSpec.m41
17 files changed, 484 insertions, 60 deletions
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec
index 8de7bca7f..c32686310 100644
--- a/SmartDeviceLink-iOS.podspec
+++ b/SmartDeviceLink-iOS.podspec
@@ -149,6 +149,8 @@ ss.public_header_files = [
'SmartDeviceLink/SDLManagerDelegate.h',
'SmartDeviceLink/SDLMediaClockFormat.h',
'SmartDeviceLink/SDLMenuParams.h',
+'SmartDeviceLink/SDLMetadataTags.h',
+'SmartDeviceLink/SDLMetadataType.h',
'SmartDeviceLink/SDLMyKey.h',
'SmartDeviceLink/SDLNavigationCapability.h',
'SmartDeviceLink/SDLNotificationConstants.h',
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index 178b150f9..887a811f8 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -951,6 +951,12 @@
8B7B31AB1F2FB93500BDC38D /* SDLVideoStreamingCodecSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B31AA1F2FB93500BDC38D /* SDLVideoStreamingCodecSpec.m */; };
8B7B31AF1F2FBA0200BDC38D /* SDLVideoStreamingCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B31AE1F2FBA0200BDC38D /* SDLVideoStreamingCapabilitySpec.m */; };
8B7B31B11F2FBD9500BDC38D /* SDLVideoStreamingFormatSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B31B01F2FBD9500BDC38D /* SDLVideoStreamingFormatSpec.m */; };
+ 8B9376D71F3349FC009605C4 /* SDLMetadataTags.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B9376D51F3349FC009605C4 /* SDLMetadataTags.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8B9376D81F3349FC009605C4 /* SDLMetadataTags.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B9376D61F3349FC009605C4 /* SDLMetadataTags.m */; };
+ 8B9376DB1F33656C009605C4 /* SDLMetadataTagsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B9376DA1F33656C009605C4 /* SDLMetadataTagsSpec.m */; };
+ 8BBEA6061F324165003EEA26 /* SDLMetadataType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BBEA6041F324165003EEA26 /* SDLMetadataType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8BBEA6071F324165003EEA26 /* SDLMetadataType.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BBEA6051F324165003EEA26 /* SDLMetadataType.m */; };
+ 8BBEA6091F324832003EEA26 /* SDLMetadataTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BBEA6081F324832003EEA26 /* SDLMetadataTypeSpec.m */; };
97E26DEC1E807AD70074A3C7 /* SDLMutableDataQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */; };
97E26DED1E807AD70074A3C7 /* SDLMutableDataQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */; };
DA0C46AD1DCD35080001F2A8 /* SDLNames.m in Sources */ = {isa = PBXBuildFile; fileRef = DA0C46AC1DCD35080001F2A8 /* SDLNames.m */; };
@@ -2068,6 +2074,12 @@
8B7B31AA1F2FB93500BDC38D /* SDLVideoStreamingCodecSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingCodecSpec.m; sourceTree = "<group>"; };
8B7B31AE1F2FBA0200BDC38D /* SDLVideoStreamingCapabilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingCapabilitySpec.m; sourceTree = "<group>"; };
8B7B31B01F2FBD9500BDC38D /* SDLVideoStreamingFormatSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingFormatSpec.m; sourceTree = "<group>"; };
+ 8B9376D51F3349FC009605C4 /* SDLMetadataTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMetadataTags.h; sourceTree = "<group>"; };
+ 8B9376D61F3349FC009605C4 /* SDLMetadataTags.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMetadataTags.m; sourceTree = "<group>"; };
+ 8B9376DA1F33656C009605C4 /* SDLMetadataTagsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMetadataTagsSpec.m; sourceTree = "<group>"; };
+ 8BBEA6041F324165003EEA26 /* SDLMetadataType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMetadataType.h; sourceTree = "<group>"; };
+ 8BBEA6051F324165003EEA26 /* SDLMetadataType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMetadataType.m; sourceTree = "<group>"; };
+ 8BBEA6081F324832003EEA26 /* SDLMetadataTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMetadataTypeSpec.m; sourceTree = "<group>"; };
97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMutableDataQueue.h; sourceTree = "<group>"; };
97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMutableDataQueue.m; sourceTree = "<group>"; };
DA0C46AC1DCD35080001F2A8 /* SDLNames.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNames.m; sourceTree = "<group>"; };
@@ -2249,6 +2261,7 @@
162E82041A9BDE8A00906325 /* SDLLockScreenStatusSpec.m */,
162E82051A9BDE8A00906325 /* SDLMaintenanceModeStatusSpec.m */,
162E82061A9BDE8A00906325 /* SDLMediaClockFormatSpec.m */,
+ 8BBEA6081F324832003EEA26 /* SDLMetadataTypeSpec.m */,
162E82071A9BDE8A00906325 /* SDLPermissionStatusSpec.m */,
162E82081A9BDE8A00906325 /* SDLPowerModeQualificationStatusSpec.m */,
162E82091A9BDE8A00906325 /* SDLPowerModeStatusSpec.m */,
@@ -2454,6 +2467,7 @@
DA9F7EAD1DCC063400ACAE48 /* SDLLocationCoordinateSpec.m */,
DA9F7EAE1DCC063400ACAE48 /* SDLLocationDetailsSpec.m */,
162E82A21A9BDE8A00906325 /* SDLMenuParamsSpec.m */,
+ 8B9376DA1F33656C009605C4 /* SDLMetadataTagsSpec.m */,
162E82A31A9BDE8A00906325 /* SDLMyKeySpec.m */,
5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */,
DA9F7EB51DCC086A00ACAE48 /* SDLOasisAddressSpec.m */,
@@ -3097,6 +3111,8 @@
DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */,
5D61FB0B1A84238A00846EE7 /* SDLMenuParams.h */,
5D61FB0C1A84238A00846EE7 /* SDLMenuParams.m */,
+ 8B9376D51F3349FC009605C4 /* SDLMetadataTags.h */,
+ 8B9376D61F3349FC009605C4 /* SDLMetadataTags.m */,
5D61FB0D1A84238A00846EE7 /* SDLMyKey.h */,
5D61FB0E1A84238A00846EE7 /* SDLMyKey.m */,
5D00AC751F15283E004000D9 /* SDLNavigationCapability.h */,
@@ -3232,6 +3248,8 @@
5D61FB081A84238A00846EE7 /* SDLMaintenanceModeStatus.m */,
5D61FB091A84238A00846EE7 /* SDLMediaClockFormat.h */,
5D61FB0A1A84238A00846EE7 /* SDLMediaClockFormat.m */,
+ 8BBEA6041F324165003EEA26 /* SDLMetadataType.h */,
+ 8BBEA6051F324165003EEA26 /* SDLMetadataType.m */,
5D61FB421A84238B00846EE7 /* SDLPermissionStatus.h */,
5D61FB431A84238B00846EE7 /* SDLPermissionStatus.m */,
5D61FB461A84238B00846EE7 /* SDLPowerModeQualificationStatus.h */,
@@ -3812,14 +3830,6 @@
name = Notifications;
sourceTree = "<group>";
};
- 5DA3F3611BC448690026F2D0 /* Handler Additions */ = {
- isa = PBXGroup;
- children = (
- 5D6F7A2A1BC45BF70070BF37 /* SDLRequestHandler.h */,
- );
- name = "Handler Additions";
- sourceTree = "<group>";
- };
5DA49C8C1F1E549000E65FC5 /* BSON */ = {
isa = PBXGroup;
children = (
@@ -4054,26 +4064,6 @@
name = File;
sourceTree = "<group>";
};
- 5DD67CAD1E65DD9C009CD394 /* Apple SysLog */ = {
- isa = PBXGroup;
- children = (
- 5DD67CAE1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.h */,
- 5DD67CAF1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m */,
- );
- name = "Apple SysLog";
- sourceTree = "<group>";
- };
- 5DD67CC01E68AE66009CD394 /* Modules */ = {
- isa = PBXGroup;
- children = (
- 5DBF06251E64A91D00A5CF03 /* SDLLogFileModule.h */,
- 5DBF06261E64A91D00A5CF03 /* SDLLogFileModule.m */,
- 5DD67CC11E68AE82009CD394 /* SDLLogFileModuleMap.h */,
- 5DD67CC21E68AE82009CD394 /* SDLLogFileModuleMap.m */,
- );
- name = Modules;
- sourceTree = "<group>";
- };
5DC09ED71F2F7F1A00F4AB1D /* Control Frame Payloads */ = {
isa = PBXGroup;
children = (
@@ -4094,23 +4084,24 @@
name = General;
sourceTree = "<group>";
};
- 5DCC199D1B8221D2004FFAD9 /* HTTP Connection */ = {
+ 5DD67CAD1E65DD9C009CD394 /* Apple SysLog */ = {
isa = PBXGroup;
children = (
- 5DCC199E1B8221F3004FFAD9 /* SDLURLSession.h */,
- 5DCC199F1B8221F3004FFAD9 /* SDLURLSession.m */,
- 5DCC19A21B822804004FFAD9 /* SDLURLRequestTask.h */,
- 5DCC19A31B822804004FFAD9 /* SDLURLRequestTask.m */,
+ 5DD67CAE1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.h */,
+ 5DD67CAF1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m */,
);
- name = "HTTP Connection";
+ name = "Apple SysLog";
sourceTree = "<group>";
};
- 5DE372A71ACC35C100849FAA /* @protocols */ = {
+ 5DD67CC01E68AE66009CD394 /* Modules */ = {
isa = PBXGroup;
children = (
- 5DE372A51ACC35B400849FAA /* SDLDebugToolConsole.h */,
+ 5DBF06251E64A91D00A5CF03 /* SDLLogFileModule.h */,
+ 5DBF06261E64A91D00A5CF03 /* SDLLogFileModule.m */,
+ 5DD67CC11E68AE82009CD394 /* SDLLogFileModuleMap.h */,
+ 5DD67CC21E68AE82009CD394 /* SDLLogFileModuleMap.m */,
);
- name = "@protocols";
+ name = Modules;
sourceTree = "<group>";
};
5DEE55BE1B8509A5004F0D0F /* HTTP Connection */ = {
@@ -4238,6 +4229,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ 8BBEA6061F324165003EEA26 /* SDLMetadataType.h in Headers */,
5DA3F35A1BC448480026F2D0 /* SDLError.h in Headers */,
5DA3F35F1BC448590026F2D0 /* SDLNotificationConstants.h in Headers */,
5DE5ABB71B0E38C90067BB02 /* SDLSystemRequest.h in Headers */,
@@ -4449,7 +4441,6 @@
5D4D67B01D2FE2F900468B4A /* SDLResponseDispatcher.h in Headers */,
5D61FCF21A84238C00846EE7 /* SDLLockScreenStatus.h in Headers */,
5D00AC771F15283E004000D9 /* SDLNavigationCapability.h in Headers */,
- 8BD729AE1F2A5AA10029AC93 /* SDLVideoStreamingFormat.h in Headers */,
5D61FCD31A84238C00846EE7 /* SDLImageResolution.h in Headers */,
8B7B319E1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.h in Headers */,
5D61FD541A84238C00846EE7 /* SDLProxyListener.h in Headers */,
@@ -4517,7 +4508,6 @@
5D61FD911A84238C00846EE7 /* SDLShowConstantTBT.h in Headers */,
5D61FC331A84238C00846EE7 /* SDLAddSubMenuResponse.h in Headers */,
5D61FD5D1A84238C00846EE7 /* SDLRegisterAppInterface.h in Headers */,
- 8BD729A61F2A2CF30029AC93 /* SDLVideoStreamingCodec.h in Headers */,
5D61FC9A1A84238C00846EE7 /* SDLEmergencyEvent.h in Headers */,
5D61FC651A84238C00846EE7 /* SDLCompassDirection.h in Headers */,
5D61FC8E1A84238C00846EE7 /* SDLDimension.h in Headers */,
@@ -4536,7 +4526,6 @@
5D61FCA31A84238C00846EE7 /* SDLEndAudioPassThru.h in Headers */,
5D61FCB11A84238C00846EE7 /* SDLGetDTCs.h in Headers */,
5D61FDFF1A84238C00846EE7 /* SDLVehicleDataEventStatus.h in Headers */,
- 8BD729AA1F2A41F40029AC93 /* SDLVideoStreamingProtocol.h in Headers */,
5D61FC5B1A84238C00846EE7 /* SDLChangeRegistration.h in Headers */,
5D61FD5B1A84238C00846EE7 /* SDLReadDIDResponse.h in Headers */,
5D61FDEF1A84238C00846EE7 /* SDLUpdateMode.h in Headers */,
@@ -4546,6 +4535,7 @@
5D61FDDD1A84238C00846EE7 /* SDLTTSChunk.h in Headers */,
5D61FC371A84238C00846EE7 /* SDLAlert.h in Headers */,
5D61FCC11A84238C00846EE7 /* SDLHMILevel.h in Headers */,
+ 8B9376D71F3349FC009605C4 /* SDLMetadataTags.h in Headers */,
5D61FD471A84238C00846EE7 /* SDLProtocolListener.h in Headers */,
5D61FCA01A84238C00846EE7 /* SDLEncodedSyncPDataResponse.h in Headers */,
5D61FD271A84238C00846EE7 /* SDLPerformAudioPassThruResponse.h in Headers */,
@@ -4594,7 +4584,6 @@
5D61FD6F1A84238C00846EE7 /* SDLRPCPayload.h in Headers */,
5D61FCF01A84238C00846EE7 /* SDLLockScreenStatusManager.h in Headers */,
5D61FD311A84238C00846EE7 /* SDLPolicyDataParser.h in Headers */,
- 8BD729B21F2A61DF0029AC93 /* SDLVideoStreamingCapability.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -4973,6 +4962,7 @@
5D9FDA931F2A7D3400A495C8 /* bson_util.c in Sources */,
5D61FD511A84238C00846EE7 /* SDLProxy.m in Sources */,
5D61FD461A84238C00846EE7 /* SDLProtocolHeader.m in Sources */,
+ 8BBEA6071F324165003EEA26 /* SDLMetadataType.m in Sources */,
5D61FDBC1A84238C00846EE7 /* SDLSystemAction.m in Sources */,
5D61FC381A84238C00846EE7 /* SDLAlert.m in Sources */,
5D61FD2C1A84238C00846EE7 /* SDLPerformInteractionResponse.m in Sources */,
@@ -4991,7 +4981,6 @@
5D61FCC61A84238C00846EE7 /* SDLHMIZoneCapabilities.m in Sources */,
5D61FD161A84238C00846EE7 /* SDLOnLockScreenStatus.m in Sources */,
5D61FDAE1A84238C00846EE7 /* SDLSubscribeButton.m in Sources */,
- 8BD729AF1F2A5AA10029AC93 /* SDLVideoStreamingFormat.m in Sources */,
DA9F7E6C1DCBFB0700ACAE48 /* SDLDeliveryMode.m in Sources */,
5D61FC581A84238C00846EE7 /* SDLButtonPressMode.m in Sources */,
5D00AC781F15283E004000D9 /* SDLNavigationCapability.m in Sources */,
@@ -5010,7 +4999,6 @@
5D61FDD01A84238C00846EE7 /* SDLTireStatus.m in Sources */,
5D61FC321A84238C00846EE7 /* SDLAddSubMenu.m in Sources */,
5D61FDF61A84238C00846EE7 /* SDLV1ProtocolHeader.m in Sources */,
- 8BD729B31F2A61DF0029AC93 /* SDLVideoStreamingCapability.m in Sources */,
5D61FDAA1A84238C00846EE7 /* SDLSpeechCapabilities.m in Sources */,
5D61FDB41A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.m in Sources */,
5D61FD121A84238C00846EE7 /* SDLOnKeyboardInput.m in Sources */,
@@ -5025,7 +5013,6 @@
5D61FC7F1A84238C00846EE7 /* SDLDeleteSubMenu.m in Sources */,
5D61FCE91A84238C00846EE7 /* SDLLanguage.m in Sources */,
5D61FC3E1A84238C00846EE7 /* SDLAlertResponse.m in Sources */,
- 8BD729A71F2A2CF30029AC93 /* SDLVideoStreamingCodec.m in Sources */,
5D61FD8C1A84238C00846EE7 /* SDLSetMediaClockTimer.m in Sources */,
5D61FE121A84238C00846EE7 /* SDLWarningLightStatus.m in Sources */,
5D61FCB81A84238C00846EE7 /* SDLGetVehicleDataResponse.m in Sources */,
@@ -5072,6 +5059,7 @@
5D61FCEB1A84238C00846EE7 /* SDLLayoutMode.m in Sources */,
5D61FC2E1A84238C00846EE7 /* SDLAddCommand.m in Sources */,
5D1665C51CF8CA2700CC4CA1 /* SDLListFilesOperation.m in Sources */,
+ 8B9376D81F3349FC009605C4 /* SDLMetadataTags.m in Sources */,
5D61FE021A84238C00846EE7 /* SDLVehicleDataNotificationStatus.m in Sources */,
5D61FDD81A84238C00846EE7 /* SDLTouchType.m in Sources */,
DA4F47961E771AA100FC809E /* SDLEnum.m in Sources */,
@@ -5196,6 +5184,7 @@
DA9F7EB41DCC086400ACAE48 /* SDLDateTimeSpec.m in Sources */,
162E82E41A9BDE8B00906325 /* SDLImageFieldNameSpec.m in Sources */,
162E82ED1A9BDE8B00906325 /* SDLMaintenanceModeStatusSpec.m in Sources */,
+ 8B9376DB1F33656C009605C4 /* SDLMetadataTagsSpec.m in Sources */,
5DB92D2D1AC4A34F00C15BB0 /* SDLPrioritizedObjectCollectionSpec.m in Sources */,
5D43466D1E6F522000B639C6 /* SDLLogModelSpec.m in Sources */,
5DA23FF31F2FA35C009C0313 /* SDLControlFramePayloadAudioStartServiceAckSpec.m in Sources */,
@@ -5272,6 +5261,7 @@
DA4353DF1D271FD10099B8C4 /* CGPointUtilSpec.m in Sources */,
162E83291A9BDE8B00906325 /* SDLDeleteFileSpec.m in Sources */,
1680B11D1A9CD7AD00DBD79E /* SDLProtocolMessageDisassemblerSpec.m in Sources */,
+ 8BBEA6091F324832003EEA26 /* SDLMetadataTypeSpec.m in Sources */,
DA9F7E9E1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m in Sources */,
162E838E1A9BDE8B00906325 /* SDLSyncMsgVersionSpec.m in Sources */,
5D76E31C1D3805FF00647CFA /* SDLLockScreenManagerSpec.m in Sources */,
@@ -5357,7 +5347,6 @@
162E83031A9BDE8B00906325 /* SDLTriggerSource.m in Sources */,
162E82D61A9BDE8A00906325 /* SDLComponentVolumeStatusSpec.m in Sources */,
162E835C1A9BDE8B00906325 /* SDLPutFileResponseSpec.m in Sources */,
- 8BD729B51F2A711D0029AC93 /* SDLVideoStreamingCodecSpec.m in Sources */,
DA9F7EAA1DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m in Sources */,
162E835F1A9BDE8B00906325 /* SDLResetGlobalPropertiesResponseSpec.m in Sources */,
162E835E1A9BDE8B00906325 /* SDLRegisterAppInterfaceResponseSpec.m in Sources */,
@@ -5385,7 +5374,6 @@
162E83311A9BDE8B00906325 /* SDLListFilesSpec.m in Sources */,
DA9F7EB01DCC063400ACAE48 /* SDLLocationDetailsSpec.m in Sources */,
5DC978261B7A38640012C2F1 /* SDLGlobalsSpec.m in Sources */,
- 8BF9DE071F2BAEEE004FFCBB /* SDLVideoStreamingFormatSpec.m in Sources */,
162E82FF1A9BDE8B00906325 /* SDLTextAlignmentSpec.m in Sources */,
162E831F1A9BDE8B00906325 /* SDLOnTouchEventSpec.m in Sources */,
162E83921A9BDE8B00906325 /* SDLTouchEventCapabilitiesSpec.m in Sources */,
@@ -5401,7 +5389,6 @@
162E831D1A9BDE8B00906325 /* SDLOnSystemRequestSpec.m in Sources */,
162E835D1A9BDE8B00906325 /* SDLReadDIDResponseSpec.m in Sources */,
162E82D41A9BDE8A00906325 /* SDLCharacterSetSpec.m in Sources */,
- 8BF9DE091F2BAF0C004FFCBB /* SDLVideoStreamingCapabilitySpec.m in Sources */,
162E830F1A9BDE8B00906325 /* SDLOnAppInterfaceUnregisteredSpec.m in Sources */,
162E83971A9BDE8B00906325 /* SDLVehicleTypeSpec.m in Sources */,
1680B1131A9CD7AD00DBD79E /* SDLProtocolHeaderSpec.m in Sources */,
diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec
index d4e962544..a22e13605 100644
--- a/SmartDeviceLink.podspec
+++ b/SmartDeviceLink.podspec
@@ -149,6 +149,8 @@ ss.public_header_files = [
'SmartDeviceLink/SDLManagerDelegate.h',
'SmartDeviceLink/SDLMediaClockFormat.h',
'SmartDeviceLink/SDLMenuParams.h',
+'SmartDeviceLink/SDLMetadataTags.h',
+'SmartDeviceLink/SDLMetadataType.h',
'SmartDeviceLink/SDLMyKey.h',
'SmartDeviceLink/SDLNavigationCapability.h',
'SmartDeviceLink/SDLNotificationConstants.h',
diff --git a/SmartDeviceLink/SDLMetadataTags.h b/SmartDeviceLink/SDLMetadataTags.h
new file mode 100644
index 000000000..a1820c56e
--- /dev/null
+++ b/SmartDeviceLink/SDLMetadataTags.h
@@ -0,0 +1,61 @@
+//
+// SDLMetadataTags.h
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 8/3/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLMetadataType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLMetadataTags : SDLRPCStruct
+
+/**
+ * @abstract Constructs a newly allocated SDLMetadataType object with NSArrays
+ */
+- (instancetype)initWithTextFieldTypes:(nullable NSArray<SDLMetadataType> *)mainField1 mainField2:(nullable NSArray<SDLMetadataType> *)mainField2;
+
+- (instancetype)initWithTextFieldTypes:(nullable NSArray<SDLMetadataType> *)mainField1 mainField2:(nullable NSArray<SDLMetadataType> *)mainField2 mainField3:(nullable NSArray<SDLMetadataType> *)mainField3 mainField4:(nullable NSArray<SDLMetadataType> *)mainField4;
+
+/**
+ * @abstract The type of data contained in the "mainField1" text field, Optional.
+ *
+ * minsize= 0
+ *
+ * maxsize= 5
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField1;
+
+/**
+ * @abstract The type of data contained in the "mainField2" text field, Optional.
+ *
+ * minsize= 0
+ *
+ * maxsize= 5
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField2;
+
+/**
+ * @abstract The type of data contained in the "mainField3" text field, Optional.
+ *
+ * minsize= 0
+ *
+ * maxsize= 5
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField3;
+
+/**
+ * @abstract The type of data contained in the "mainField4" text field, Optional.
+ *
+ * minsize= 0
+ *
+ * maxsize= 5
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField4;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMetadataTags.m b/SmartDeviceLink/SDLMetadataTags.m
new file mode 100644
index 000000000..656f8871c
--- /dev/null
+++ b/SmartDeviceLink/SDLMetadataTags.m
@@ -0,0 +1,78 @@
+//
+// SDLMetadataStruct.m
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 8/3/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLMetadataTags.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLMetadataTags
+
+- (instancetype)initWithTextFieldTypes:(nullable NSArray<SDLMetadataType> *)mainField1 mainField2:(nullable NSArray<SDLMetadataType> *)mainField2 {
+ self = [self init];
+ if (!self) {
+ return self;
+ }
+
+ self.mainField1 = mainField1;
+ self.mainField2 = mainField2;
+
+ return self;
+}
+
+- (instancetype)initWithTextFieldTypes:(nullable NSArray<SDLMetadataType> *)mainField1 mainField2:(nullable NSArray<SDLMetadataType> *)mainField2 mainField3:(nullable NSArray<SDLMetadataType> *)mainField3 mainField4:(nullable NSArray<SDLMetadataType> *)mainField4 {
+ self = [self init];
+ if (!self) {
+ return self;
+ }
+
+ self.mainField1 = mainField1;
+ self.mainField2 = mainField2;
+ self.mainField3 = mainField3;
+ self.mainField4 = mainField4;
+
+ return self;
+}
+
+- (void)setMainField1:(nullable NSArray<SDLMetadataType> *)mainField1 {
+ [store sdl_setObject:mainField1 forName:SDLNameMainField1];
+}
+
+- (nullable NSArray<SDLMetadataType> *)mainField1 {
+ return [store sdl_objectForName:SDLNameMainField1];
+}
+
+- (void)setMainField2:(nullable NSArray<SDLMetadataType> *)mainField2 {
+ [store sdl_setObject:mainField2 forName:SDLNameMainField2];
+}
+
+- (nullable NSArray<SDLMetadataType> *)mainField2 {
+ return [store sdl_objectForName:SDLNameMainField2];
+}
+
+- (void)setMainField3:(nullable NSArray<SDLMetadataType> *)mainField3 {
+ [store sdl_setObject:mainField3 forName:SDLNameMainField3];
+}
+
+- (nullable NSArray<SDLMetadataType> *)mainField3 {
+ return [store sdl_objectForName:SDLNameMainField3];
+}
+
+- (void)setMainField4:(nullable NSArray<SDLMetadataType> *)mainField4 {
+ [store sdl_setObject:mainField4 forName:SDLNameMainField4];
+}
+
+- (nullable NSArray<SDLMetadataType> *)mainField4 {
+ return [store sdl_objectForName:SDLNameMainField4];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMetadataType.h b/SmartDeviceLink/SDLMetadataType.h
new file mode 100644
index 000000000..cc6518b1c
--- /dev/null
+++ b/SmartDeviceLink/SDLMetadataType.h
@@ -0,0 +1,80 @@
+//
+// SDLMetadataType.h
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 8/2/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Text Field Types
+ */
+typedef SDLEnum SDLMetadataType SDL_SWIFT_ENUM;
+
+/**
+ * @abstract SDLMetadataType: *mediaTitle*
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaTitle;
+
+/**
+ * @abstract SDLMetadataType: *mediaArtist*
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaArtist;
+
+/**
+ * @abstract SDLMetadataType: *mediaAlbum*
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaAlbum;
+
+/**
+ * @abstract SDLMetadataType: *mediaYear*
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaYear;
+
+/**
+ * @abstract SDLMetadataType: *mediaGenre*
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaGenre;
+
+/**
+ * @abstract SDLMetadataType: *mediaStation*
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaStation;
+
+/**
+ * @abstract SDLMetadataType: *rating*
+ */
+extern SDLMetadataType const SDLMetadataTypeRating;
+
+/**
+ * @abstract SDLMetadataType: *currentTemperature*
+ */
+extern SDLMetadataType const SDLMetadataTypeCurrentTemperature;
+
+/**
+ * @abstract SDLMetadataType: *maximumTemperature*
+ */
+extern SDLMetadataType const SDLMetadataTypeMaximumTemperature;
+
+/**
+ * @abstract SDLMetadataType: *minimumTemperature*
+ */
+extern SDLMetadataType const SDLMetadataTypeMinimumTemperature;
+
+/**
+ * @abstract SDLMetadataType: *weatherTerm*
+ */
+extern SDLMetadataType const SDLMetadataTypeWeatherTerm;
+
+/**
+ * @abstract SDLMetadataType: *humidity*
+ */
+extern SDLMetadataType const SDLMetadataTypeHumidity;
+
+/**
+ The data in this field is not of a common type or should not be processed. Any time a field does not have a type parameter it is considered as the none type.
+ */
+extern SDLMetadataType const SDLMetadataTypeNone;
+
diff --git a/SmartDeviceLink/SDLMetadataType.m b/SmartDeviceLink/SDLMetadataType.m
new file mode 100644
index 000000000..ad032569b
--- /dev/null
+++ b/SmartDeviceLink/SDLMetadataType.m
@@ -0,0 +1,23 @@
+//
+// SDLTextFieldType.m
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 8/2/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLMetadataType.h"
+
+SDLMetadataType const SDLMetadataTypeMediaTitle = @"mediaTitle";
+SDLMetadataType const SDLMetadataTypeMediaArtist = @"mediaArtist";
+SDLMetadataType const SDLMetadataTypeMediaAlbum = @"mediaAlbum";
+SDLMetadataType const SDLMetadataTypeMediaYear = @"mediaYear";
+SDLMetadataType const SDLMetadataTypeMediaGenre = @"mediaGenre";
+SDLMetadataType const SDLMetadataTypeMediaStation = @"mediaStation";
+SDLMetadataType const SDLMetadataTypeRating = @"rating";
+SDLMetadataType const SDLMetadataTypeCurrentTemperature = @"currentTemperature";
+SDLMetadataType const SDLMetadataTypeMaximumTemperature = @"maximumTemperature";
+SDLMetadataType const SDLMetadataTypeMinimumTemperature = @"minimumTemperature";
+SDLMetadataType const SDLMetadataTypeWeatherTerm = @"weatherTerm";
+SDLMetadataType const SDLMetadataTypeHumidity = @"humidity";
+SDLMetadataType const SDLMetadataTypeNone = @"none";
diff --git a/SmartDeviceLink/SDLNames.h b/SmartDeviceLink/SDLNames.h
index c1f69f9ce..5bdcc52e5 100644
--- a/SmartDeviceLink/SDLNames.h
+++ b/SmartDeviceLink/SDLNames.h
@@ -202,6 +202,10 @@ extern SDLName const SDLNameMainField1;
extern SDLName const SDLNameMainField2;
extern SDLName const SDLNameMainField3;
extern SDLName const SDLNameMainField4;
+extern SDLName const SDLNameMainField1Type;
+extern SDLName const SDLNameMainField2Type;
+extern SDLName const SDLNameMainField3Type;
+extern SDLName const SDLNameMainField4Type;
extern SDLName const SDLNameMajorVersion;
extern SDLName const SDLNameMake;
extern SDLName const SDLNameManeuverComplete;
@@ -221,6 +225,7 @@ extern SDLName const SDLNameMenuTitle;
extern SDLName const SDLNameMessageData;
extern SDLName const SDLNameMessageDataResult;
extern SDLName const SDLNameMessageLength;
+extern SDLName const SDLNameMetadataTags;
extern SDLName const SDLNameMiddleRow1BeltDeployed;
extern SDLName const SDLNameMiddleRow1BuckleBelted;
extern SDLName const SDLNameMiddleRow2BuckleBelted;
diff --git a/SmartDeviceLink/SDLNames.m b/SmartDeviceLink/SDLNames.m
index 1962fd4d6..995cc20bf 100644
--- a/SmartDeviceLink/SDLNames.m
+++ b/SmartDeviceLink/SDLNames.m
@@ -219,6 +219,7 @@ SDLName const SDLNameMenuTitle = @"menuTitle";
SDLName const SDLNameMessageData = @"messageData";
SDLName const SDLNameMessageDataResult = @"messageDataResult";
SDLName const SDLNameMessageLength = @"messageLength";
+SDLName const SDLNameMetadataTags = @"metadataTags";
SDLName const SDLNameMiddleRow1BeltDeployed = @"middleRow1BeltDeployed";
SDLName const SDLNameMiddleRow1BuckleBelted = @"middleRow1BuckleBelted";
SDLName const SDLNameMiddleRow2BuckleBelted = @"middleRow2BuckleBelted";
diff --git a/SmartDeviceLink/SDLShow.h b/SmartDeviceLink/SDLShow.h
index d18c52647..5c44548ae 100644
--- a/SmartDeviceLink/SDLShow.h
+++ b/SmartDeviceLink/SDLShow.h
@@ -4,9 +4,12 @@
#import "SDLRPCRequest.h"
#import "SDLTextAlignment.h"
+#import "SDLMetadataType.h"
@class SDLImage;
@class SDLSoftButton;
+@class SDLMetadataTags;
+
/**
* Updates the application's display text area, regardless of whether or not
@@ -37,11 +40,17 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment;
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type alignment:(nullable SDLTextAlignment)alignment;
+
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment;
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type mainField3:(nullable NSString *)mainField3 mainField3Type:(nullable SDLMetadataType)mainField3Type mainField4:(nullable NSString *)mainField4 mainField4Type:(nullable SDLMetadataType)mainField4Type alignment:(nullable SDLTextAlignment)alignment;
+
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack;
-- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets;
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets __deprecated_msg(("Use initWithMainField1:(NSString *)mainField1 (NSString *)mainField2 (NSString *)mainField3 (NSString *)mainField4 (SDLTextAlignment *)alignment (NSString *)statusBar (NSString *)mediaClock (NSString *)mediaTrack (SDLImage *)graphic (NSArray<SDLSoftButton *> *)softButtons (NSArray<NSString *> *)customPresets (SDLMetadataStruct *)metadata instead"));
+
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets textFieldMetadata:(nullable SDLMetadataTags *)metadata;
/**
* @abstract The text displayed in a single-line display, or in the upper display
@@ -231,6 +240,19 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) NSArray<NSString *> *customPresets;
+/**
+ * @abstract Text Field Metadata
+ *
+ * @discussion A Vector value representing the Custom Presets defined by the
+ * App
+ * <p>
+ * App defined metadata information. See MetadataStruct. Uses mainField1, mainField2, mainField3, mainField4.
+ * If omitted on supported displays, the currently set metadata tags will not change.
+ * If any text field contains no tags or the none tag, the metadata tag for that textfield should be removed.
+ * @since SmartDeviceLink 2.0
+ */
+@property (strong, nonatomic, nullable) SDLMetadataTags *metadataTags;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLShow.m b/SmartDeviceLink/SDLShow.m
index a01c1f316..80f4f9d18 100644
--- a/SmartDeviceLink/SDLShow.m
+++ b/SmartDeviceLink/SDLShow.m
@@ -6,6 +6,8 @@
#import "NSMutableDictionary+Store.h"
#import "SDLImage.h"
+#import "SDLMetadataTags.h"
+#import "SDLMetadataType.h"
#import "SDLNames.h"
#import "SDLSoftButton.h"
@@ -23,12 +25,52 @@ NS_ASSUME_NONNULL_BEGIN
return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment];
}
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type alignment:(nullable SDLTextAlignment)alignment {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ NSArray<SDLMetadataType> *field1Array = @[mainField1Type];
+ NSArray<SDLMetadataType> *field2Array = @[mainField2Type];
+ SDLMetadataTags* metadataTags = [[SDLMetadataTags alloc] initWithTextFieldTypes:field1Array mainField2:field2Array];
+
+ self.mainField1 = mainField1;
+ self.mainField2 = mainField2;
+ self.alignment = alignment;
+ self.metadataTags = metadataTags;
+
+ return self;
+}
+
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment {
- return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:mainField3 mainField4:mainField4 alignment:alignment statusBar:nil mediaClock:nil mediaTrack:nil graphic:nil softButtons:nil customPresets:nil];
+ return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:mainField3 mainField4:mainField4 alignment:alignment statusBar:nil mediaClock:nil mediaTrack:nil graphic:nil softButtons:nil customPresets:nil textFieldMetadata:nil];
+}
+
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type mainField3:(nullable NSString *)mainField3 mainField3Type:(nullable SDLMetadataType)mainField3Type mainField4:(nullable NSString *)mainField4 mainField4Type:(nullable SDLMetadataType)mainField4Type alignment:(nullable SDLTextAlignment)alignment{
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ NSArray<SDLMetadataType> *field1Array = @[mainField1Type];
+ NSArray<SDLMetadataType> *field2Array = @[mainField2Type];
+ NSArray<SDLMetadataType> *field3Array = @[mainField3Type];
+ NSArray<SDLMetadataType> *field4Array = @[mainField4Type];
+ SDLMetadataTags* metadataTags = [[SDLMetadataTags alloc] initWithTextFieldTypes:field1Array mainField2:field2Array mainField3:field3Array mainField4:field4Array];
+
+ self.mainField1 = mainField1;
+ self.mainField2 = mainField2;
+ self.mainField3 = mainField3;
+ self.mainField4 = mainField4;
+ self.alignment = alignment;
+ self.metadataTags = metadataTags;
+
+ return self;
}
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack {
- return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment statusBar:statusBar mediaClock:mediaClock mediaTrack:mediaTrack graphic:nil softButtons:nil customPresets:nil];
+ return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment statusBar:statusBar mediaClock:mediaClock mediaTrack:mediaTrack graphic:nil softButtons:nil customPresets:nil textFieldMetadata:nil];
}
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets {
@@ -52,6 +94,29 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets textFieldMetadata:(nullable SDLMetadataTags *)metadata {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.mainField1 = mainField1;
+ self.mainField2 = mainField2;
+ self.mainField3 = mainField3;
+ self.mainField4 = mainField4;
+ self.statusBar = statusBar;
+ self.mediaClock = mediaClock;
+ self.mediaTrack = mediaTrack;
+ self.alignment = alignment;
+ self.graphic = graphic;
+ self.softButtons = [softButtons mutableCopy];
+ self.customPresets = [customPresets mutableCopy];
+ self.metadataTags = metadata;
+
+ return self;
+
+}
+
- (void)setMainField1:(nullable NSString *)mainField1 {
[parameters sdl_setObject:mainField1 forName:SDLNameMainField1];
}
@@ -148,6 +213,14 @@ NS_ASSUME_NONNULL_BEGIN
return [parameters sdl_objectForName:SDLNameCustomPresets];
}
+- (void)setMetadataTags:(nullable SDLMetadataTags *)metadataTags {
+ [parameters sdl_setObject:metadataTags forName:SDLNameMetadataTags];
+}
+
+- (nullable SDLMetadataTags *)metadataTags {
+ return [parameters sdl_objectForName:SDLNameMetadataTags ofClass:SDLMetadataTags.class];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h
index a67ac9ccd..397bd30c2 100644
--- a/SmartDeviceLink/SmartDeviceLink.h
+++ b/SmartDeviceLink/SmartDeviceLink.h
@@ -186,6 +186,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLLocationCoordinate.h"
#import "SDLLocationDetails.h"
#import "SDLMenuParams.h"
+#import "SDLMetadataTags.h"
#import "SDLMyKey.h"
#import "SDLNavigationCapability.h"
#import "SDLOasisAddress.h"
@@ -250,6 +251,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLLockScreenStatus.h"
#import "SDLMaintenanceModeStatus.h"
#import "SDLMediaClockFormat.h"
+#import "SDLMetadataType.h"
#import "SDLPRNDL.h"
#import "SDLPermissionStatus.h"
#import "SDLPowerModeQualificationStatus.h"
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m
index c83cd1242..f2aeb1303 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m
@@ -22,7 +22,7 @@ describe(@"HeaderForVersion Tests", ^ {
});
it(@"Should return latest version for unknown version", ^ {
- expect([SDLProtocolHeader headerForVersion:5]).to(raiseException().named(NSInvalidArgumentException));
+ expect([SDLProtocolHeader headerForVersion:5]).to(beAKindOf(SDLV2ProtocolHeader.class));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLMetadataTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLMetadataTypeSpec.m
new file mode 100644
index 000000000..1ede591ee
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLMetadataTypeSpec.m
@@ -0,0 +1,36 @@
+//
+// SDLMetadataTypeSpec.m
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 8/2/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLMetadataType.h"
+
+QuickSpecBegin(SDLMetadataTypeSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect(SDLMetadataTypeMediaTitle).to(equal(@"mediaTitle"));
+ expect(SDLMetadataTypeMediaArtist).to(equal(@"mediaArtist"));
+ expect(SDLMetadataTypeMediaAlbum).to(equal(@"mediaAlbum"));
+ expect(SDLMetadataTypeMediaYear).to(equal(@"mediaYear"));
+ expect(SDLMetadataTypeMediaGenre).to(equal(@"mediaGenre"));
+ expect(SDLMetadataTypeMediaStation).to(equal(@"mediaStation"));
+ expect(SDLMetadataTypeRating).to(equal(@"rating"));
+ expect(SDLMetadataTypeCurrentTemperature).to(equal(@"currentTemperature"));
+ expect(SDLMetadataTypeMaximumTemperature).to(equal(@"maximumTemperature"));
+ expect(SDLMetadataTypeMinimumTemperature).to(equal(@"minimumTemperature"));
+ expect(SDLMetadataTypeWeatherTerm).to(equal(@"weatherTerm"));
+ expect(SDLMetadataTypeHumidity).to(equal(@"humidity"));
+ expect(SDLMetadataTypeNone).to(equal(@"none"));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m
index 5c20ecf78..80733245e 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m
@@ -9,22 +9,26 @@
#import <Nimble/Nimble.h>
#import "SDLImage.h"
+#import "SDLMetadataTags.h"
+#import "SDLMetadataType.h"
#import "SDLNames.h"
#import "SDLShow.h"
#import "SDLSoftButton.h"
#import "SDLTextAlignment.h"
-
QuickSpecBegin(SDLShowSpec)
SDLImage* image1 = [[SDLImage alloc] init];
SDLImage* image2 = [[SDLImage alloc] init];
SDLSoftButton* button = [[SDLSoftButton alloc] init];
+NSArray<SDLMetadataType> *formatArray = @[SDLMetadataTypeMediaArtist,SDLMetadataTypeMediaTitle];
+SDLMetadataTags* testMetadata = [[SDLMetadataTags alloc] initWithTextFieldTypes:formatArray mainField2:formatArray mainField3:formatArray mainField4:formatArray];
+
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
SDLShow* testRequest = [[SDLShow alloc] init];
-
+
testRequest.mainField1 = @"field1";
testRequest.mainField2 = @"field2";
testRequest.mainField3 = @"field3";
@@ -37,7 +41,8 @@ describe(@"Getter/Setter Tests", ^ {
testRequest.secondaryGraphic = image2;
testRequest.softButtons = [@[button] mutableCopy];
testRequest.customPresets = [@[@"preset1", @"preset2"] mutableCopy];
-
+ testRequest.metadataTags = testMetadata;
+
expect(testRequest.mainField1).to(equal(@"field1"));
expect(testRequest.mainField2).to(equal(@"field2"));
expect(testRequest.mainField3).to(equal(@"field3"));
@@ -50,8 +55,10 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.secondaryGraphic).to(equal(image2));
expect(testRequest.softButtons).to(equal([@[button] mutableCopy]));
expect(testRequest.customPresets).to(equal([@[@"preset1", @"preset2"] mutableCopy]));
+ expect(testRequest.metadataTags).to(equal(testMetadata));
+
});
-
+
it(@"Should get correctly when initialized", ^ {
NSMutableDictionary* dict = [@{SDLNameRequest:
@{SDLNameParameters:
@@ -66,10 +73,11 @@ describe(@"Getter/Setter Tests", ^ {
SDLNameGraphic:image1,
SDLNameSecondaryGraphic:image2,
SDLNameSoftButtons:[@[button] mutableCopy],
- SDLNameCustomPresets:[@[@"preset1", @"preset2"] mutableCopy]},
+ SDLNameCustomPresets:[@[@"preset1", @"preset2"] mutableCopy],
+ SDLNameMetadataTags:testMetadata},
SDLNameOperationName:SDLNameShow}} mutableCopy];
SDLShow* testRequest = [[SDLShow alloc] initWithDictionary:dict];
-
+
expect(testRequest.mainField1).to(equal(@"field1"));
expect(testRequest.mainField2).to(equal(@"field2"));
expect(testRequest.mainField3).to(equal(@"field3"));
@@ -82,11 +90,12 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.secondaryGraphic).to(equal(image2));
expect(testRequest.softButtons).to(equal([@[button] mutableCopy]));
expect(testRequest.customPresets).to(equal([@[@"preset1", @"preset2"] mutableCopy]));
+ expect(testRequest.metadataTags).to(equal(testMetadata));
});
-
+
it(@"Should return nil if not set", ^ {
SDLShow* testRequest = [[SDLShow alloc] init];
-
+
expect(testRequest.mainField1).to(beNil());
expect(testRequest.mainField2).to(beNil());
expect(testRequest.mainField3).to(beNil());
@@ -99,6 +108,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.secondaryGraphic).to(beNil());
expect(testRequest.softButtons).to(beNil());
expect(testRequest.customPresets).to(beNil());
+ expect(testRequest.metadataTags).to(beNil());
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m
index 0d3b57ece..72cc3df64 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m
@@ -43,7 +43,8 @@ describe(@"SDLHMICapabilities struct", ^{
beforeEach(^{
NSDictionary<NSString *, NSNumber *> *structInitDict = @{
SDLNameNavigation: someNavigationState,
- SDLNamePhoneCall: somePhoneCallState
+ SDLNamePhoneCall: somePhoneCallState,
+ SDLNameVideoStreaming: someVideoStreamState
};
testStruct = [[SDLHMICapabilities alloc] initWithDictionary:[structInitDict mutableCopy]];
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataTagsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataTagsSpec.m
new file mode 100644
index 000000000..db7d2d855
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataTagsSpec.m
@@ -0,0 +1,41 @@
+//
+// SDLMetadataTagsSpec.m
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 8/3/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLMetadataTags.h"
+#import "SDLNames.h"
+#import "SDLMetadataType.h"
+
+QuickSpecBegin(SDLMetadataTagsSpec)
+
+describe(@"Initialization tests", ^{
+ it(@"Should get correctly when initialized with Arrays", ^ {
+ NSArray<SDLMetadataType> *formatArray = @[SDLMetadataTypeMediaArtist, SDLMetadataTypeMediaTitle];
+ SDLMetadataTags* testStruct = [[SDLMetadataTags alloc] initWithTextFieldTypes:formatArray mainField2:formatArray mainField3:formatArray mainField4:formatArray];
+
+ expect(testStruct.mainField1).to(equal(formatArray));
+ expect(testStruct.mainField2).to(equal(formatArray));
+ expect(testStruct.mainField3).to(equal(formatArray));
+ expect(testStruct.mainField4).to(equal(formatArray));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLMetadataTags *testStruct = [[SDLMetadataTags alloc] init];
+
+ expect(testStruct.mainField1).to(beNil());
+ expect(testStruct.mainField2).to(beNil());
+ expect(testStruct.mainField3).to(beNil());
+ expect(testStruct.mainField4).to(beNil());
+ });
+});
+
+QuickSpecEnd