diff options
author | Joel Fischer <joeljfischer@gmail.com> | 2017-08-18 09:15:56 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-18 09:15:56 -0400 |
commit | b5312dc575a843d4b9a2a65777e42676c2ce1b0a (patch) | |
tree | 825b39babe9383838e0d36615c2e75fb796f747f | |
parent | c8603350e4e93b19e9b48bede428791e9d863544 (diff) | |
parent | 18b45a2ac57e1879ab707cb87a587c519600f596 (diff) | |
download | sdl_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.podspec | 2 | ||||
-rw-r--r-- | SmartDeviceLink-iOS.xcodeproj/project.pbxproj | 81 | ||||
-rw-r--r-- | SmartDeviceLink.podspec | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLMetadataTags.h | 61 | ||||
-rw-r--r-- | SmartDeviceLink/SDLMetadataTags.m | 78 | ||||
-rw-r--r-- | SmartDeviceLink/SDLMetadataType.h | 80 | ||||
-rw-r--r-- | SmartDeviceLink/SDLMetadataType.m | 23 | ||||
-rw-r--r-- | SmartDeviceLink/SDLNames.h | 5 | ||||
-rw-r--r-- | SmartDeviceLink/SDLNames.m | 1 | ||||
-rw-r--r-- | SmartDeviceLink/SDLShow.h | 24 | ||||
-rw-r--r-- | SmartDeviceLink/SDLShow.m | 77 | ||||
-rw-r--r-- | SmartDeviceLink/SmartDeviceLink.h | 2 | ||||
-rw-r--r-- | SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m | 2 | ||||
-rw-r--r-- | SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLMetadataTypeSpec.m | 36 | ||||
-rw-r--r-- | SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m | 26 | ||||
-rw-r--r-- | SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m | 3 | ||||
-rw-r--r-- | SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataTagsSpec.m | 41 |
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 |